下面的常量的PHP抽象类访问

问题描述

PHP 中,抽象类是否可以访问下面类的常量?

例如,我可以在 Generic 中分解 getName 吗?

ctx.driverClassName=org.sqlite.JDBC
ctx.jdbcUrl=jdbc:sqlite:/path/to/db/file.db

谢谢

解决方法

这就是 parentCloseself:: 之间的区别所在。有关更多信息,请参见 here

static::

会导致

abstract class Generic {
    protected const NAME = "Generic";

    public function getName(): string {
        return self::NAME;
    }
}

class MorePreciseA extends Generic {
    protected const NAME = "More Precise A";
}

class MorePreciseB extends Generic {
    protected const NAME = "More Precise B";

}


$a = new MorePreciseA();
$b = new MorePreciseB();

var_dump($a->getName(),$b->getName());

但是如果你像这样替换 // string(7) "Generic" // string(7) "Generic" 实现

Generic

然后它会输出

abstract class Generic {
    public function getName(): string {
        return static::NAME;
    }
}