我有一个处理应用程序选项的自定义组件。
出于某种原因,当我访问这样的方法时:
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方法识别属性?
答案 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