PHP经验分享

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

2018-12-05  本文已影响0人  PHP的艺术编程
PHP重载和其他区别
PHP中的"重载"与其它绝大多数面向对象语言不同。传统的"重载"是用于提供多个同名的类方法,但各方法的参数类型和个数不同。
什么时候调用
当调用当前环境下未定义或不可见的类属性或方法时,重载方法会被调用未定义或不可见的类属性或方法
<?php
class Car {
    public $speed = 0;
    private $priveate_name;

    public function __call($name, $args) {
        echo '调用的方法名是:' . $name . '<br/>' . '调用方法传递的参数' . var_export($args, true) . '<br/>';
    }

    public function __set($name, $value)
    {
        echo '设置变量的名称:' . $name . '<br/>' . '设置的变量值:' . $value . '<br/>';
    }
}
$car = new Car();
$car->speedUp(1111); //调用不存在的方法会使用重载
$car->private_nmae = 15; //设置不存在的变量名或者是没有访问限制


//调用的方法名是:speedUp
//调用方法传递的参数array ( 0 => 1111, )
//设置变量的名称:private_nmae
//设置的变量值:15

上一篇下一篇

猜你喜欢

热点阅读