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

时间:2011-04-06 03:29:00

标签: php

我有一个表单将变量$ 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)调用上出错。我希望避免使用全局变量。任何想法如何做到这一点?

提前致谢

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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' */);