使用PHP 5.3中的实例方法的奇怪结果

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了使用PHP 5.3中的实例方法的奇怪结果脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
知道下面的例子是如何实际工作的,以及如何能够动态地做这样的事情.使用call_user_func或call_user_func_array不允许这种情况发生.

<?PHP
class PErson
{
    public $name = "George";

    public function say_hi()
    {
            return ExtraMethods::hi();
    }
}

class ExtraMethods
{
    public function hi()
    {
            return "Hi,".$this->name;
    }
}

$george = new Person();
echo $george->say_hi();
?>

应该导致:

Hi,George

想知道为什么实例方法hi不仅可以静态调用(不会感到惊讶,这可能发生在PHP中),但为什么我能够使用$this

解决方法

manual

所以,根据第二部分,按设计.请记住它虽然使用了实际的对象实例(换句话说,如果你添加public $name =“SomethingElse”;对于ExtraMethods,结果仍然是Hi,George).

静态调用方法不是正确的编码,但PHP会原谅您,并且只发出严格错误

"Strict Standards: Non-static method ExtraMethods::hi() should not be called statically,assuming $this From incompatible context in ..."

当然,在这种情况下,只是将对象作为参数传递将更加清晰和可取.

脚本宝典总结

以上是脚本宝典为你收集整理的使用PHP 5.3中的实例方法的奇怪结果全部内容,希望文章能够帮你解决使用PHP 5.3中的实例方法的奇怪结果所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。