PHPの_set()と_get()について

WBOY
リリース: 2016-06-13 13:07:45
オリジナル
864 人が閲覧しました

PHP の _set() と _get() について
この 2 つの関数はプライベート変数に使用されているとネットで言われていますが、これはクラスのカプセル化に違反していませんか?
$this->$varName を使用する場合があり、$this->varName に「$」が必要な場合があるのはなぜですか? ? ?
時間があれば、コードのどこが間違っているかを確認してください。
class MyClass
{
private $Age;
private $Grade <🎜; > public function __construct($name)
{
$this->MyName = $name;
$this->Age = 5;
}
public function _get( $property_name )
{
echo 'access_get()
';
if (isset($property_name))
{
return $this->$ property_name;
}
}
public function _set($property_name, $value)
{
echo 'Access_set()
';
$this ->$property_name = $value;

}
}
$obj = new MyClass('Tom');
$obj->Age = 23;//こう言ってください エッジエラー $obj- >$Age もエラーです
?>


-----解決策----- ---- エラーは $ にはありません。
まず、定義するのはクラスのプライベート メンバー変数です。プライベート変数はクラス内でのみ呼び出すことができます。
$obj->Age = 23; 権限が不十分で外部呼び出しが禁止されているため、明らかに呼び出すことができません。
$obj->$Age = 23; も間違っています。まず、php は $Age を自動的に識別し、それが空であることを検出します。これは、$obj->=23;変更しました コードを見れば分かると思いますが、現状ではクラスの変数呼び出しレベルがまだ理解できていません。


PHP コード
MyName = $name; $this->年齢 = 5; } パブリック関数 _get($property_name) { echo 'Access_get()
'; if (isset($property_name)) { $this->$property_name を返します; } } パブリック関数 _set($property_name, $value) { echo 'Access_set()
'; $this->$property_name = $value; } } $obj = 新しい MyClass('トム'); //$obj->年齢 = 23; $obj->_set('年齢', 'hello world'); echo $obj->_get('年齢'); $Age = 'テスト'; $obj->$Age = 'こんにちは、ディファ'; echo $obj->test;

ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート