首页 > 代码库 > 魔术方法

魔术方法

重载:

PHP中提供的重载,是指动态的创建类属性和方法。我们是通过魔术方法来实现的。

所有的重载方法都必须被声明为public

1.魔术方法的特点:

  以两个_ _开头,目前有十五个魔术方法。构造函数和析构函数是特殊的方法,也是魔术方法,自己以_ _开头,所创建的类函数并不是魔术方法。

__construct():构造函数

 __destruct():析构函数

1. __get() :读取不可访问属性的值时,__get()魔术方法被调用

           __get()方法里面只接收一个参数,接收一个$name的值,参数$name主要是指 的是操作的变量名称

 技术分享

 

      

 

__get():代码实例:

 技术分享

技术分享

 

 

效果:

 

__get()方法的特点:

 技术分享

 

①__get魔术方法,当在类的外部调用不能直接访问的属性时,该函数方法被自动调用

 

②下面的格式是该魔术方法的标准形式,不能改变

 技术分享

 

③魔术方法必须是公共的(public),且不能定义为静态的(static)除__callStatic以外

④get方法必须有返回值,所以最后结束的肯定是return语句

④$name被访问的属性的名称必须是一个字符串

 

  1. __set():当给不可访问的属性赋值时,__set()方法会被自动调用

 

__set($name,$value)方法里面接收两个参数,$name指的是操作变量的名称,$value指定了$name的值

 

魔术方法__set(),当设置类中的不能直接访问的属性时,自动调用该函数

 

__set不需要返回值

 

下面的格式是该魔术方法的标准形式,不能改变

代码实例:

 

 技术分享

 

 

 

效果:

 技术分享

 

 

 

Property_exists():检查对象或者类里面是否具有该属性,该函数接收两个参数(这是一个bool函数)

 

  1. __unset():将变量置空

     __isset():  检查是否存在某一个变量

 

  1. __call()

在对象中调用一个不能直接访问的非静态

  __callStatic()

在静态上下文中调用一个不可访问方法时,__callStatic() 会被调用。 

 

 

  1. __toString():一个类被当做字符串时应怎样回应,将数组转化成字符串输出

魔术方法,当以字符串格式输出类的对象时,默认被自动调用

例如 echo $obj; 应该显示些什么。此方法必须返回一个字符串,否则将发出一条 E_RECOVERABLE_ERROR 级别的致命错误。

该函数方法结束必须有一个return语句,且返回的值必须是字符串

__toString()必须返回一个字符串的内容

 

  1. __clone():对象复制

   $copy_of_

魔术方法