[Maple-dev: 64] Controller 内 base.ini の振る舞い

Back to archive index

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
など色々レパートリーも。。。管理をどうするかですが。





Maple-dev メーリングリストの案内
Back to archive index