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

天气预报小实例

    1. <?php
    2. //获得每个城市天气预报
    3. class Action{
    4. public function tj(){
    5. echo 'tj天气预报<br/>';
    6. }
    7. /*
    8. $m 方法名
    9. $p 方法参数集合
    10. */
    11. public function __call($m,$p){
    12. echo $m,'天气预报<br/>';
    13. }
    14. }
    15. $c=new Action();
    16. $c->tj();
    17. //获得城市
    18. $city=$_GET['method'];
    19. if(isset($city)){
    20. //获得城市的方法,由魔术方法__call处理
    21. $c->$city();
    22. }
    23. /*
    24. 网址:http://localhost/php/60.php?method=beijing
    25. 结果:
    26. tj天气预报
    27. beijing天气预报
    28. */
    29. ?>

PHP魔术方法之__call与__callStatic方法的更多相关文章

  1. 魔术方法之__call与__callStatic方法

    <?php class human{ private function t(){ } /** * 魔术方法__call * * @param string $method 获得方法名 * @pa ...

  2. PHP 魔术方法 __call 与 __callStatic 方法

    PHP 魔术方法 __call 与 __callStatic 方法 PHP 5.3 后新增了 __call 与 __callStatic 魔法方法. __call 当要调用的方法不存在或权限不足时,会 ...

  3. php -- 魔术方法 之 调用方法:__call()、__callStatic()

    方法重载:当调用一个不存在或者权限不够的方法的时候,会自动调用__call()方法 public function __call($name,$args){}  :用对象调用方法 public sta ...

  4. 魔术方法之__call、__callStatic

    1.__call() 作用,当调用不存在的方法时,会调用该方法.实际应用,当程序调用不存在的方法时,意外导致程序终止. .或者当你调用了受保护的或者是私人的方法时,也会自动调用__call方法 结果: ...

  5. __call()和__callStatic()方法

    __call() 当对象访问不存在的方法时,__call()方法会被自动调用__callStatic() 当对象访问不存在的静态方法时,__callStatic()方法会被自动调用 这两个方法在PHP ...

  6. php中__call() 和 __callStatic方法的使用

    __call 与__callStatic 魔法方法是php5.3后新增的,二者的应用场景: 1.当要调用的方法不存在或权限不足时,会自动调用__call 方法. 2.当调用的静态方法不存在或权限不足时 ...

  7. PHP中的__call和__callStatic方法

    如何防止调用不存在的方法而出错,使用__call魔术重载方法. __call方法原型如下: mixed __call(string $name,array $arguments) 当调用一个不可访问的 ...

  8. PHP中的__call和__callStatic方法(未看完)

    如何防止调用不存在的方法而出错,使用__call魔术重载方法. __call方法原型如下: mixed __call(string $name,array $arguments) 当调用一个不可访问的 ...

  9. 魔术方法以及__call的调用

    一.什么是魔术方法? 魔术方法是php中对一类方法的统称,这些方法可以在任何类中被实现.他们通常可以完成一些特殊的无法纯粹依靠自己编程实现的功能.他们通常以双下划线"__"作为名称 ...

随机推荐

  1. 群论 - Group Theory

    群的定义 若非空集合\(G\)和定义在\(G\)上的二元运算\(⋅\)构成的代数结构\((G,⋅)\),满足: 封闭性:\(\forall a,b\in G\),有\(a⋅b\in G\). 结合律: ...

  2. 【库存】NOI笔试习题集

    https://wenku.baidu.com/view/2dc9d10854270722192e453610661ed9ad5155ba.html

  3. 【bzoj2216】[Poi2011]Lightning Conductor 1D1D动态规划优化

    Description 已知一个长度为n的序列a1,a2,…,an.对于每个1<=i<=n,找到最小的非负整数p满足 对于任意的j, aj < = ai + p – sqrt(abs ...

  4. Django自定义User模型和登录验证

    用户表已存在(与其他App共用),不能再使用Django内置的User模型和默认的登录认证.但是还想使用Django的认证框架(真的很方便啊). 两个步骤: 1)自定义Use模型,为了区分系统的Use ...

  5. docker的通俗理解

    自己买了个服务器,前不久搭建好的一个网站,想要再搞一个站点,无奈只能修改端口后,再部署另外一个站点.繁琐的配置运行环境,迁移网站,是否让你感觉到很繁琐?服务器不想用了,想搬迁到另外一台服务器去部署,先 ...

  6. 慕课 python 操作数据库

    test_connection import MySQLdb conn = MySQLdb.Connect( host = '127.0.0.1', port = 3306, user = '**** ...

  7. [深入学习C#]C#实现多线程的方式:Task——任务

    简介 .NET 4包含新名称空间System.Threading.Tasks,它 包含的类抽象出了线程功能. 在后台使用ThreadPool. 任务表示应完成的某个单元的工作. 这个单元的工作可以在单 ...

  8. spring boot--日志、开发和生产环境切换、自定义配置(环境变量)

    Spring Boot日志常用配置: # 日志输出的地址:Spring Boot默认并没有进行文件输出,只在控制台中进行了打印 logging.file=/home/zhou # 日志级别 debug ...

  9. MVC中使用ajax传递json数组

    解决方法 去www.json.org下载JSON2.js再调用JSON.stringify(JSONData)将JSON对象转化为JSON串. var people = [{ "UserNa ...

  10. Network | Public-key cryptography

    公开密钥加密public-key cryptography,也称为非对称(密钥)加密. 非对称密钥,是指一对加密密钥与解密密钥,这两个密钥是数学相关,用某用户密钥加密后所得的信息,只能用该用户的解密密 ...