「__set()」は、未定義の属性に値を割り当てるときに自動的に呼び出されます。構文は「public function __set(key,value){}」です。未定義の属性が割り当てられたときに「__get()」が呼び出されます。構文「public function __get(name){}」が呼び出されます。
このチュートリアルの動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター
PHP のマジック メソッドは通常、次で始まります。 __(2 つのアンダースコアで始まります) 明示的に呼び出す必要はありませんが、特定の条件下で自動的に呼び出されます。
Function | |
---|---|
は未定義を与えています 自動的に呼び出されますプロパティを割り当てるとき | |
未定義のプロパティを呼び出すときに自動的に呼び出されます |
現在の環境で未定義または非表示のクラス属性に値を代入する場合、__set() メソッドが自動的に呼び出されます。このメソッドを定義する構文形式は以下のとおりです。
public function __set($key, $value){ ... ... ; }
このうち、パラメータ $key は操作対象の変数名、$value は変数 $key の値です。
[例] 以下では、簡単な例を使用して、__set() メソッドの使用法を示します。
<?php class Website{ public $name; private $url; public function __set($key, $value){ echo '为“'.$key.'”赋值“'.$value.'”失败!<br>'; } } $object = new Website(); $object -> name = 'php中文网'; $object -> url = 'https://www.php.cn/'; $object -> title = 'PHP教程'; ?>
実行結果は次のとおりです:
为“url”赋值“https://www.php.cn/”失败! 为“title”赋值“PHP教程”失败!
__set() メソッドの特性を利用して、__set() メソッドを使用して、private キーワードで変更された属性を割り当てたり変更したりできます。クラスで。以下に示すように:
<?php class Website{ public $name; private $url = ''; public function __set($key, $value){ if(isset($this->$key)){ $this -> $key = $value; }else{ echo '为“'.$key.'”赋值“'.$value.'”失败!<br>'; } } public function getUrl(){ echo $this -> url; } } $object = new Website(); $object -> name = 'php中文网'; $object -> url = 'https://www.php.cn/'; $object -> title = 'PHP教程'; $object -> getUrl(); ?>
実行結果は次のとおりです:
为“title”赋值“PHP教程”失败! https://www.php.cn/2. __get() メソッド
が定義されていないか、定義されていません。現在の環境を呼び出すか取得するときに定義されます。クラス属性が非表示の場合、__get() メソッドが自動的に呼び出されます。このメソッドを定義するための構文形式は次のとおりです:
public function __get($name){ ... ... ; }
パラメータ $name は、操作する変数の名前。
[例] 以下では、簡単な例を使用して __get() メソッドの使用法を示します。
<?php class Website{ public $url = 'https://www.php.cn/'; private $name = 'php中文网'; public function __get($name){ echo '获取:“'.$name.'”失败!'; } } $object = new Website(); echo $object -> url.'<br>'; echo $object -> name.'<br>'; echo $object -> title.'<br>'; ?>
実行結果は次のとおりです:
https://www.php.cn/ 获取:“name”失败! 获取:“title”失败!
推奨される学習: 「
PHP ビデオ チュートリアル以上がPHP マジックメソッド __get() と __set() の使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。