Yii2从类内访问类

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):

我试图在我想要搜索的类中使用findOn。这是可能的还是有更好的方法

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;
}