ホームページ  >  記事  >  バックエンド開発  >  php __call、__set、__get の使用法の概要

php __call、__set、__get の使用法の概要

WBOY
WBOYオリジナル
2016-07-25 08:59:471133ブラウズ
  1. class foo {
  2. function __call($name,$arguments) {
  3. print("電話しましたか? 私は $name!
    ");
  4. print_r($引数);
  5. print("

    ");
  6. }
  7. function doSecond($arguments)
  8. {
  9. print("そうです、$arguments!
    ");
  10. $test = new foo();
  11. $test->doFirst('この関数はありません');
  12. コードをコピーします。
__call は「オーバーロード」アクションを実装します この特別なメソッドを使用すると、「オーバーロード」アクションを実装できるため、パラメーターを確認し、プライベート メソッドを呼び出して渡すことができます。
例: __call を使用して「オーバーロード」アクションを実装する

class Magic {
function __call($name,$arguments) {
    if($name=='foo') {
  1. if(is_int($arguments[0])) $ this->foo_for_int($arguments[0]);
  2. if(is_string($arguments[0])) $this->foo_for_string($arguments[0]);
  3. }
  4. }
  5. プライベート関数 foo_for_int($ x) {
  6. print("ああ int!");
  7. }
  8. //by bbs.it-home.org
  9. private function foo_for_string($x) {
  10. print("oh a string!"); }
  11. }
  12. $test = new Magic();
  13. $test->foo("3");
  14. 2. __set と __get の使用法 これは、__set メソッドと __get メソッドを使用して、オブジェクトに存在しない変数やメソッドをキャプチャする優れた方法です。 例: __set と __get
class foo { function __set($name,$val) { print("こんにちは、$name
に $val を入れようとしました");

function __get($name) {

print("$name
");
}
}
  1. $test = new foo(); $test->__set('name',' justcoding');
  2. $test->__get('name');
  3. ?>
  4. コードをコピー
  5. PHP プログラミング、特に PHP オブジェクト指向プログラミングでは、__call、__set、_ _get を柔軟に適用します。思わぬサプライズが待っているかもしれないので、皆さんもしっかりと把握しておくことをおすすめします。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。