これは私のコードです
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 ではこれが許可されていません)、最初にパスを定義してから、プロパティの配列値の定義を使用します。
これを行うのは正しいですか?より良い解決策はありますか?
PSクラスPathを使用して、各名前空間へのベースパスを指定します(PSR4オートローダーで使用したい)そして、名前空間を登録するためにオートローダーを呼び出すだけではありません。クライアントがパスを変更したい場合、ビジネスロジックを見る必要はありません