PHP重载

作者: 敬业福 | 来源:发表于2016-03-22 22:13 被阅读45次

PHP中的重载指的是动态的创建属性与方法,是通过魔术方法来实现的。

属性的重载通过__set,__get,__isset,__unset来分别实现对不存在属性的赋值、读取、判断属性是否设置、销毁属性。

class Car {
    private $ary = array();
    
    public function __set($key, $val) {
        $this->ary[$key] = $val;
    }
    
    public function __get($key) {
        if (isset($this->ary[$key])) {
            return $this->ary[$key];
        }
        return null;
    }
    
    public function __isset($key) {
        if (isset($this->ary[$key])) {
            return true;
        }
        return false;
    }
    
    public function __unset($key) {
        unset($this->ary[$key]);
    }
}
$car = new Car();
$car->name = '汽车';  //name属性动态创建并赋值
echo $car->name;

方法的重载通过__call来实现,当调用不存在的方法的时候,将会转为参数调用__call方法,当调用不存在的静态方法时会使用__callStatic重载。

class Car {
    public $speed = 0;
    
    public function __call($name, $args) {
        if ($name == 'speedUp') {
            $this->speed += 10;
        }
    }
}
$car = new Car();
$car->speedUp(); //调用不存在的方法会使用重载
echo $car->speed;

相关文章

  • PHP编程开发技巧:PHP中重载如何实现

    PHP编程开发技巧:PHP中重载如何实现,重载分为属性重载和方法重载,在PHP中的重载和在其它编程语言的重载不一样...

  • PHP重载

    PHP中的重载指的是动态的创建属性与方法,是通过魔术方法来实现的。 属性的重载通过__set,__get,__is...

  • PHP面向对象-重载和魔术方法

    PHP重载和其他区别 什么时候调用

  • Callback / Callable 类型

    重载函数,和php的伪重载函数 重载函数a. c++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的...

  • php 属性重载与方法重载

    本文实例讲述了PHP面向对象程序设计重载(overloading)操作。分享给大家供大家参考,具体如下: 重载 P...

  • PHP 技能精进之 PHP-FPM 多进程模型

    PHP-FPM 提供了更好的 PHP 进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置。那么当我们谈论...

  • PHP"重载"

    1、什么是重载 1)PHP所提供的"重载"(overloading)是指动态地"创建"类属性和方法,我们是通过魔术...

  • PHP 重载方法 __call()

    __call() 方法用于监视错误的方法调用。 __call()(Method overloading) 为了避免...

  • 高级1、PHP 函数重载

    对于弱类型语言来说,PHP函数重载,并不像一般的OOP那样。 因为函数重载必须满足两个条件: 1、函数参数的个数不...

  • java之「方法重载」

    方法重载 相对于我日常经常使用的php来说,java有个很不同的地方,这里可以说下。就是方法重载。白话就是,在一个...

网友评论

      本文标题:PHP重载

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