PHP trait 不能声明一个常量,但是是否可以使用 DocComment(或其他方式)声明一个常量,如果使用该 trait 的类定义了该 trait 可能“使用”它?
例如,假设一个类Book
是绑定到books
表的模型。该框架要求将表定义为TABLE
常量:
class Books extends Model
{
const TABLE = 'books';
}
创建模型时,我的 IDE 会自动完成TABLE
常量,因为它是在Model
. 精彩的。
现在,假设我有一个称为Sluggable
trait 的 trait,它可以帮助开发人员管理书的 URL slug(例如treasure-island
),其中一个配置选项是是否自动调整书名。说这是由AUTOMATIC_SLUGS
常数控制的。
trait Sluggable {
public function generateSlug()
{
if (defined('static::AUTOMATIC_SLUGS') && static::AUTOMATIC_SLUGS) {
// do the thing
}
}
}
显然,特征不能定义AUTOMATIC_SLUGS
常量,因为这是不允许的,但是 IDE 不能建议或以其他方式验证AUTOMATIC_SLUGS
常量。所以我的模型Books
现在有一个警告(在我的 IDE 中)告诉我AUTOMATIC_SLUGS
没有使用:
class Books extends Model
{
use Sluggable;
const TABLE = 'books';
// IDE complains about this constant
const AUTOMATIC_SLUGS = true;
}
有没有办法让我 - 在特性上,并且不重构以使用静态属性 - 声明Sluggable
将检查一个调用的常量AUTOMATIC_SLUGS
并让 IDE 建议它/不认为它没用?