魔术方法

Posted 胡智杰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了魔术方法相关的知识,希望对你有一定的参考价值。

重载:

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_

以上是关于魔术方法的主要内容,如果未能解决你的问题,请参考以下文章

PHP的魔术常量和魔术方法

php 魔术方法 和 魔术常量

php 魔术方法和魔术常量

PHP魔术方法和魔术变量

php -- 魔术方法魔术常量 简单介绍

PHP魔术方法和魔术变量总结