在PHP

时间:2015-04-25 08:25:26

标签: php path psr-4

这是我的一段代码

define('BASE_PATH', realpath(__DIR__) . DIRECTORY_SEPARATOR);

define('LIB', BASE_PATH . 'lib' . DIRECTORY_SEPARATOR);
    define('FRAMEWORK', LIB . 'framework' . DIRECTORY_SEPARATOR);
        define('DATABASE', FRAMEWORK . 'database' . DIRECTORY_SEPARATOR);
        define('DATETIME', FRAMEWORK . 'datetime' . DIRECTORY_SEPARATOR);
        define('AUTOLOADER', FRAMEWORK . 'autoloader' . DIRECTORY_SEPARATOR);
        define('FUNCTIONS', FRAMEWORK . 'functions' . DIRECTORY_SEPARATOR);
        define('ROUTER', FRAMEWORK . 'router' . DIRECTORY_SEPARATOR);

define('INC', BASE_PATH . 'inc' . DIRECTORY_SEPARATOR);
define('ADMIN', BASE_PATH . 'admin' . DIRECTORY_SEPARATOR);
define('EXT', BASE_PATH . 'ext' . DIRECTORY_SEPARATOR);
    define('MODULES', EXT . 'modules' . DIRECTORY_SEPARATOR);
    define('PLUGINS', EXT . 'plugins' . DIRECTORY_SEPARATOR);
    define('THEMES', EXT . 'themes' . DIRECTORY_SEPARATOR);

class Path {
    public $paths = array(
        'CMS' => BASE_PATH,
        'CMS\Lib' => LIB,
        'CMS\Framework' => FRAMEWORK,
        'CMS\Framework\Database' => DATABASE,
        'CMS\Framework\Datetime' => DATETIME,
        'CMS\Framework\Functions' => FUNCTIONS
    );
}

由于我不能在类Path属性中使用函数甚至连接字符串(PHP不允许这样),我首先定义路径,然后在属性的数组值上使用定义。
< / p>

这样做是对的吗?有没有更好的解决方案?
附:我使用类Path来为每个命名空间提供基本路径(我想在PSR4 Autoloader上使用它) 并且,我不只是调用自动加载器来注册命名空间,因为我认为最好将它分开..所以,如果客户想要改变路径,他就不需要看到业务逻辑

1 个答案:

答案 0 :(得分:0)

您可以创建配置文件,我认为语法更友好

Config files in php