From tsujioka @ m-s.co.jp Mon Nov 26 14:16:49 2007 From: tsujioka @ m-s.co.jp (Kuniharu Tsujioka) Date: Mon, 26 Nov 2007 14:16:49 +0900 Subject: [Codeigniter-users] =?iso-2022-jp?b?GyRCJDUkcyQrJDckXiQ3JD8bKEI=?= =?iso-2022-jp?b?GyRCISMbKEI=?= Message-ID: <00bc01c82feb$8c6f8d00$1801a8c0@Graph> よろしくお願いいたします。 Kunitsuji -------------- next part -------------- HTMLの添付ファイルを保管しました... URL: http://lists.sourceforge.jp/mailman/archives/codeigniter-users/attachments/20071126/09eca650/attachment.html From ando @ neo-navi.net Mon Nov 26 23:39:54 2007 From: ando @ neo-navi.net (Kenichi Ando(Neo,Inc)) Date: Mon, 26 Nov 2007 23:39:54 +0900 Subject: [Codeigniter-users] =?iso-2022-jp?b?GyRCJTMlcyVIJW0hPCVpITwbKEI=?= =?iso-2022-jp?b?GyRCJE4lMyVzJTklSCVpJS8lPyRLJEQkJCRGGyhC?= Message-ID: <20071126233928.827C.ANDO@neo-navi.net> bossatamaです。 コントローラーのコンストラクタについて考えを標準化しようと 思います。 通常は のindexで動きます。 URIは、 www.hoge.com/index.php/blog/ または、www.hoge.com/index.php/blog/index となります。 コンストラクタを使うと、 コンストラクタ(今回はPHP4で)は、 オブジェクトの生成時に自動的にコールされる特殊なメンバ関数。 CIマニュアルでは、ローカルなコンストラクタは、親コントローラクラスの コンストラクタを上書きしてしまうので、手動で親コントローラクラスの コンストラクタを呼び出す必要がある。(parent::Controller();) とあります。また、 コンストラクタはインスタンス化されるときに、初期値をセットする必要が ある場合や既定の処理を実行する場合に便利です。コンストラクタは値を返す ことができませんが、既定の処理を実行することができます。 とあります。 bossatama的見解では、ローカルコンストラクタでは、parent::Controller(); は宣言するのもはもちろん、ヘルパー関数やDBのロード宣言をここで行う。 index()だけでは済まない大きめのプログラムを作る場合、特に、同じファイル 内で、共通して使用するものがある場合は、ローカルコンストラクタを必ず定義 した方がいいと思います。 ローカルContorllerクラスの親クラスは、libraries/Controller.phpにいます。 コントローラークラスはCI_Baseの子クラスです。 CI_Baseはcodeigniter/Base4.php(for PHP4)にいます。 CI_Baseは、CI_Loaderの子クラスです。 CI_Loaderはlibraries/Loader.phpにいます。 オーバーライドしまくりです。 ローカルなコンストラクタは親をオーバーライドするので、 parent::Controller();をしないケースは親を無視します。 このケースはどういった使い方があるのか?と思います。 ========================================= CodeIgniter Users Group in Japan bossatama http://codeigniter.jp/ ========================================= From ando @ neo-navi.net Tue Nov 27 17:35:29 2007 From: ando @ neo-navi.net (Kenichi Ando(Neo,Inc)) Date: Tue, 27 Nov 2007 17:35:29 +0900 Subject: [Codeigniter-users] =?iso-2022-jp?b?GyRCRnxLXDhsSEc6bkAuJEsbKEI=?= =?iso-2022-jp?b?GyRCJEQkJCRGGyhC?= Message-ID: <20071127173014.5376.ANDO@neo-navi.net> bossatamaです。 日本語版作成に関してまとめてみました。 日本語版作成作業が必要、不必要で言うなら「必要」だと思います。 1.scafolding utf-8にヘッダー出力及びメニューの日本語化 2.DB-driver.php MySQLの(utf-8/euc-jp/Shift-JIS)のセットネーム 3.ヘルパー関数の日本語対応 word_limiter() character_limiter() のようなヘルパーは日本語(2バイト)では正常に動作しません。 4.Validationクラスの日本語対応 min_length max_length mb_strlen化しないとだめでしょうね。 配布に関しては、本来は本家でしょうね。 しかしそうも言っていられません。 本家については現在問い合わせ中です。 bossatama From ando @ neo-navi.net Tue Nov 27 18:16:09 2007 From: ando @ neo-navi.net (Kenichi Ando(Neo,Inc)) Date: Tue, 27 Nov 2007 18:16:09 +0900 Subject: [Codeigniter-users] =?iso-2022-jp?b?GyRCRWo5RkBoJE40VjBjJCQbKEI=?= =?iso-2022-jp?b?GyRCJF4kNyQ/ISMbKEI=?= Message-ID: <20071127181329.5386.ANDO@neo-navi.net> bossamataです。 Re: [Codeigniter-users] [Codeigniter-book] CodeIgniter vs. CakePHP Tue, 27 Nov 2007 18:01:53 +0900 は間違えて、こちらに流しました。 申し訳ございません。 bossatama From ando @ neo-navi.net Tue Nov 27 18:29:33 2007 From: ando @ neo-navi.net (Kenichi Ando(Neo,Inc)) Date: Tue, 27 Nov 2007 18:29:33 +0900 Subject: [Codeigniter-users] =?iso-2022-jp?b?GyRCRnxLXDhsSEc6bkAuJEsbKEI=?= =?iso-2022-jp?b?GyRCJEQkJCRGGyhC?= In-Reply-To: <474BDCDA.4050200@tktools.jp> References: <20071127173014.5376.ANDO@neo-navi.net> <474BDCDA.4050200@tktools.jp> Message-ID: <20071127182401.538B.ANDO@neo-navi.net> bossatamaです。 On Tue, 27 Nov 2007 18:01:14 +0900 木下 敏夫 wrote: > 木下です。 > > 例えばGeeklogでは > mb_系のコードに単純に置き換えてしまうと対応していないサーバーの場合に > 問題になるので下記のようなmb_系と置き換えられるようなコード群を詰め込んだ > lib-mbyte.php というファイルが用意されていて共通プログラムの最初の方で > 読み込む様になっています。 > なるほど。非常に参考になります。 抜粋頂き、ありがとうございました。 > > ---------------------------------------------------------------- > // replacement functions for UTF-8 functions > function MBYTE_checkEnabled() { > static $mb_enabled; > if (function_exists( 'mb_eregi_replace' )) { > $mb_enabled = mb_internal_encoding("UTF-8"); > } else { > $mb_enabled = false; > } > return $mb_enabled; > } > > > function MBYTE_strlen($str) { > static $mb_enabled; > if (!isset($mb_enabled)) { > $mb_enabled = MBYTE_checkEnabled(); > } > if ($mb_enabled) { > $result = mb_strlen($str); > } else { > $result = strlen($str); > } > return $result; > } > > function MBYTE_substr($str, $start, $length = NULL) { > static $mb_enabled; > if (!isset($mb_enabled)) { > $mb_enabled = MBYTE_checkEnabled(); > } > if ($mb_enabled) { > if( $length === NULL ) > { > $result = mb_substr($str, $start); > } else { > $result = mb_substr($str, $start, $length); > } > } else { > if( $length === NULL ) > { > $result = substr($str, $start); > } else { > $result = substr($str, $start, $length); > } > } > return $result; > } > ---------------------------------------------------------------- > > > また、ZenCartの場合は mbstring emulator > https://sourceforge.jp/projects/mbemulator/ > も同梱して日本語処理が確実に行えるようになっています。 > > 処理速度を考えると mb系の関数が定義されていない時だけ > mbstring emulator を読み込んで処理するようにコードを追加した上で > mb_系に書き換え必要のある関数を順次書き換える後者の形式の方が > 適しているかもしれません。 mbstring emulator知りませんでした。 CIにはスピードを計るベンチマークツールが標準で入っていますので、 検証したら面白いかもしれないですね。 CIのプロファイリング http://userguide.cilab.info/general/profiling.html 情報ありがとうございました。 > -- > 木下敏夫 > http://www.tktools.jp/ > mailto:kino @ tktools.jp bossatama http://codeigniter.jp/ From ando @ neo-navi.net Fri Nov 30 02:24:43 2007 From: ando @ neo-navi.net (Kenichi Ando(Neo,Inc)) Date: Fri, 30 Nov 2007 02:24:43 +0900 Subject: [Codeigniter-users] =?iso-2022-jp?b?GyRCJTMlIiVpJSQlViVpJWobKEI=?= =?iso-2022-jp?b?GyRCJE4lKiE8JVAhPCVpJSQlSRsoQg==?= Message-ID: <20071130015017.A38B.ANDO@neo-navi.net> bossatamaです。 コアライブラリのオーバーライドについて、ユーザ領域が優先されるという CodeIgniterの素晴らしい特性を利用した記事のドラフトができました。 http://codeigniter.biz/?p=89 日本語版の必要性については、別で行うとして、 今回はformで値の入力後のValidationクラスでの問題、 min_length(最小文字数) max_length(最大文字数) は日本語NGです。PHPプログラムなら問題箇所をすぐに探し出し、解決すること ができます。 ところが、問題解決でコアライブラリに手を加えてしまっても良いのか?という 大きな問題があります。 問題に遭遇し、解決策の標準手順として、指南を記していきたいと考えています。 ・コアライブラリのオーバーライド ・フック ・コアそのものの拡張 ・プラグイン など方法がたくさんあり、我々ユーザ会が一体どのsituationで どんな方法使って解決していくべきなのかを検証していけたら幸いかと思います。 例えば、今回のValidationはプラグインでも解決できる問題ですが、 マニュアルには、 「プラグインは、コミュニティで作成され、共有されること」との意図が 隠されています。 記事はあらだらけです。ご指摘ください。 //bossatama From kenji @ club.h14m.org Fri Nov 30 09:52:40 2007 From: kenji @ club.h14m.org (Kenji) Date: Fri, 30 Nov 2007 09:52:40 +0900 Subject: [Codeigniter-users] =?iso-2022-jp?b?GyRCJTMlIiVpJSQlViVpJWobKEI=?= =?iso-2022-jp?b?GyRCJE4lKiE8JVAhPCVpJSQlSRsoQg==?= In-Reply-To: <20071130015017.A38B.ANDO@neo-navi.net> References: <20071130015017.A38B.ANDO@neo-navi.net> Message-ID: <20071130095240.eb305442.kenji@club.h14m.org> Kenji です。 On Fri, 30 Nov 2007 02:24:43 +0900 "Kenichi Ando(Neo,Inc)" wrote: > bossatamaです。 > > コアライブラリのオーバーライドについて、ユーザ領域が優先されるという > CodeIgniterの素晴らしい特性を利用した記事のドラフトができました。 > > http://codeigniter.biz/?p=89 Sorry, no posts matched your criteria. と表示され読めませんが(ログインしても)。 // Kenji From ando @ neo-navi.net Fri Nov 30 12:56:40 2007 From: ando @ neo-navi.net (Kenichi Ando(Neo,Inc)) Date: Fri, 30 Nov 2007 12:56:40 +0900 Subject: [Codeigniter-users] =?iso-2022-jp?b?GyRCJTMlIiVpJSQlViVpJWobKEI=?= =?iso-2022-jp?b?GyRCJE4lKiE8JVAhPCVpJSQlSRsoQg==?= In-Reply-To: <20071130095240.eb305442.kenji@club.h14m.org> References: <20071130015017.A38B.ANDO@neo-navi.net> <20071130095240.eb305442.kenji@club.h14m.org> Message-ID: <20071130125554.633A.ANDO@neo-navi.net> bossatamaです。 On Fri, 30 Nov 2007 09:52:40 +0900 Kenji wrote: > Kenji です。 > > > On Fri, 30 Nov 2007 02:24:43 +0900 > "Kenichi Ando(Neo,Inc)" wrote: > > > bossatamaです。 > > > > コアライブラリのオーバーライドについて、ユーザ領域が優先されるという > > CodeIgniterの素晴らしい特性を利用した記事のドラフトができました。 > > > > http://codeigniter.biz/?p=89 > > Sorry, no posts matched your criteria. > > と表示され読めませんが(ログインしても)。 すいませんでした。 http://codeigniter.biz/archives/89 > > > // Kenji bossatama From ando @ neo-navi.net Fri Nov 30 15:19:41 2007 From: ando @ neo-navi.net (Kenichi Ando(Neo,Inc)) Date: Fri, 30 Nov 2007 15:19:41 +0900 Subject: [Codeigniter-users] =?iso-2022-jp?b?GyRCJTMlIiVpJSQlViVpJWobKEI=?= =?iso-2022-jp?b?GyRCJE4lKiE8JVAhPCVpJSQlSRsoQg==?= In-Reply-To: <474F9C2F.2000402@tktools.jp> References: <20071130125554.633A.ANDO@neo-navi.net> <474F9C2F.2000402@tktools.jp> Message-ID: <20071130150227.6340.ANDO@neo-navi.net> bossatmaです。 On Fri, 30 Nov 2007 14:14:23 +0900 木下 敏夫 wrote: > 木下です。 > > このコアライブラリのオーバーライドは下記の様な多重化することは可能なのでしょうか? > > コアライブラリ -> 日本語対応用標準オーバーライド -> ユーザーによるオーバーライド 全く同じ関数をさらにオーバーライドした場合、優先順位がどうなのかのデータ がないので、現状では無理かもしれません。(不定) $this->load->library('validation'); を $this->load->library('validation_user'); などと定義しまえば問題ないのですが、少々よろしくないですよね。 日本語対応用標準オーバーライドはコアライブラリではないので、こちらを編集 するしかないでしょうか。そうした場合に、日本語対応用標準と位置づける には少々無理があるかもしれないですね。 My_などとユーザ独自ライブラリを追加する場合はなんら問題はないかもしれま せんが、ご指摘の3多重化で制限が発生してしまいますね。 これらはCIのポリシーに大きく違反するんではないかと思われます。 ただ、サイトに上げてある記事「ライブラリの上書き」は、現状の日本語版 不在の上での、解決策の1つを提示したに過ぎません。 日本語版については、結局コアのカスタマイズが必要かもしれないですね。 ご指摘ありがとうございました。もう少し正確に調べてまた投稿致します。 > > -- > 木下敏夫 > http://www.tktools.jp/ > mailto:kino @ tktools.jp bossatama From kenji @ club.h14m.org Fri Nov 30 16:45:15 2007 From: kenji @ club.h14m.org (Kenji) Date: Fri, 30 Nov 2007 16:45:15 +0900 Subject: [Codeigniter-users] =?iso-2022-jp?b?GyRCJTMlIiVpJSQlViVpJWobKEI=?= =?iso-2022-jp?b?GyRCJE4lKiE8JVAhPCVpJSQlSRsoQg==?= In-Reply-To: <20071130150227.6340.ANDO@neo-navi.net> References: <20071130125554.633A.ANDO@neo-navi.net> <474F9C2F.2000402@tktools.jp> <20071130150227.6340.ANDO@neo-navi.net> Message-ID: <20071130164515.4fb9714b.kenji@club.h14m.org> Kenji です。 # 木下さんの投稿が流れて来てないようですが... On Fri, 30 Nov 2007 15:19:41 +0900 "Kenichi Ando(Neo,Inc)" wrote: > bossatmaです。 > > On Fri, 30 Nov 2007 14:14:23 +0900 > 木下 敏夫 wrote: > > > 木下です。 > > > > このコアライブラリのオーバーライドは下記の様な多重化することは可能なのでしょうか? > > > > コアライブラリ -> 日本語対応用標準オーバーライド -> ユーザーによるオーバーライド > > 全く同じ関数をさらにオーバーライドした場合、優先順位がどうなのかのデータ > がないので、現状では無理かもしれません。(不定) 多重化は無理みたいですね。 Common.php // If the requested class does not exist in the application/libraries // folder we'll load the native class from the system/libraries folder. if (file_exists(APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT)) { require(BASEPATH.'libraries/'.$class.EXT); require(APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT); $is_subclass = TRUE; } else { if (file_exists(APPPATH.'libraries/'.$class.EXT)) { require(APPPATH.'libraries/'.$class.EXT); $is_subclass = FALSE; } else { require(BASEPATH.'libraries/'.$class.EXT); $is_subclass = FALSE; } } // Kenji From kenji @ club.h14m.org Fri Nov 30 17:13:54 2007 From: kenji @ club.h14m.org (Kenji) Date: Fri, 30 Nov 2007 17:13:54 +0900 Subject: [Codeigniter-users] =?iso-2022-jp?b?GyRCJTMlIiVpJSQlViVpJWobKEI=?= =?iso-2022-jp?b?GyRCJE4lKiE8JVAhPCVpJSQlSRsoQg==?= In-Reply-To: <20071130150227.6340.ANDO@neo-navi.net> References: <20071130125554.633A.ANDO@neo-navi.net> <474F9C2F.2000402@tktools.jp> <20071130150227.6340.ANDO@neo-navi.net> Message-ID: <20071130171354.d8ccaa0a.kenji@club.h14m.org> Kenji です。 On Fri, 30 Nov 2007 15:19:41 +0900 "Kenichi Ando(Neo,Inc)" wrote: > 日本語対応用標準オーバーライドはコアライブラリではないので、こちらを編集 > するしかないでしょうか。そうした場合に、日本語対応用標準と位置づける > には少々無理があるかもしれないですね。 > My_などとユーザ独自ライブラリを追加する場合はなんら問題はないかもしれま > せんが、ご指摘の3多重化で制限が発生してしまいますね。 > これらはCIのポリシーに大きく違反するんではないかと思われます。 結構、なやましいですね。 ユーザの拡張を阻害しないように、 コアに修正を入れた日本語版を配布できるのが一番いいのかな と思うようになりました。 EllisLab の返答次第?でしょうか。 > ただ、サイトに上げてある記事「ライブラリの上書き」は、現状の日本語版 > 不在の上での、解決策の1つを提示したに過ぎません。 > > 日本語版については、結局コアのカスタマイズが必要かもしれないですね。 // Kenji From kenji @ club.h14m.org Fri Nov 30 17:52:55 2007 From: kenji @ club.h14m.org (Kenji) Date: Fri, 30 Nov 2007 17:52:55 +0900 Subject: [Codeigniter-users] =?iso-2022-jp?b?GyRCRnxLXDhsSEcbKEIgQ29udGVu?= =?iso-2022-jp?b?dC1UeXBlOhskQiVYJUMlQCROPVBOTyRLJEQkJCRGGyhC?= Message-ID: <20071130175255.727180ba.kenji@club.h14m.org> Kenji です。 CI は、通常ページでは、Content-Type:ヘッダを吐かないようです。 HTTPヘッダは、 Content-Type: text/html; charset=UTF-8 のように文字コードを含めて吐きたいところです。 これは、出力クラスで、以下のようにすればいいですが、 毎回、コントローラに書くのは面倒です。 $this->output->set_header("Content-Type: text/html; charset=UTF-8"); こんなのは、どこで処理させるのがいいでしょうかね? // Kenji From kino @ tktools.jp Fri Nov 30 21:27:05 2007 From: kino @ tktools.jp (=?ISO-2022-JP?B?GyRCTFoyPCEhSVJJVxsoQg==?=) Date: Fri, 30 Nov 2007 21:27:05 +0900 Subject: [Codeigniter-users] =?iso-2022-jp?b?GyRCJTMlIiVpJSQlViVpJWobKEI=?= =?iso-2022-jp?b?GyRCJE4lKiE8JVAhPCVpJSQlSRsoQg==?= In-Reply-To: <20071130164515.4fb9714b.kenji@club.h14m.org> References: <20071130125554.633A.ANDO@neo-navi.net> <474F9C2F.2000402@tktools.jp> <20071130150227.6340.ANDO@neo-navi.net> <20071130164515.4fb9714b.kenji@club.h14m.org> Message-ID: <47500199.5060206@tktools.jp> 木下です。 私の返信の仕方が不味くてMLへは流れていないようでした。 丁度私も同じ箇所を見つけて投稿しようと思っていたところですが セキュリティアップデート等のことを考えるとコアの変更はできるだけ避けたいところです。 if (file_exists(APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT)) { require(BASEPATH.'libraries/'.$class.EXT); require(APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT); $is_subclass = TRUE; } else { if (file_exists(APPPATH.'libraries/'.$class.EXT)) { require(APPPATH.'libraries/'.$class.EXT); $is_subclass = FALSE; } else { require(BASEPATH.'libraries/'.$class.EXT); $is_subclass = FALSE; } } を if (file_exists(APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT)) { if (file_exists(APPPATH.'libraries/'.$class.EXT)) { require(APPPATH.'libraries/'.$class.EXT); } else { if (file_exists(PATCH.'libraries/'.$class.EXT)) { require(PATCH.'libraries/'.$class.EXT); } else { require(BASEPATH.'libraries/'.$class.EXT); } } require(APPPATH.'libraries/'.config_item('subclass_prefix').$class.EXT); $is_subclass = TRUE; } else { if (file_exists(APPPATH.'libraries/'.$class.EXT)) { require(APPPATH.'libraries/'.$class.EXT); $is_subclass = FALSE; } else { if (file_exists(PATCH.'libraries/'.$class.EXT)) { require(PATCH.'libraries/'.$class.EXT); $is_subclass = FALSE; } else { require(BASEPATH.'libraries/'.$class.EXT); $is_subclass = FALSE; } } } とでもして それ以外の緊急のセキュリティパッチや各国での言語依存対応等の対応をPATCH ディレクトリ内に配置。 ユーザーがオーバーライドするのは APPPATH で 但し、ユーザーに対してはセキュリティ対策等が反映されやすいように出来るだけ MY_ 等のサブクラスとして作成することを促がす。 というのはいかがでしょ。 セキュリティ対策やバージョンアップ用の一時適応をPATCHディレクトリ行えば 問題が発生した場合はそのファイルを削除するだけで良いので、対応も迅速に行えるようになるはず。 -- 木下敏夫 http://www.tktools.jp/ mailto:kino @ tktools.jp