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

Back to archive index

Hawk w3l_admin****@hawk*****
2005年 10月 20日 (木) 18:25:26 JST


Hawkです。

気が回らなくてすいません、まさしく私が
[Maple-dev: 65] Re: インジェクションの簡素化
で書いたような「イメージの違い」を並列・共存していくために、
こちらの提案をなされたんですよね……失礼致しました。
(これすら思い違いだったらどうしようもないですが)。

確かに、コアユーザー向けの拡張ポイントを
早めに確立してしまった方が良いのかも知れません。
誰もが万人向けの拡張をしたいわけじゃないですからね。
そういう拡張を安全に組み込めるのは、
DIContainerを中心に据えたMapleの強みだと思いますし。


KUMAKURA Yousuke wrote:
> 熊倉です。
> 
> 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 mailing list
> Maple****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/maple-dev
> 


-- 
Hawk : {
  web site : http://www.hawk.34sp.com/ ,
  diary    : http://d.hatena.ne.jp/hawkring/
}




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