KUMAKURA Yousuke
kumak****@isite*****
2005年 10月 19日 (水) 17:55:23 JST
熊倉です。 Controller.class.php 内で行われる base.ini を扱う処理なのですが、現在 core ディレクトリ内にも base.ini が提供されているので、それをデフォルト で使用することを前提にした上で、config ディレクトリでの base.ini にあた る設定ファイルの振舞いを変更してはどうかなというお話です。(長いですが) いきなり diff を示すのもアレですが、変更内容のサンプルをば。 @@ -105,6 +105,10 @@ function &_createDIContainer() { $log =& LogFactory::getLog(); + if (!defined('BASE_INI')) { + define('BASE_INI', dirname(__FILE__) . '/base.ini'); + } + if (!@file_exists(BASE_INI)) { $log->fatal("設定ファイルが存在しません", "Controller#_createDIContainer"); return; @@ -112,6 +116,14 @@ $config = parse_ini_file(BASE_INI, TRUE); + if (defined('PLUGINS_INI') + && @file_exists(PLUGINS_INI) + ) { + $config = array_merge($config, + parse_ini_file(PLUGINS_INI, TRUE) + ); + } + if (count($config) < 1) { $log->fatal("設定ファイルが不正です", "Controller#_createDIContainer"); return; まず core ディレクトリ内に今も存在している base.ini を使用して、config のリスト ($config) を作成するようにします。 次に、config ディレクトリに PLUGINS_INI (名前適当) にあたる設定ファイル が存在していれば、先に作成した config リスト とマージします。 PLUGINS_INI にあたるファイルがなければ、今までどおりの動作です。 つまり config/base.ini が必要なくなります。 仮に、config ディレクトリ内に PLUGINS_INI = plugins.ini というファイル があって、 [ConfigUtils] name = ConfigUtils path = path/to/ConfigUtils.class.php とだけ記述していたのであれば、core 処理内で使用される ConfigUtils は core/ConfigUtils.class.php から path/to/ConfigUtils.class.php に上書きさ れて使用することになります。残りはデフォルトのものが使用されます。 この変更によって、通常ユーザが意識しなければならないファイルが減少するだ けでなく、機能変更 (使用するファイルの変更) できる環境の明示化が行えるの ではないかと思います。 現在の内容でも、機能変更したいユーザは config/base.ini をいじれば可能な のですが、core/base.ini が存在しているので、いっそこういう形に変更するの はどうでしょうか。 この変更に加えて、拡張機能を設置するルール (場所、ネーミング) なんかを決 めていただけると、好き勝手やらせてもらっている私は嬉しいです ;) (core/extension/<name>/ConfigUtils.class.php に置く、とか) 受入口があれば、今後も外部パッケージの作成者が増えるんじゃないでしょうか。 ・より機能豊富・だけど太っちょ core ・最小機能・超軽量 core など色々レパートリーも。。。管理をどうするかですが。