Php 为什么可以';t我使用$this->;静态::PK

Php 为什么可以';t我使用$this->;静态::PK,php,static,Php,Static,我正在尝试编写一个用于处理orm/数据库连接的类 我的计划是让每个模型类扩展一个具有基本crud功能的底层类 我将表名和主键名存储在静态常量中,作为PK&table 问题是,如果不生成“Paamayim-Nekudotayim”错误,我无法使用以下内容访问主键名称 $this->static::PK 我可以这样做: $pk=static::pk $this->$pk 我甚至可以做到: $this->fields[static::PK] 但是 $this->static::PK 只是好像不管用 欢

我正在尝试编写一个用于处理orm/数据库连接的类

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

我将表名和主键名存储在静态常量中,作为PK&table

问题是,如果不生成“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}

避免使用诸如“static”之类的保留字。啊,对不起,我收回了这句话——它在我的代码中拾取了同一事物的第二个实例~谢谢你!!!