php魔术方法

Posted 雨落知音

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php魔术方法相关的知识,希望对你有一定的参考价值。

<?php
// Declare a simple class
class TestClass
{
    public $foo;

    public function __construct($foo) 
    {
        $this->foo = $foo;
    }

    public function __toString() {
        return $this->foo;
    }
}

$class = new TestClass(‘Hello‘);
echo $class;   // Hello
?>
class CallableClass 
{
    function __invoke($x) {
        var_dump($x);
    }
}
$obj = new CallableClass;
$obj(5);//5
var_dump(is_callable($obj));//is_callable — 检测参数是否为合法的可调用结构  true
<?php
class Connection 
{
    protected $link;
    private $server, $username, $password, $db;
    
    public function __construct($server, $username, $password, $db)
    {
        $this->server = $server;
        $this->username = $username;
        $this->password = $password;
        $this->db = $db;
        $this->connect();
    }
    
    private function connect()
    {
        $this->link = mysql_connect($this->server, $this->username, $this->password);
        mysql_select_db($this->db, $this->link);
    }
    
    public function __sleep()
    {
        return array(‘server‘, ‘username‘, ‘password‘, ‘db‘);
    }
    
    public function __wakeup()
    {
        $this->connect();
    }
}
?>
<?php
class MethodTest 
{
    public function __call($name, $arguments) 
    {
        // 注意: $name 的值区分大小写
        echo "Calling object method ‘$name‘ "
             . implode(‘, ‘, $arguments). "\n";
    }

    /**  PHP 5.3.0之后版本  */
    public static function __callStatic($name, $arguments) 
    {
        // 注意: $name 的值区分大小写
        echo "Calling static method ‘$name‘ "
             . implode(‘, ‘, $arguments). "\n";
    }
}

$obj = new MethodTest;
$obj->runTest(‘in object context‘);

MethodTest::runTest(‘in static context‘);  // PHP 5.3.0之后版本
?>

 

以上是关于php魔术方法的主要内容,如果未能解决你的问题,请参考以下文章

PHP中的常见魔术方法功能作用及用法实例

巧用PHP中__get()魔术方法

了解 PHP 中的魔术方法 [重复]

php魔术方法。。

php啥是魔术方法

php魔术方法__tostring