下面我将对PHP所有的魔术方法进行介绍说明。其实下面的大多数方法,对于一个合格的PHP程序员来说,都是很熟悉的东西了。我在这里作个总结,自己作个记录学习,同时也给还未熟悉这些方法的同学们做个介绍。如有疏漏和错误,希望各位能指出。下面所提到的,大多数是PHP5所增加的魔术方法,少部分在PHP4里就已经存在,少部分则是PHP5.1.0之后才出现的,这个在下面我将会提到。

__construct()和__destruct()

构造函数__construct()和析构函数__destruct(),这两个不用我多说了吧,是个程序员都知道。__construct()会在实例创建的时候被调用,__destruct()在实例销毁的时候被调用。需要注意的时候,即使你不显式地调用unset去销毁一个实例,它也会在脚本运行结束的时候被销毁。这两个方法都可以传递0个或者多个参数。

<?phpclass o{    public  function __construct()    {    echo ''building instance'';    }    public  function __destruct()    {    echo ''destroy instance'';    }}$i = new o;unset($i);//这句有无都不影响最后的输出。__destruct()总是会被调用的//输出//building instance//destroy instance?>

__get, __set, __isset, __unset

当对一个属性进行操作的时候,如果该属性不可获得(不存在,或者当前环境不可调用该属性,例如在子类中调用一个父类的private属性),则调用以上方法的其中一个。调用什么方法是依据对属性所进行的操作。注:在php 5.0.*里,这4个方法必须为public。

__get

触发事件:调用属性

参数 1 :所调用的属性名

例子:

