1

Modelを拡張するクラスのプロパティを割り当てることができないため、抽象クラス(Model)のマジックメソッド__set()に問題があります。__setメソッドで変数の名前を出力しようとしないでください。

abstract class Model
{
public $data;
public function __set($name, $value)
{
echo $name; $this->$name = $value;
}
}

class User extends Model
{
public $id;
}

$u = new User();
$u->data = "hello"; //print "data";
$u->id = 123; //print NOTHING.. WHY¿?
4

1 に答える 1

2

__set未定義のプロパティに値を割り当てようとすると呼び出されます。あなたの場合__set、両方のプロパティが定義されて存在するため、呼び出されることはありません。

ここを参照してください。出力は両方のプロパティに対して何もありません。プロパティ宣言部分の1つを削除してみて、出力の違いを確認してください。

于 2012-09-27T10:32:41.720 に答える