• PHP魔术方法之__call与__callStatic方法


    [php] view plain copy
     
    1. <?php  
    2.   
    3. class human{  
    4.   
    5. private function t(){  
    6.   }  
    7.   
    8. //魔术方法__call  
    9. /* 
    10. $method 获得方法名 
    11. $arg 获得方法的参数集合 
    12. */  
    13. public function __call($method,$arg){  
    14.     echo '你想调用我不存在的方法',$method,'方法<br/>';  
    15.     echo '还传了一个参数<br/>';  
    16.     echo print_r($arg),'<br/>';  
    17.   }  
    18. //魔术方法__callStatic  
    19. public static function __callStatic($method,$arg){  
    20.   
    21.     echo '你想调用我不存在的',$method,'静态方法<br/>';  
    22.     echo '还传了一个参数<br/>';  
    23.     echo print_r($arg),'<br/>';  
    24.   }  
    25.   
    26. }  
    27.   
    28. $li=new human();  
    29. $li->say(1,2,3);  
    30. /* 
    31. 调用一个未定义的方法 
    32. Fatal error: Call to undefined method human::say() in D:wampwwwphp59.php on line 8 
    33. */  
    34.   
    35. $li->t('a','b');  
    36. /*  
    37. __call是调用不可见(不存在或无权限)的方法时,自动调用  
    38. $lisi->say(1,2,3);-----没有say()方法----> __call('say',array(1,2,3))运行  
    39. */   
    40.   
    41. human::cry('痛哭','鬼哭','号哭');  
    42. /*  
    43. __callStatic 是调用不可见的静态方法时,自动调用.  
    44. Human::cry('a','b','c')----没有cry方法---> Human::__callStatic('cry',array('a','b','c'));  
    45. */   
    46.   
    47. ?>  



    天气预报小实例

    [php] view plain copy
     
      1. <?php  
      2. //获得每个城市天气预报  
      3. class Action{  
      4.   
      5. public function tj(){  
      6.  echo 'tj天气预报<br/>';  
      7.  }  
      8.   
      9. /* 
      10. $m 方法名 
      11. $p 方法参数集合 
      12. */  
      13. public function __call($m,$p){  
      14.   
      15.   echo $m,'天气预报<br/>';  
      16.   }  
      17.   
      18. }  
      19.   
      20. $c=new Action();  
      21. $c->tj();  
      22.   
      23. //获得城市  
      24. $city=$_GET['method'];  
      25.   
      26.   
      27. if(isset($city)){  
      28.   
      29. //获得城市的方法,由魔术方法__call处理  
      30. $c->$city();  
      31.   
      32. }  
      33. /* 
      34. 网址:http://localhost/php/60.php?method=beijing 
      35. 结果: 
      36. tj天气预报 
      37. beijing天气预报 
      38. */  
      39.   
      40.   
      41. ?>  
  • 相关阅读:
    决战72hours
    学习中的十七条建议
    数学建模终结篇
    数学建模(7)建模开始
    ASP升级程序
    为blog挑选logo
    Mysql源代码分析系列(4): 主要调用流程(续)转载
    AS学习步骤
    什么是敏捷软件测试[转]
    Mysql源代码分析(6): Plugin架构介绍(续)转载
  • 原文地址:https://www.cnblogs.com/xiaoleiel/p/8324203.html
Copyright © 2020-2023  润新知