问题描述
在 PHP 中,抽象类是否可以访问下面类的常量?
例如,我可以在 Generic 中分解 getName 吗?
ctx.driverClassName=org.sqlite.JDBC
ctx.jdbcUrl=jdbc:sqlite:/path/to/db/file.db
谢谢
解决方法
这就是 parentClose
和 self::
之间的区别所在。有关更多信息,请参见 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;
}
}