ネットで見つけました。
引用元: http://bbs.17php.com/show_title.php?id=1443
PHP5 オブジェクトには、オブジェクト内の他のメソッドを監視するために使用される新しい特別なメソッド __call() があります。オブジェクトに存在しないメソッドを呼び出そうとすると、__call メソッドが自動的に呼び出されます。
例 7: __call
class foo {
function __call($name,$arguments) {
print("電話しましたか? 私は $name!"); $ x = new foo();
$x->fancy_stuff();
この特別なメソッドは、「オーバーロード」アクションを実装するために使用できます。パラメータを作成し、プライベート メソッドを呼び出して渡します。
例 8: __call を使用して「オーバーロード」アクションを実装する
class Magic {
function __call($name,$arguments) {
if($name=='foo') {
if(is_int) ( $arguments[0])) $this->foo_for_int($arguments[0]);
if(is_string($arguments[0])) $this->foo_for_string($arguments[0]); }
} プライベート関数 foo_for_int($x) {
print("ああ int!");
} プライベート関数 foo_for_string($x) {
print("ああ 文字列!"); $x = new Magic ();
$x->foo("3");
から引用:
_call と ___callStatic は PHP クラスの 2 つの関数ですfunction,
__call() オブジェクトのコンテキストでは、呼び出されたメソッドにアクセスできない場合、トリガーされます
__callStatic() 静的コンテキストでは、呼び出されたメソッドがアクセスできない場合、トリガーされます
例:
抽象クラス Obj
{
protected $property = array();public function __call($name,$value)