读书人

戏法方法(三)

发布时间: 2012-11-23 22:54:33 作者: rapoo

魔术方法(三)

  1. <?php /****
  2. 燕十八 公益PHP讲堂
  3. 论 坛: http://www.zixue.it 微 博: http://weibo.com/Yshiba
  4. YY频道: 88354001 ****/
  5. /*** ====笔记部分====
  6. __call __callStatic
  7. ***/
  8. /* class Human {
  9. public function hello() { echo 'hello<br />';
  10. } }
  11. $lisi = new Human();
  12. $lisi->hello();
  13. $lisi->say(); // Fatal error: Call to undefined method Human::say()
  14. */
  15. class Human { public function hello() {
  16. echo 'hello<br />'; }
  17. private function t() {
  18. }
  19. public static function __callStatic($method,$argu) { echo '你想调用一个不存在或不权调用的静态方法',$method,'<br />';
  20. echo '你调用时还传了参数<br />'; print_r($argu);
  21. }
  22. public function __call($method,$argu) { echo '你想调用一个我不存在或不权调用的方法',$method,'<br />';
  23. echo '你调用时还传了参数<br />'; print_r($argu);
  24. }
  25. }
  26. $lisi = new Human();
  27. $lisi->hello(); $lisi->say(1,2,3);
  28. $lisi->t('a','b','c');
  29. /*
  30. __call是调用不可见(不存在或无权限)的方法时,自动调用 $lisi->say(1,2,3);-----没有say()方法----> __call('say',array(1,2,3))运行
  31. */
  32. Human::cry('痛哭','号哭','鬼哭');
  33. /* __callStatic 是调用不可见的静态方法时,自动调用.
  34. Human::cry('a','b','c')----没有cry方法---> Human::__callStatic('cry',array('a','b','c')); */
  35. /*
  36. 这个__callStatic 为什么和其他系统函数颜色不太一样呢?
  37. 答: 这个方法 是PHP5.3里才添加的,比较新.
  38. 可能老版本的ediptlus的语法文件里,没有他 */

读书人网 >编程

热点推荐