2011-04-06 160 views
0

我有一个表单将一个变量$ oid传递给一个php脚本。表单变量被拉,需要传入一个名为get_name()的函数。类中的header()函数在父类中实现一个名为header()的接口。PHP:我如何访问类之外的请求变量?

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 $)类扩展中调用一个错误。我希望避免使用全局变量。任何想法如何做到这一点?

在此先感谢

+1

此代码如何调用?为什么不把'$ oid'作为参数传递给'p :: Header()'? – deceze 2011-04-06 03:31:16

+0

你得到的错误是什么? – EmCo 2011-04-06 03:35:36

回答

0

答案显然是将变量作为参数传递:

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' */); 
+1

是不是'__construct'而不是'__constructor'? – icktoofay 2011-04-06 03:50:54

+0

@ick Ooops,你去吧,自动完成让杰克变成一个愚蠢的程序员。 ; o) – deceze 2011-04-06 04:04:05

+0

我结束了使用构造函数,它的工作。谢谢! – phill 2011-04-10 21:13:56

0

各种方法来解决这个问题,我会钻研一个如何以及为什么是更好的。最简单的解决方法是:

function Header($oid) { 
     $this->setF('Arial',10); 
     $this->Cell(50,10,get_name($oid),1,0,'c'); 
    } //end Header()