PHP中__call的用法实例

发布时间:2019-08-27编辑:脚本学堂
PHP中__call的用法实例,有需要的朋友可以参考下。public mixed __call ( string $name , array $arguments ) public static mixed __callStatic ( string $name , array $arguments )

PHP中__call的用法实例,有需要的朋友可以参考下。

public mixed __call ( string $name , array $arguments )
public static mixed __callStatic ( string $name , array $arguments )
当调用一个不可访问方法(如未定义,或者不可见)时,__call() 会被调用。

当在静态方法中调用一个不可访问方法(如未定义,或者不可见)时,__callStatic() 会被调用。
$name 参数是要调用的方法名称。$arguments 参数是一个数组,包含着要传递给方法$name 的参数。

演示代码:
 

复制代码 代码如下:

<?php
class PersonWriter {

    function writeName( Person $p ) {
        print $p->getName()."n";
    }

    function writeAge( Person $p ) {
        print $p->getAge()."n";
    }
}

class Person {
    private $writer;

    function __construct( PersonWriter $writer ) {
        $this->writer = $writer;
    }

    function __call( $method, $args ) {
        if ( method_exists( $this->writer, $method ) ) {
            return $this->writer->$method( $this );
        }
    }

    function getName()  { return "Bob"; }
    function getAge() { return 44; }
}

$person= new Person( new PersonWriter() );
$person->writeName();
$person->writeAge();
?>

官方文档:http://cn2.php.net/__call