$stuff のポイントがわかりません
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!
コンストラクターに何かを渡したいだけなら、なぜインスタンス変数を定義するのでしょうか? 以下で十分ではないでしょうか?後で参照する必要がない限り、その場合はTim Cooperの答え.
Class MyClass {
function __construct($stuff = false){
if ($stuff){
echo 'You got some stuff!';
} else {
echo 'You ain\'t got stuff!';
}
}
}