资讯专栏INFORMATION COLUMN

php学习笔记(四)魔术方法

wangdai / 1247人阅读

摘要:将所有以两个下划线开头的类方法保留为魔术方法。和当对象被当做使用时,这个方法会被自动调用。此方法必须返回一个字符串当对象被当成方法调用时,这个方法会被自动调用。参数是一个枚举数组,包含着要传递给方法的参数。函数把数组元素组合为一个字符串。

PHP 将所有以 _ _(两个下划线)开头的类方法保留为魔术方法。

__toString()__invoke()

public string __toString ( void ):当对象被当做string使用时,这个方法会被自动调用。此方法必须返回一个字符串


__invoke():当对象被当成方法调用时,这个方法会被自动调用。


__call()__callStatic()

__call():当对象访问不存在的方法名称时,__call()方法会被自动调用

__callStatic():当对象访问不存在的静态方法名称时,__callStatic()方法会被自动调用

通过这两个方法,同一个方法的名称的调用可以对应不同的方法实现

run("para1","para2");//obj去调用run方法,输出:Calling run with param: para1, para2   
?>
__get()__set()

在给不可访问属性赋值时,__set()会被调用
读取不可访问属性的值时,__get()会被调用

className."
";//Getting the property className 
?>

读取不可访问属性的值时,__get()会被调用

className = "MagicClass";//Setting the property classNameto value MagicClass 
?>
__isset()和__unset()

当对不可访问属性调用isset()empty()时,__isset()会被调用
当对不可访问属性调用unset()时,__unset()会被调用

className is set?".isset($obj->className)."
";//__isset invoked     $obj->className is set?1 
?>

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/20867.html

相关文章

  • Laravel学习笔记PHP重载(overloading)

    摘要:重载在中就大量应用了重载相关知识,如在中就用到了方法重载知识使用魔术方法来动态创建类中未定义或不可见的静态方法。中通过引入魔术方法来实现动态的创建类属性和方法,包括属性重载的魔术方法和方法重载的魔术方法。 说明:本文主要讲述PHP中重载概念,由于Laravel框架中经常使用这块知识点,并且PHP的重载概念又与其他OOP语言如JAVA中重载概念不一样,故复习并记录相关知识点。同时,作者会...

    khs1994 评论0 收藏0
  • Laravel学习笔记之Query Builder源码解析(上)

    摘要:说明本文主要学习模块的源码。这里,就已经得到了链接器实例了,该中还装着一个,下文在其使用时再聊下其具体连接逻辑。 说明:本文主要学习Laravel Database模块的Query Builder源码。实际上,Laravel通过Schema Builder来设计数据库,通过Query Builder来CURD数据库。Query Builder并不复杂或神秘,只是在PDO扩展的基础上又开...

    Steve_Wang_ 评论0 收藏0
  • php学习笔记(一)基础部分

    摘要:学习至今一年有余,笔记积累挺多的,也挺杂的,写篇文章整理一下吧。基础部分输出文本的基础指令和。函数内部声明的变量拥有作用域,只能在函数内部进行访问。布尔型要指定一个布尔值,使用关键字或。 php学习至今一年有余,笔记积累挺多的,也挺杂的,写篇文章整理一下吧。 php基础部分 showImg(http://segmentfault.com/img/bVcWhR); PHP 输出文本...

    wapeyang 评论0 收藏0
  • php易错笔记-类与对象,命名空间

    摘要:类与对象基本概念如果在之后跟着的是一个包含有类名的字符串,则该类的一个实例被创建。如果该类属于一个名字空间,则必须使用其完整名称。如果一个类被声明为,则不能被继承。命名空间通过关键字来声明。 类与对象 基本概念 new:如果在 new 之后跟着的是一个包含有类名的字符串,则该类的一个实例被创建。如果该类属于一个名字空间,则必须使用其完整名称。 Example #3 创建一个实例 ...

    MartinHan 评论0 收藏0
  • PHP - Pimple 源码笔记(上)

    摘要:也就是闲时为了写文章而写的一篇关于源码的阅读笔记。是标准库的缩写,一组旨在解决标准问题的接口和类的集合。提供了一套标准的数据结构,一组遍历对象的迭代器,一组接口,一组标准的异常,一系列用于处理文件的类,提供了一组函数,具体可以查看文档。 也就是闲时为了写文章而写的一篇关于 Pimple 源码的阅读笔记。Pimple 代码有两种编码方式,一种是以 PHP 编写的,另一种是以 C 扩展编写...

    cfanr 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<