文档章节

php 魔术方法

别人说我名字很长
 别人说我名字很长
发布于 2016/02/14 10:17
字数 348
阅读 37
收藏 1
//实例化对象时,会调用对象的__construct方法
$obj = new Object();
//给对象不存在的属性赋值时,会调用对象的__set方法
$obj->title = "hello";
//使用对象不存在的属性时,会调用对象的__get方法
echo $obj->title;
//调用对象不存在的方法时,会调用对象的__call方法
$obj->test("hello",123,567);
//调用不存在的类静态方法时,会调用类的__callStatic方法
Object::staticMethod("static","not found method");
//直接输出对象时,会调用对象的__toString方法
echo $obj;
//将一个对象当作函数一样使用时,会调用对象的__invoke方法
echo $obj("test");
//克隆对象时,会调用对象的__clone方法
$obj2 = clone $obj;
//判断对象属性是否存在时,会调用对象的__isset方法
var_dump(isset($obj->aaa));
//销毁对象属性时,会调用对象的__unset方法
unset($obj->aaa);


class Object{

    protected $array = array();

    function __construct()
    {
        echo __METHOD__."你正在实例化对象<br>";
    }

    function __set($name, $value)
    {
        $this->array[$name]=$value;
    }

    function __get($name)
    {
        return $this->array[$name];
    }

    function __call($name, $arguments)
    {
        var_dump($name,$arguments);
        return "magic function\n";
    }

    static function __callStatic($name, $arguments)
    {
        var_dump($name,$arguments);
        return "magic static function";
    }

    function __toString()
    {
        return __CLASS__.'<br>';
    }

    function __invoke($arguments)
    {
        var_dump($arguments);
        return __METHOD__.'<br>';
    }

    function __clone()
    {
        echo __METHOD__."你正在克隆对象<br>";
    }

    function __isset($name)
    {
        echo __METHOD__."你想判断有没有属性".$name."<br>";
        return 1;
    }

    function __unset($name)
    {
        echo __METHOD__."你想删除属性".$name."<br>";
    }


    function __destruct()
    {
        echo __METHOD__."你正在注销对象<br>";
    }



}



© 著作权归作者所有

共有 人打赏支持
别人说我名字很长
粉丝 55
博文 251
码字总数 101528
作品 0
济南
程序员
Laravel5.2之PHP重载(overloading)

说明:本文主要讲述PHP中重载概念,由于Laravel框架中经常使用这块知识点,并且PHP的重载概念又与其他OOP语言如JAVA中重载概念不一样,故复习并记录相关知识点。同时,作者会将开发过程中的一...

botkenni
2016/10/24
2
0
PHP中用下划线开头的变量含义

命名的规则 加一个为私有的 加两个一般都是系统默认的,系统预定义的,即所谓: “魔术方法”与“魔术常量” PHP起止为双下划线的常量即为“魔术常量”: LINE文件中的当前行号。 FILE文件的...

linuxjd
2014/09/13
0
1
PHP魔术方法学习笔记

YII2框架controller的继承关系如下: yiibasecomponents yiibasecontroller yiiwebcontroller 而components源码里面的魔术方法让人印象深刻: 魔术方法: 是指某些情况下,会自动调用的方法,称...

风清扬-深圳
2015/12/18
50
0
php中的魔术方法

魔术方法是以两个下划线""开头、具有特殊作用的一些方法,可以看做php的"语法糖"。 语法糖指那些没有给计算机语言添加新功能,而只是对人类来说更"甜蜜"的语法。语法糖往往给程序员提供了更实...

rin9958
2016/03/27
65
1
PHP5中魔术方法

魔术函数 1。construct() 实例化对象时被调用, 当construct和以类名为函数名的函数同时存在时,construct将被调用,另一个不被调用。 2。destruct() 当删除一个对象或对象操作终止时被调用。...

zchd
2014/05/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JS:异步 - 面试惨案

为什么会写这篇文章,很明显不符合我的性格的东西,原因是前段时间参与了一个面试,对于很多程序员来说,面试时候多么的鸦雀无声,事后心里就有多么的千军万马。去掉最开始毕业干了一年的Jav...

xmqywx
今天
0
0
Win10 64位系统,PHP 扩展 curl插件

执行:1. 拷贝php安装目录下,libeay32.dll、ssleay32.dll 、 libssh2.dll 到 C:\windows\system32 目录。2. 拷贝php/ext目录下, php_curl.dll 到 C:\windows\system32 目录; 3. p...

放飞E梦想O
今天
0
0
谈谈神秘的ES6——(五)解构赋值【对象篇】

上一节课我们了解了有关数组的解构赋值相关内容,这节课,我们接着,来讲讲对象的解构赋值。 解构不仅可以用于数组,还可以用于对象。 let { foo, bar } = { foo: "aaa", bar: "bbb" };fo...

JandenMa
今天
1
0
OSChina 周一乱弹 —— 有人要给本汪介绍妹子啦

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享水木年华的单曲《中学时代》@小小编辑 手机党少年们想听歌,请使劲儿戳(这里) @须臾时光:夏天还在做最后的挣扎,但是晚上...

小小编辑
今天
21
5
centos7安装redis及开机启动

配置编译环境: sudo yum install gcc-c++ 下载源码: wget http://download.redis.io/releases/redis-3.2.8.tar.gz 解压源码: tar -zxvf redis-3.2.8.tar.gz 进入到解压目录: cd redis-3......

hotsmile
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部