PHP的魔术方法2
来源:互联网 发布:微盘,南风知我意 编辑:程序博客网 时间:2024/06/09 04:27
前面说到了PHP的魔术方法1(http://blog.csdn.net/u014181418/article/details/39234639),主要说到访问到不可访问的属性时,魔术方法就会自动发挥作用。
这篇文章呢?说的是访问到不可访问的方法时,魔术方法怎样发挥作用。
1、__call
先看个没加魔术方法的例子
<?phpclass funMagic{<span style="white-space:pre"></span><span style="white-space:pre"></span>public function a(){<span style="white-space:pre"></span>echo '我是a方法<br/>';<span style="white-space:pre"></span>}<span style="white-space:pre"></span>private function b(){<span style="white-space:pre"></span>echo '我是b方法<br/>';<span style="white-space:pre"></span>}<span style="white-space:pre"></span>public function c(){<span style="white-space:pre"></span>echo '我是c方法<br/>';<span style="white-space:pre"></span>}}$ob = new funMagic();$ob->a();$ob->c();$ob->b();$ob->d();?>运行结果:
我是a方法
我是c方法
Fatal error: Call to private method funMagic::b() from context '' in D:\www\php.php on line 22
显然,a方法,c方法可以被对象调用。b方法因对象权限不足而调用出错,d方法是不存在的方法。
如果加上魔术方法会怎样?
<?phpclass funMagic{public function a(){echo '我是a方法<br/>';}private function b(){echo '我是b方法<br/>';}public function c(){echo '我是c方法<br/>';}public function __call($method,$argument){echo '**你不无法调用'.$method.'方法,原因是权限不足或该方法不存在。<br/>';}}$ob = new funMagic();$ob->a();$ob->c();$ob->b();$ob->d();?>运行结果:
我是a方法
我是c方法
**你不无法调用b方法,原因是权限不足或该方法不存在。
**你不无法调用d方法,原因是权限不足或该方法不存在。
调用b方法,因权限不足,魔术方法__call被自动被调用
调用d方法,因该方法不存在,魔术方法__call被自动被调用
2、__callStatic
__callStatic与__call类似,只不过当对象调用的静态方法权限不足或该方法不存在时,__callStatic自动被调用。
0 0
- PHP的魔术方法2
- php的魔术方法
- php的魔术方法
- php的魔术方法
- PHP的魔术方法
- PHP的魔术方法
- PHP的魔术方法
- php的魔术方法
- php的魔术方法
- PHP的魔术方法
- PHP的魔术方法
- PHP的魔术方法
- PHP的魔术变量及魔术方法
- PHP的魔术常量和魔术方法
- 讲讲php的魔术方法
- php魔术方法的理解
- PHP的魔术方法小结
- php 的魔术方法
- hdu 5017 Ellipsoid(三分)
- 鼠标拖拽移动Java界面组件
- 模拟信号的数字传输
- 虚函数与构造函数、析构函数
- How to Build ffmpeg with NDK r9
- PHP的魔术方法2
- Java屏幕截图及剪裁
- Cannot find executable for CFBundle
- Windows MFC 全局模态 实现 (二)
- MyEclipse中文乱码问题
- MySQL内核月报 2014.09
- Andriod 学习——Activity之间的跳转,以及Activity的生命周期。
- 用汇编看c++中的类型转换
- iOS Developer:真机测试