我有一个表单传递变量$oid到php脚本。提取表单变量,并将其传递给一个名为get_name()的函数。类中的header()函数在父类中实现了名为header()的接口。
require 'pdfclass.php';
$oid = $_REQUEST['oid'];
class p extends PDF {
function Header() {
$this->setF('Arial',10);
$this->Cell(50,10,get_name($oid),1,0,'c');
} //end Header()
} //end class
function get_name($oid) {... }
$pdf = new P();
$pdf->setF('Times',12);
$pdf->AddPage();
$pdf->Output();
当我运行这个时,我在类扩展内的get_name($oid)调用上得到错误。我希望避免使用全局变量。有什么办法吗?
thanks in advance
显而易见的答案是将变量作为参数传递:
class p extends PDF {
function Header($oid) {
$this->setF('Arial',10);
$this->Cell(50,10,get_name($oid),1,0,'c');
}
}
$p = new p();
$p->Header($oid);
如果由于某些原因(比如由于函数被其他函数调用)不能这样做,则可以将其传递给构造函数:
class p extends PDF {
public $oid = null;
public function __construct($oid /*, $original, $arguments */) {
$this->oid = $oid;
parent::__construct(/* $original, $arguments */);
}
public function Header() {
$this->setF('Arial',10);
$this->Cell(50,10,get_name($this->oid),1,0,'c');
}
}
$p = new p($oid /*, 'foo', 'bar' */);
有多种方法可以解决这个问题,我将深入研究如何以及为什么一种方法更好。最简单的修复方法是:
function Header($oid) {
$this->setF('Arial',10);
$this->Cell(50,10,get_name($oid),1,0,'c');
} //end Header()