特征的有效用途

时间:2013-09-28 11:49:09

标签: php oop

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

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

每次我想要设置时我想要做的是

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

为了实现这一点,我现在将此代码放在我的AbstractServiceAbstractView

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

这只是一点点的代码重复,但我仍然不愿意,所以在这里使用特征是正确的选择吗?

1 个答案:

答案 0 :(得分: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
?>

DEMO