美文网首页
PHP基础 -- 魔术方法

PHP基础 -- 魔术方法

作者: wyc0859 | 来源:发表于2019-02-15 13:49 被阅读0次

__construct()

每次实例化一个类都会先调用该方法进行初始化


__get + __set 实现未定义属性调用

__get()

当想要获取一个类的私有属性,或者获取一个类并未定义的属性时。该魔术方法会被调用。

__set()

当想要设置一个类的私有属性,或者设置一个类并未定义的属性时。该魔术方法会被调用。

class db{
    function a()    {
        echo 'a';
    }
    function __set($k, $v)    {
        //$this->arr[$k] = $v;
        echo 'this is __set';
    }
    function __get($k)    {
         echo 'this is __get';
    }
}

$db = new db;
$db->a();   //a
$db->b='bbb';   //this is __set
$db->b;    //this is __get
class db{
    protected $arr = [];
    function __set($k, $v)    {
        $this->arr[$k] = $v;
    }
    function __get($k)    {
        return $this->arr[$k];
    }
}

$db = new db;
$db->b='bbb';
echo $db->b;  //bbb

__call 实现未定义方法的调用

__call 和__callStatic
class db
{
    function __call($func,$param){
        echo 'func:'.$func."<br/>";
        echo 'param:'.json_encode($param);
        return "<br/>end";
    }
    static function __callStatic($func,$param){
        echo 'func:'.$func;
    }
}
$db = new db;
echo $db->test("hello",123);    //  func:test  param:["hello",123]  end
db::static_test("hello",123);   //func:static_test

__toString 和 __invoke

__toString 把对象当字符串使用的时候调用
__invoke 把对象当函数使用的时候调用

class db{
   function __toString()   {
        return 'str';
   }
    function __invoke($param='')    {
        return 'array';
    }
}

$db=new db;
echo $db;   //str    //若未定义__toString()会报错
echo $db();   //array     //若未定义__invoke()会报错

相关文章

  • PHP简明教程-面向对象基础 1

    PHP简明教程 面向对象基础 1 类中魔术方法 类中魔术方法不能被手动调用,几乎每个魔术方法都有触发时机和参数,P...

  • PHP基础 -- 魔术方法

    __construct() 每次实例化一个类都会先调用该方法进行初始化 __get + __set 实现未定义属性...

  • PHP面试梳理

    PHP php 魔术方法 、魔术常量 php cli autoload , spl_autoload compos...

  • PHP魔术方法

    PHP魔术方法

  • PHP魔术方法

    魔术方法(Magic methods) PHP中把以两个下划线__开头的方法称为魔术方法,这些方法在PHP中充当了...

  • 规则引擎升级版(直接能跑)

    利用了php的魔术方法

  • PHP常用魔术方法

    参考链接:PHP之十六个魔术方法详解

  • PHP 魔术方法

    PHP中魔术方法 __construct__destruct__set__get__isset__unset 下面...

  • PHP魔术方法

    总的来说, 有下面几个魔术函数__construct() __destruct() __get() __set(...

  • PHP魔术方法

    概念 PHP中把以两个下划线__开头的方法称为魔术方法,这些方法在PHP中充当了举足轻重的作用。 常见的方法 __...

网友评论

      本文标题:PHP基础 -- 魔术方法

      本文链接:https://www.haomeiwen.com/subject/ftipeqtx.html