zoukankan      html  css  js  c++  java
  • PHP 类中的魔术方法

    定义:

         PHP类中以两个下画线“__”开头的方法被称为魔术方法。

    分类:

         例如:构造方法:__construct;析构方法:__destruct;动态重载:__set()、__get()、__call()、__callStatic();对象的克隆:__clone()

    应用场景:

        1、当程序试图修改一个不存在或不可见的类属性时,PHP引擎将会调用__set()方法,当然前提是该方法在类中被定义。__set()的定义格式如下:

        function __set($name,$value){

                    //实现细节

        }

        其中,$name是动态创建的变量名,$value是该变量的值。

       2、当程序试图读取一个不存在或不可见的类属性时,PHP引擎将会调用__get()方法,当然前提是该方法在类中被定义。__get()的定义格式如下:

        function __get($name){

              //实现细节

        }

        其中,$name是动态创建的变量名。

       3、当程序试图调用一个不存在或不可见的类方法时,PHP引擎将会调用__call()方法,当然前提是该方法在类中被定义。__call()方法的定义格式如下:

         function __call($name,$args){

                //实现细节

         }

         其中,$name是动态创建的方法名,$args是该方法的参数,以数组的形式存在。

        4、从PHP5.3.0开始,可以使用__callStatic()动态创建静态方法。__callStatic()的定义格式如下:

         function __callStatic($name,$args){

               //实现细节

         }

         其中,$name是动态创建的方法名,$args是该方法的参数,以数组的形式存在。

        5、__clone()方法一旦被定义,类在被复制时就会自动调用它,这样我们就可以在__clone()方法中给引用属性重新开辟内存。__clone()定义格式如下:

         function __clone(){

             //实现细节

         }

  • 相关阅读:
    IIS和tomcat共用80端口
    CYQ.Data V5 从入门到放弃ORM系列:教程
    C#中==与Equals方法的区别
    一个简单得不能再简单的“ORM”了
    msbuild ConfuserEx.Build 加密
    C#生成注册码
    从多个XML文档中读取数据用于显示webapi帮助文档
    ASP.NET MVC SSO 单点登录设计与实现
    ASP.NET MVC Bootstrap极速开发框架
    Nodejs初阶之express
  • 原文地址:https://www.cnblogs.com/zbwbest/p/5703080.html
Copyright © 2011-2022 走看看