Abstract class in php 调用自己的静态方法 ($this vs self)
Abstract class in php calling its own static method ($this vs self)
我想知道抽象phpclass中哪个关键字是正确的,当我调用它自己的静态函数时
这是简化的代码,我已经测试了两个关键字 - 都有效,但哪一个在技术上是正确的?
<?php
abstract class B extends A{
function a(){
self::b("test"); //'self::' vs '$this->'
}
static function b($string){
echo "test";
}
}
?>
据我了解,如果函数是静态的,它应该在其自身 class 中使用 self 来调用静态函数。此外,抽象意味着不可能有那个 class 的实例,所以 $this 不会是无效的,即使它在没有警告的情况下工作?
谢谢
这个问题与可能的重复问题不同,因为我使用的抽象 classes 不能有自己的实例。我了解 self 和 this 之间的区别,但是在这种特定情况下使用哪个是我试图找出的,因为这两种情况都有效。
使用self
,class是否为abstract
都一样。 $this
是 class 的实例,如果它已通过具体的子 class 实例化,它也适用于 abstract
class。
我想知道抽象phpclass中哪个关键字是正确的,当我调用它自己的静态函数时
这是简化的代码,我已经测试了两个关键字 - 都有效,但哪一个在技术上是正确的?
<?php
abstract class B extends A{
function a(){
self::b("test"); //'self::' vs '$this->'
}
static function b($string){
echo "test";
}
}
?>
据我了解,如果函数是静态的,它应该在其自身 class 中使用 self 来调用静态函数。此外,抽象意味着不可能有那个 class 的实例,所以 $this 不会是无效的,即使它在没有警告的情况下工作?
谢谢
这个问题与可能的重复问题不同,因为我使用的抽象 classes 不能有自己的实例。我了解 self 和 this 之间的区别,但是在这种特定情况下使用哪个是我试图找出的,因为这两种情况都有效。
使用self
,class是否为abstract
都一样。 $this
是 class 的实例,如果它已通过具体的子 class 实例化,它也适用于 abstract
class。