我有以下特点:
trait ARCacheableTrait
{
public function instantiate() {
// this will need to call some ActiveRecord methods using parent::
}
}
它的目的是覆盖ActiveRecord
类的instantiate
方法。确保它只应用于此类的正确方法是什么?如果有人试图将它添加到不是或不扩展 ActiveRecord
或什至更好的类,我想抛出一个异常,通过抛出编译时错误来确保类型安全......
最佳答案
您能做的最好的事情就是使用抽象
方法定义来对展示类强加要求:
trait ARCacheableTrait {
public function instantiate() {
parent::foo();
}
abstract public function foo();
}
强制显示类实现一个方法foo
,以确保特征可以调用它。但是,没有办法将特征限制为仅在某个类 层次结构 中显示。如果你想要那样,你可能想要实现一个特定的 ActiveRecord
子类,它实现这个特定的 instantiate
行为而不是使用特征。
关于php - 如何限制某些类的 PHP 特性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24722052/