Yii2从类内访问类
我试图在我想要搜索的类中使用findOn。这是可能的还是有更好的方法Yii2从类内访问类,yii2,Yii2,我试图在我想要搜索的类中使用findOn。这是可能的还是有更好的方法 class CmsSettings extends ActiveRecord { public static function tableName() { return 'cms_settings'; } //not working public static function run(){ $results = CmsSettings::findOn(1):
class CmsSettings extends ActiveRecord
{
public static function tableName()
{
return 'cms_settings';
}
//not working
public static function run(){
$results = CmsSettings::findOn(1):
return $results;
}
// not working
public static function check(){
$results = CmsSettings::findOn(1):
if($results->somesetting){
return true;
}
}
}
使用self
提及
您可能应该使用
static::findOne(1)
。通过使用self
或CmsSettings
您只是对返回的类型进行硬编码,这会降低此类的灵活性,并在继承时给您带来意外的结果。例如,如果创建扩展类的子模型:
class CmsSettings extends ActiveRecord {
public static function run() {
$results = CmsSettings::findOne(1);
return $results;
}
// ...
}
class ChildCmsSettings extends CmsSettings {
}
您希望ChildCmsSettings::run()
将返回ChildCmsSettings
的实例。错误-您将获得cms设置
。但是,如果您使用static
编写此方法:
public static function run() {
$results = static::findOne(1);
return $results;
}
您将获得用于调用
run()
-ChildCmsSettings
self
或static
的类实例,您所说的“不工作”是什么意思?
public static function run() {
$results = static::findOne(1);
return $results;
}