我知道有之间的差异static::,并self::在这个例子类似(从/sf/answers/952960291/)
<?php
class One
{
const TEST = "test1";
function test() { echo static::TEST; }
}
class Two extends One
{
const TEST = "test2";
}
$c = new Two();
$c->test();
Run Code Online (Sandbox Code Playgroud)
返回测试2时static::TEST被使用和测试1时self::TEST使用.但它在使用时也会返回test2$this::TEST.
static::TEST可以在静态方法中使用,而$this::TEST在使用之前需要一个实例(因此在静态方法中不可用).
但是如果一个人不能$this::在静态方法中使用,static::可以在非静态方法中使用(如示例中所示).
那么,static ::和$ this ::在非静态方法中有什么区别?
可选的完整测试
<?php
abstract class AOne
{
const TEST = "test1";
abstract public function test();
}
class OneStatic …Run Code Online (Sandbox Code Playgroud)