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

Yii2 custom component not recognizing getter or setter properties?

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

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

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

我收到以下错误:

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

这是 class 的部分片段:

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 方法识别 属性?

你应该简单地使用:

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

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

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

阅读更多:http://www.yiiframework.com/doc-2.0/guide-concept-properties.html