构造函数中的PHP访问属性
我在访问构造函数中的属性时遇到问题:构造函数中的PHP访问属性,php,oop,constructor,Php,Oop,Constructor,我在访问构造函数中的属性时遇到问题: Class MyClass{ public $stuff = false; public function __construct(){ if($this->stuff){ echo('It works!'); } } } 致电: $myclass = new MyClass; $myclass->stuff = true; 它仍然返回false(因此没有“It Works!”) 我知道构造函
Class MyClass{
public $stuff = false;
public function __construct(){
if($this->stuff){ echo('It works!'); }
}
}
致电:
$myclass = new MyClass;
$myclass->stuff = true;
它仍然返回false(因此没有“It Works!”)
我知道构造函数不会看到变量,但有没有一个好方法可以实现这一点?在设置属性之前调用构造函数。
if
将始终计算为false
如果要设置MyClass::stuff
,请通过构造函数参数进行设置,例如:
public function __construct($stuff = false){
if($this->stuff = $stuff){
echo('It works!');
}
}
我看不出美元有什么意义
public $stuff = false;
一个实例变量,设置为false并在构造函数中立即检查。除非实例化此变量,否则它不会更改。我认为你可能一直在寻找的是一个静态变量
Class MyClass{
public static $stuff = false;
function __construct(){ // you don't have to specify the constructor as public
if (self::$stuff){
echo 'You got some stuff!';
} else {
echo 'You ain\'t got stuff!';
}
}
}
$myclass = new MyClass(); // You ain't got stuff!
MyClass::$stuff = true;
$myclass = new MyClass(); // You got some stuff!
如果它是一个实例变量,那么您只需要在子类化时使用它
Class MyClass{
public $stuff = false;
function __construct(){
if ($this->stuff){
echo 'You got some stuff!';
} else {
echo 'You ain\'t got stuff!';
}
}
}
class MySubClass extends MyClass {
public $stuff = true;
}
$mysub = new MySubClass() // You got some stuff!
如果你只是想把东西传递给构造函数,为什么还要定义一个实例变量呢?
下面的内容难道还不够吗?除非你以后必须参考它,在这种情况下,蒂姆·库珀的答案
Class MyClass {
function __construct($stuff = false){
if ($stuff){
echo 'You got some stuff!';
} else {
echo 'You ain\'t got stuff!';
}
}
}
Class MyClass {
function __construct($stuff = false){
if ($stuff){
echo 'You got some stuff!';
} else {
echo 'You ain\'t got stuff!';
}
}
}