我刚刚开始使用类构造函数。在下面的脚本中,我想从类外部传递$ 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();
}
答案 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