ホームページ >バックエンド開発 >PHPチュートリアル >PHPでのメンバーの権限がわかりにくい
php
におけるメンバー権限の混乱の問題: 次のコードがあります:
class Far
{
protected $arr;
protected function init( ) {
foreach ($this->arr as $k => $val) {
$this->$k = $val;
}
}
パブリック関数 __construct() {
$this->init();
}
パブリック関数 __set($name, $val) {
$this->$name = $ val;
}
}
class Son extends Far
{
protected $a;
public function __construct() {
$this -> ;arr = array(
'a' => '1',
); $obj = new Son();
print_r($obj);
Q: なぜ$obj の出力結果、a は 1 ではなく null.
Son Object
(
[a:protected] => 1
[arr:protected] => Array
(
[a] => 1
)
)
質問 2: 上記のコードのサブクラスのプライベート $a を protected $a に変更する場合、またはpublic $a の場合、出力は次のようになります:
Son Object
(
[a:protected] => 1
[arr:protected] => Array
(
[ a] => 1
)
[bb] => 1
)
なぜですか?
------解決策----------------------
あなたの __set メソッドは Far で定義されているため、実行できませんSon のプライベート プロパティにアクセスします
このように書くだけです
Son Object
( [a:Son:private] => 1 [arr:protected] => ; Array