如果在类内部调用的方法不存在,则返回字符串

时间:2015-09-15 20:14:58

标签: php

搜索了几个小时后,我偶然发现了method existsfunction existsmagic methods以及许多其他手册,论坛帖子和博客,但它们对我来说不够清晰或者不是我正在寻找的东西。在this stack overflow questionas well as this one中,它们几乎就是我要查找的内容,只有它们会针对静态方法名称检查method_exists

这是我的问题:
我希望我的类中的一个方法在FunctionName调用时检查类MyClassName内是否存在$foo = new MyClassName(); $foo->FunctionName();,如果不存在,则回显"测试!&#34 ;.换句话说,如果被调用的方法不存在于MyClassName中,则回显"测试!"。

我知道我可以使用像$foo = new MyClassName();这样的对象来检查它,但我正在我的班级中寻找可以做到的方法/函数

非常感谢!

2 个答案:

答案 0 :(得分:2)

您的搜索确切地将您带到了您需要去的地方。

如果在类定义中实现__call方法(请参阅您提供的魔术方法链接),当方法不可访问时(不存在或是私有的或受保护的,将取决于您是否正在调用)分别来自子类的方法)。

答案 1 :(得分:0)

您要找的是magic method __call()和函数method_exists()

请执行以下操作:

 public function __call($name, $arguments) {
      if(!method_exists($this, $name)) {
        echo "Method does not exist [called method '$name' with parameters". implode(', ', $arguments). "]\n";
      }
  }