<?phpclass o{     protected function __get($var)      {         return  ''No Member:''.$var;     }}$i=new o();echo $i->name; // 输出 No Member:name?>
<?phpclass o{     private   $name=''surfchen'';//注意这里的private     protected function __get($var)      {         return  ''No Member:''.$var;     }}class child extends o{function test(){echo $this->name;}}$c=new child();echo $c->test(); // 输出 No Member:name?>

__set

触发事件:对一个属性进行赋值

参数 1 :所调用的属性名

参数 2 :所赋予的值

例子:

<?phpclass o{protected function __set($var,$val){echo ''setting ''.$var.'' to ''.$val."  ";}}$c=new o();echo $c->name=''wolfzeus''; /*输出:setting name to wolfzeuswolfzeus*/?>

__isset

触发事件:用isset检测属性是否存在

参数 1 :所调用的属性名

例子:

<?phpclass o{protected function __isset($var){echo $var.'' have not been set'';}}$c=new o();isset($c->name); /*输出:name have not been set*/?>

__unset

触发事件:unset一个属性(无论这个属性是否存在)

参数 1 :所调用的属性名

例子:

<?phpclass o{protected function __unset($var){echo $var.'' is unset'';}}$c=new o();unset($c->name); /*输出:name is unset*/?>

__call($func,$para)

当尝试调用一个对象的方法的时候,如果该方法不存在,则调用__call($func,$para)方法。这个方法必须有两个参数,第一个为调用的方法名,第二个是一个被调用方法的参数数组。

php魔法函数用途,PHP中的Magic Methods (魔术函数)相关推荐

  1. pandas使用replace函数替换dataframe中的值:replace函数对dataframe中的多个值进行替换、即一次性同时对多个值进行替换操作

    pandas使用replace函数替换dataframe中的值:replace函数对dataframe中的多个值进行替换.即一次性同时对多个值进行替换操作 目录

  2. pandas使用replace函数替换dataframe中的值:replace函数对dataframe中指定数据列的值进行替换、替换具体数据列的相关值

    pandas使用replace函数替换dataframe中的值:replace函数对dataframe中指定数据列的值进行替换.替换具体数据列的相关值 目录

  3. c语言常用数学函数大全查询,C语言数学函数 C语言中全部可用的数学函数有哪些?...

    导航:网站首页 > C语言数学函数 C语言中全部可用的数学函数有哪些? C语言数学函数 C语言中全部可用的数学函数有哪些? 相关问题: 匿名网友: /*--------------------- ...

  4. python dataframe函数_python pandas中DataFrame类型数据操作函数的方法

    这篇文章主要介绍了关于python pandas中DataFrame类型数据操作函数的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 python数据分析工具pandas中Data ...

  5. js中trim函数_30天中的30个Excel函数:03 – TRIM

    js中trim函数 Yesterday, in the 30XL30D challenge, we took a poke at the lazy brother-in-law function -- ...

  6. php中的分割字符串函数,关于PHP中两款字符串分割函数explode,str_split

    关于PHP中两款字符串分割函数explode,str_split 2019.02.19 4140 将一个字符串分割成数组在日常的微信公众号开发中的应用应该是很多的.如果指定分割符,可以使用explod ...

  7. mysql中可以用to_char函数吗_mySQL中 实现Oracle 的to_char函数

    mySQL中 实现Oracle 的to_char函数,应该可以实现80%的兼容 REPLACE函数是区分大小的 DROP FUNCTION IF EXISTS `to_char`; CREATE DE ...

  8. PHP中启动session的函数是,PHP中,启动 session 的函数是

    PHP中,启动 session 的函数是 答:session_start() 隧道长度在300m以下可不布置大避车洞 答:√ 为了使长链脂酰基从胞浆转运到线粒体内进行脂酸的β-氧化,所需要的载体为 答 ...

  9. matlab井函数,地下水动力学中Matlab的运用(井函数与贝塞尔函数)

    地下水动力学中Matlab的运用(井函数与贝塞尔函数) 地下水动力学中Matlab的运用 一. 越流含水层中贝塞尔函数的实现 越流含水层中地下水向承压水井运动的问题中,贝塞尔函数大量运用,其中精确解中 ...

最新文章

  1. C++ with STL(五)queuestacklist
  2. android studio下载插件时出现的read time out问题
  3. MySQL使用命令备份和还原数据库
  4. python发邮件有什么意思_python发邮件要装什么
  5. 邮箱无权访问 上的 jira是怎么回事_蚂蚁庄园答案2020年11月6日汇总 小鸡宝宝考考你每日答案为你呈上|蚂蚁|庄园-360GAME...
  6. vscode中如何创新建php文件,vscode如何创建代码模板
  7. Hibernate所用15个jar包
  8. 信息学奥赛一本通(1008:计算(a+b)/c的值)
  9. C# -- 在底图上动态生成文字和图片
  10. Android课程---如何用网格视图做出手机桌面APP
  11. wdcp如何修改phpmyadmin导入 最大限制2048 KB
  12. 体验 | 5 个技巧让你的电视盒子物尽其用
  13. 链接Linux工具(SecureCRT)
  14. 迈达斯导出html计算书,MIDAS计算书整理正文..doc
  15. 完美的迅捷PDF在线转换软件
  16. 哈工大车万翔团队:口语语言理解的最新进展与前沿
  17. Java技术栈(跳槽,面试必备)
  18. 年度最具特色生活类APP
  19. ios如何解除dns被劫持_mac dns被劫持如何修复-Mac DNS被劫持解决方法 - 河东软件园...
  20. 合肥工业大学计算机信息检索报告,合肥工业大学计算机信息检索(图书馆资源利用)作业.doc...

热门文章

  1. NUC1305 哥德巴赫猜想【筛选法】
  2. CCF201512-4 送货(100分)
  3. 红黑树相关定理及其证明
  4. #ifdef 的使用
  5. 数字敏感与数字的研究
  6. 【笔试/面试】—— 判断一个链表是否有环
  7. CentOS SELinux
  8. numpy 常用api(二)
  9. python学到什么程度可以找到工作-月薪2万+的Python Web岗,学到什么程度能找到工作?...
  10. python项目开发实例-Python小项目:快速开发出一个简单的学生管理系统