PHP:如何访问类之外的请求变量?


PHP : how do i access a request variable outside of a class?

我有一个表单传递变量$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()