在类构造函数外部分配变量以在类中使用?

时间:2011-08-15 16:13:32

标签: php class

我刚刚开始使用类构造函数。在下面的脚本中,我想从类外部传递$ arg2值。

如何定义变量$ someVariable = n,以便可以从包含下面文件的父文件的类构造函数外部设置它?

class myClassTest
{       
    public $var1;
    public $var2;
    public $var3;

    function __construct($arg1,$arg2=$someVariable){ //MAKE $arg2 dynamically set from outside the class
        $this->var1 = $arg1;
        $this->var2 = $arg2;
        $this->var3 = array();
    }

2 个答案:

答案 0 :(得分:1)

您无法使用某些“外部”变量设置参数$ arg2的默认值。 默认值get(逻辑)设置为函数的“定义时间”。因此,这些参数需要文字(常量)值。

因此,这些是很好的声明:

   function makecoffee($type = "cappuccino") { }
   function makecoffee($types = array("cappuccino"), $coffeeMaker = NULL) { } 

如果你想“注入”外部东西,你需要做这样的事情:

$someglobalVariable = 'whatever';

class myClassTest
{       
    public $var1;
    public $var2;
    public $var3;

    function __construct($arg1,$arg2=null){ //MAKE $numres dynamic from outside the class

        global $someglobalVariable;

        if ( ! isset( $arg2 ) ) {
           $this->var2 = $someglobalVariable;
        } else {
           $this->var2 = $arg2;
        }
        $this->var1 = $arg1;
        $this->var3 = array();
    }

} // end of class

请注意,在PHP中访问全局变量是错误样式(与任何其他面向对象语言一样)。

答案 1 :(得分:1)

只需像这样使用它,但不建议

$someGlobalVar = "test";
class myClassTest
{       
    public $var1;
    public $var2;
    public $var3;

    function __construct($arg1,$arg2=null){
        if ($arg2 === null){
            global $someGlobalVar;
            $arg2 = $someGlobalVar;
        }
        echo $arg2;
        $this->var1 = $arg1;
        $this->var2 = $arg2;
        $this->var3 = array();
    }
 }
 $class = new myClassTest('something'); //outputs test

working demo