为什么我不能使用$this->static::PK ?


Why can't I use $this->static::PK

我正在尝试编写一个处理表单/数据库连接的类。

我的计划是让每个模型类扩展一个具有基本crud功能的底层类。

我将表名和主键名存储在静态常量PK &表。

问题是我不能访问主键名称与以下不产生'Paamayim Nekudotayim'错误。

$this->static::PK

我可以这样做:

$pk = static::PK
$this->$pk

我甚至可以这样做:

$this->fields[static::PK]

,

$this->static::PK

似乎不工作

有任何想法、评论等,非常欢迎。

我猜这个结构是模糊的,解释器不知道该怎么处理它,因此解析错误。换句话说,它不知道你是不是这个意思:

$s = $this->static;
$s::PK;

或:

$pk = static::PK;
$this->$pk;

两者都是有效的,但是工作方式非常不同(你可以想象)。

将常量访问用花括号括起来就可以了:

$this->{static::PK}