Yii2自定义组件无法识别getter或setter属性?

时间:2015-09-23 18:20:19

标签: object properties yii2 components

我有一个处理应用程序选项的自定义组件。

出于某种原因,当我访问这样的方法时:

Yii::$app->option->user('setting_name');

我收到以下错误:

Calling unknown method: app\models\Option::user()

以下是该类的部分片段:

namespace app\models;

use Yii;
use yii\base\Component;

class Option extends Component
{

    public function getUser($key)
    {

        $options = self::getAllOptions('user');
        return $options[$key];

    }

    public function setUser($key, $value)
    {

        $return = self::getAllOptions('user', true);
        $model = $return['model'];
        $options = $return['options'];
        // update the specific option
        $options[$key] = $value;
        self::setAllOptions('user', $options, $model);

    }

}

以下是应用程序配置中的组件注册:

...
'components' => [
    'option' => [
        'class' => 'app\models\Option',
    ],
],
...

为什么不使用getter和setter方法识别属性?

1 个答案:

答案 0 :(得分:1)

您应该使用:

Yii::$app->option->getUser('setting_name');

您的getUser()setUser()函数不是getter / setter函数,因为getter没有任何参数,并且setter只有一个参数。

即使它是一个有效的getter,你也不能像这样使用它,getter定义的属性可以像类变量一样使用,而不是函数!

了解详情:http://www.yiiframework.com/doc-2.0/guide-concept-properties.html