【问题标题】:Abstract class in php calling its own static method ($this vs self)php中的抽象类调用自己的静态方法($this vs self)
【发布时间】:2015-12-22 18:40:25
【问题描述】:

当我调用它自己的静态函数时,我想知道抽象 php 类中哪个关键字是正确的。

这是简化的代码,我已经测试了这两个关键字 - 两者都有效,但哪一个在技术上是正确的?

<?php
abstract class B extends A{
    function a(){
        self::b("test"); //'self::' vs '$this->'
    }

    static function b($string){
        echo "test";
    }
}
?>

据我了解,如果函数是静态的,它应该在自己的类中使用 self 来调用静态函数。此外,抽象意味着不能有该类的实例,所以 $this 不会是无效的,即使它在没有警告的情况下工作?

谢谢

这个问题与可能的重复问题不同,因为我使用的抽象类不能有自己的实例。我理解 self 和 this 之间的区别,但是在这种特定情况下使用哪一个是我试图找出的,因为这两种情况都有效。

【问题讨论】:

标签: php static this abstract self


【解决方案1】:

使用self,类是否为abstract都一样。 $this 用于该类的一个实例,如果它已通过具体子类实例化,则它也适用于 abstract 类。

【讨论】:

  • 太棒了。我在实例化的子类中和静态地使用该函数 b(),所以我想使用 self:: 将是最安全的。
猜你喜欢
  • 2012-12-03
  • 2011-03-29
  • 1970-01-01
  • 2012-06-25
  • 1970-01-01
  • 2011-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多