PHP では、2 つのアンダースコア __ で始まるメソッドをマジック メソッドと呼びます。これらのメソッドは PHP で重要な役割を果たします。
関連: 「PHP の __construct()、クラス コンストラクターの詳しい説明」 「PHP の __destruct()、クラス デストラクター 》《 PHPの__call()メソッドの詳しい説明》
静的モードでアクセスできないメソッドを呼び出すときに呼び出されるPHPの__callStatic()
こちらメソッドは、__callStatic() が静的メソッド用に用意されていないことを除いて、上記の __call() 関数と同じです。
次のコードを見てください:
<?php class Person { function say() { echo "Hello, world!<br>"; } /** * 声明此方法用来处理调用对象中不存在的方法 */ public static function __callStatic($funName, $arguments) { echo "你所调用的静态方法:" . $funName . "(参数:" ; // 输出调用不存在的方法名 print_r($arguments); // 输出调用不存在的方法时的参数列表 echo ")不存在!<br>\n"; // 结束换行 } } $Person = new Person(); $Person::run("teacher"); // 调用对象中不存在的方法,则自动调用了对象中的__call()方法 $Person::eat("小明", "苹果"); $Person->say();
実行結果は次のとおりです:
你所调用的静态方法:run(参数:Array ( [0] => teacher ) )不存在! 你所调用的静态方法:eat(参数:Array ( [0] => 小明 [1] => 苹果 ) )不存在! Hello, world!