クラス ドーム{
private $age;
public function __construct($age){
$this->age =$age;
}
public function __set ($name,$value){
if($name =='age')
{return false;}
return $this->$name= $value;
}
}
$obj =新しいドーム(24);
echo $obj->age=25;and
$ obj-> age = 26;
$ obj-> age = 26;;どちらの場合も、出力の結果はデフォルト値24でなければなりませんが、
echo $の結果ですobj->age=25 は 25 です。年齢は変更されました? $obj->age=26; echo $obj-> ;age; この文は問題ありません。意味は異なりますか?
コードでは、プライベート プロパティにアクセスできないというメッセージが表示されるため、2 番目のエコーを実行しないでください。
2 つの出力結果の違いは、記述方法にあります。 echo, echo a = 3 この書き方だと代入文が実行されますが、代入が成功したかどうかに関係なく、等号の右側の数字が画面に出力されます
1つ目のecho $obj-1。 >age=25; は set メソッドを実行し、 name が age と等しいことが取得され、 return false が実行されるため、属性 age の値は変更されません。 しかし、あなたの書き方では、画面上の等号の右側に 25 が出力されます
2 2 番目の方法は、代入ステートメントを実行して false を返す通常の書き方です。 、年齢の値を変更せずに、年齢属性の値が 24 のまま出力されます
echo $obj->age=25 このステートメントは間違っています。クラスの値を変更していません。値 25 を出力しただけです。
1. set メソッドを見てください。 else ステートメントが欠落しているようです
2. プライベート属性を読みたい場合は、別の get メソッドを記述する必要があります