0

在我的应用程序中,我有一个Config对象,我的服务层和视图将其作为类属性。任何时候我想要一个配置值我都必须做

$configValue = $this->config->setting('setting.name');

每次我想要一个设置时,我希望能够做的是

$configValue = $this->config('setting.name');

为了做到这一点,我现在把这段代码放在我的里面AbstractServiceAbstractView我有

protected function config($setting) {
    return $this->config->setting($setting);
}

这只是一点点代码重复,但我仍然希望没有它,所以在这里使用特征是正确的选择吗?

4

1 回答 1

3

也许您正在寻找神奇的__invoke功能(需要 5.3+,但由于您使用特征,我假设您有这个):

<?php
    class Config {
        private $config = array(
            'ip'   => '127.0.0.1',
            'port' => 12345
        );

        public function setting($option) {
            if (!empty($this->config[$option])) {
                return $this->config[$option];
            }
            return false;
        }

        public function __invoke($option) {
            return $this->setting($option);
        }
    }

    $config = new Config();
    var_dump($config('ip')); //127.0.0.1
?>

演示

于 2013-09-28T11:52:23.060 回答