ホームページ >バックエンド開発 >PHPチュートリアル >PHPでのメンバーの権限がわかりにくい

PHPでのメンバーの権限がわかりにくい

WBOY
WBOYオリジナル
2016-06-13 11:56:351103ブラウズ

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。