PHP实现魔术方法以及关于独立实例与相连实例
程序员文章站
2022-04-08 13:08:16
...
本篇文章主要介绍PHP实现魔术方法以及关于独立实例与相连实例,感兴趣的朋友参考下,希望对大家有所帮助。
具体如下:
<?php //魔术方法 //当包含多个类 //1.自动装载类的魔术方法__autoload() function __autoload($classname){ if (isset($classname)){ require_once $classname.'.class.php'; } } /* $computer1=new Computer(); $computer1->addList('dalisng',234); echo $computer1; */ //__call()屏蔽调用方法时候产生的错误,当我们调用一个不存在的方法时候,会自动调用__call()方法。 //独立实例,两个实例各自建立,互不干涉 $computer2=new Computer(); echo $computer2->name;echo "<br/>"; $computer3=new Computer(); echo $computer3->name;echo "<br/>"; $computer3->name="大亮"; echo '$computer3->name:'.$computer3->name;echo "<br/>"; echo '$computer2->name:'.$computer2->name;echo "<br/>"; echo "<hr/>"; //相连实例,即 用等于号来开辟一个新的实例,此时两个实例共同指向一个内存地址,一损俱损,一荣俱荣 $computer4=new Computer(); echo '$computer4->name:'.$computer4->name;echo "<br/>"; $computer5=$computer4; echo '$computer5->name:'.$computer5->name;echo "<br/>"; $computer4->name="大亮"; echo '$computer4->name:'.$computer4->name;echo "<br/>"; echo '$computer5->name:'.$computer5->name;echo "<br/>"; echo "<hr/>"; //克隆__clone,克隆的新实例和被克隆的实例是两个相互独立的个体,虽然属性值相同,但是属性存放的地址不同,所以克隆后你我生死无关 $computer6=new Computer(); echo '$computer6->name:'.$computer6->name;echo "<br/>"; $computer7=clone $computer6; echo '$computer7->name:'.$computer7->name;echo "<br/>"; $computer6->name="克隆"; echo '$computer6->name:'.$computer6->name;echo "<br/>"; echo '$computer7->name:'.$computer7->name;echo "<br/>";
Computer.class.php
<?php class Computer{ public $name="1234"; function __construct(){ echo "you are right!"; } function __call($methodName,$argsList){//当方法不存在的时候会自动调用此方法,$argsList是相应的参数 echo $methodName."()方法不存在!"; echo "<pre>"; print_r($argsList); echo "</pre>"; } private function __toString(){ //当用户输出不存在的字符串时候,该方法自动调用 比如echo 对象名 echo "我是对象的字符串!"; } }
总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。
相关推荐:
PHP通过bypass disable functions执行系统命令的方法
以上就是PHP实现魔术方法以及关于独立实例与相连实例的详细内容,更多请关注其它相关文章!