ホームページ >バックエンド開発 >PHPチュートリアル >プライベートフィールド private には外部からアクセスすることもできます

プライベートフィールド private には外部からアクセスすることもできます

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-23 13:31:211073ブラウズ

e8b18fa8da1691b835e97a286e2a32b5$valuee6e38b3c62e8df885fe2e3986461aa63"); nowamagic();
$ins->domain = "nowamagic.net";
echo $ins->domain

; set を使用して属性ドメインを設定し、値を nowamagic.net に割り当てます。
get を使用して属性 nowamagic.net にアクセスします

プライベート フィールド private に外部からアクセスできないように適切に設定するにはどうすればよいですか?




ディスカッション (解決策) に返信します

あなたのアクセスは、パブリック メソッド __set および __get を介して行われています
それらを削除して、プライベート ドメインにまだアクセスできるかどうかを確認できます

の __get メソッドを介してアクセスしています。

__get はパブリック メソッドなので、外部から呼び出すことができます。 クラス内のメソッドにはプライベート変数を呼び出す権限があるため、__get メソッドをプライベートに呼び出しても問題ありません。

アクセスしたくない場合は、__get メソッドと __set メソッドの実装をブロックできます。

または、__get、__set メソッドで制限します。


class nowamagic {private $domain;    function __get($key){    	if($key!='domain'){        	return "使用get访问属性".$this->$key;        }    }    function __set($key,$value){    	if($key!='domain'){        	$this->$key = $value;        	echo("使用set设置属性$key, 赋值为:<font color=red>$value</font>");    	}    }}$ins = new nowamagic();$ins->domain = "nowamagic.net";echo '<br />';echo $ins->domain;

クラス内のプライベート属性は、set や get を使用せずに実装できます。

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