Kenji Suzuki
kenji****@gmail*****
2011年 5月 24日 (火) 11:46:09 JST
Kenji です。 On Tue, 24 May 2011 10:00:25 +0900 Yoshiyuki Okamoto <okamo****@gmail*****> wrote: > お世話になっております。 > 岡本です。 > > > Kenjiさんご返信ありがとうございます。 > > > > \w だとうまく動かない理由がわかりません。 > > 動作しないサンプルコードはありますでしょうか? > ⇒こちらですが、下記のようにValidation Rule に[が含まれる場合に\wだとマッチしないようです。 > callback__check_db[arg1,arg2] なるほど。たぶん、現状の仕様から外れるルール名ですね。 [] で引数を渡すことは想定されていないのでしょう。 もし、CI 本体に取り込んで欲しい場合は、CI での機能追加のフローは、 UserVoice http://codeigniter.uservoice.com/forums/40508-codeigniter-reactor で提案して採用されれば実装されます。 軽微な拡張なので、Bitbucket の issue に type を enhancement で登録しても いいかもしれません。 > > https://bitbucket.org/ellislab/codeigniter-reactor/issue/158/cachephp-save-behavior-depending-on-the > > これですね。バグと思えますので open にしました。 > ⇒こちらですが、まさにこれですね。 > 恥ずかしながら open にするというのはどういう意味でしょうか? この issue の status を open にしたということです。 報告された内容に同意したので状態を open へ進めたということです。 issue への登録は多く、invalid (無効) なものも多いので、 重要性が低いと、それだけ放置されやすくなると思います。 なので、修正して欲しいバグ報告はこのように状態を変更したり 同意するコメントを書き込んだ方が目につきやすくなりますので 修される可能性が高くなるということです。 > 追加ですが、system/libraries/Cache/Cache.phpで > ドライバをmemcached、バックアップアップドライバをfileに指定して、memcachedモジュールのない環境でキャッシュライブラリを使うとエラーとなりました。こちらもバグかと思います。取り急ぎローカル修正済ですが、こちらも共有しますね。 > > system/libraries/Cache/Cache.php の マジックメソッド > public function __get($child) > { > $obj = parent::__get($child); > > if ( ! $this->is_supported($child)) > { > $this->_adapter = $this->_backup_driver; > $obj = parent::__get($this->_backup_driver); > //この行追加。追加しないと$objがNULLで、後続処理で落ちる > } > > return $obj; > } これはバグのようですね。 > > systemフォルダ内を修正したくない場合は、appliecation/ 以下の同じ > > フォルダで継承 > > > > http://codeigniter.jp/user_guide_ja/general/core_classes.html > > http://codeigniter.jp/user_guide_ja/general/creating_libraries.html > > > > ですが、ドライバや core/Common.php は継承したりオーバライドできなかった > > と思います。 > ⇒こちらですが、ありがとうございます。 > 今回思ったのですが、オーバーライドたくさんあるとバージョンアップの時に大変ですね。 > なので、2系にバージョンアップしてできるだけCI標準API使うようにシステム修正しているところです。 まあ、オーバーライドが多くなればバージョンアップ時に、検証したりテストしないと いけない手間は増えるでしょうね。ちょっとしたメソッド追加程度であれば、実際、 ほとんど問題はないとは思いますが。 > ただし、Form_validationクラスについてはPOST値に依存していて、バッチ等のファイル入力で使えない為、大幅に書き換えましたが。 大幅に違うなら別のライブラリにした方がいいかもしれません。 // Kenji > 以上です。 > 取り急ぎお礼と回答まで。 > > > > > > 2011年5月23日19:25 Kenji Suzuki <kenji****@gmail*****>: > > Kenji です。 > > > > > > On Wed, 18 May 2011 19:48:55 +0900 > > Yoshiyuki Okamoto <okamo****@gmail*****> wrote: > > > >> はじめまして。 > >> 岡本と申します。 > >> > >> 現在CodeIgniter1.7.2をベースに作られたシステム(WEBとバッチ)を > >> CodeIgniter2.0.2に置き換える作業をしているのですが、 > >> その中で数点バグ?のような内容を発見しました。 > >> > >> 対応はしたのですが、コアに手をいれたくないので、 > >> 本体側に修正依頼をしたいのですが > >> どのようにすればよいか、アドバイスいただけないでしょうか? > >> > >> --------------------------------------------------------------------------------------------------------------------------------- > >> > >> (その1)Form_validationでコールバックのValidation関数がうまく動かない > >> (環境)Windows XP 64bit XAMPP 1.7.4 PHP5.3系 > >> (対応)system/libraries/Form_validation.phpを修正して解決。 > >> 492c492 > >> < if (preg_match("/(callback_\w+)/", implode(' > >> ', $rules), $match)) > >> --- > >> > if (preg_match("/(callback_.+)/", implode(' ', $rules), $match)) > > > > \w だとうまく動かない理由がわかりません。 > > 動作しないサンプルコードはありますでしょうか? > > > > 他のプラットフォームでも同様に動作しないなら、バグと言えるかもしれませんの > > 本家にバグ報告してみるということも考えられますが。 > > > > > >> --------------------------------------------------------------------------------------------------------------------------------- > >> > >> (その2)Memcacheのキャッシュドライバー読み込み時にエラーが発生。 > >> (環境)CentOS release 5.4 PHP5.2系 > >> (対応)system/libraries/Driver.phpを修正して解決。 > >> 62c62 > >> < $filepath = > >> $path.'libraries/'.$lib_name.'/drivers/'.$class.EXT; > >> --- > >> > $filepath = $path.'libraries/'.ucfirst($lib_name).'/drivers/'.$class.EXT; > > > > 最新のコード <https://bitbucket.org/ellislab/codeigniter-reactor> では、48行目で > > > > $lib_name = ucfirst(strtolower(str_replace('CI_', '', $this->lib_name))); > > > > となっており、修正されているのではないでしょうか? > > > > > >> --------------------------------------------------------------------------------------------------------------------------------- > >> > >> (その3)ControllerでPear::Mailをrequreしたらapacheが強制終了。 > >> 8192番エラー(E_DEPRECATED)発生が関係している??? > >> > >> (環境)Windows XP 64bit XAMPP 1.7.4 PHP5.3系 > >> (対応)system/core/Common.phpを修正して解決。 > >> 444c444 > >> < if ($severity == E_STRICT) > >> --- > >> > if ($severity == E_STRICT || $severity == 8192) > > > > Apache が強制終了するのは、たぶん PHP のバグでしょうね。CI が原因とは言えないでしょうから、 > > CI のバグとするのは無理があるように思います。 > > > > E_DEPRECATED が発生するライブラリの方が問題とも言えると思います。 > > > > > >> --------------------------------------------------------------------------------------------------------------------------------- > >> > >> 以下はバグではないと思いますが、改善したい点です。 > >> > >> (その4)Memcacheのキャッシュドライバーのsaveメソッドで値の上書きができない。 > >> (例) > >> $CI->cache->memcached->save('sess_id', 'value1'); > >> $CI->cache->memcached->save('sess_id', 'value2'); > >> > >> とした場合に、value2がはいらない様子。 > > > > https://bitbucket.org/ellislab/codeigniter-reactor/issue/158/cachephp-save-behavior-depending-on-the > > これですね。バグと思えますので open にしました。 > > > > > >> (対応)上書きしたかったのでCache_memcached.phpに下記の修正をしました。 > >> 67c67,74 > >> < return $this->_memcached->add($id, array($data, > >> time(), $ttl), $ttl); > >> --- > >> > if ($this->_memcached->get($id) === FALSE) > >> > { > >> > return $this->_memcached->add($id, array($data, time(), $ttl), $ttl); > >> > } > >> > else > >> > { > >> > return $this->_memcached->set($id, array($data, time(), $ttl), $ttl); > >> > } > >> > >> --------------------------------------------------------------------------------------------------------------------------------- > >> > >> いまのところ、上記4点についてsystemフォルダ内を修正してしまったのですが、 > >> 修正したくないので、本体修正依頼するか、別の方法で回避したいと考えています。 > > > > systemフォルダ内を修正したくない場合は、appliecation/ 以下の同じ > > フォルダで継承 > > > > http://codeigniter.jp/user_guide_ja/general/core_classes.html > > http://codeigniter.jp/user_guide_ja/general/creating_libraries.html > > > > ですが、ドライバや core/Common.php は継承したりオーバライドできなかった > > と思います。 > > > > > > // Kenji > > > > > >> いきなり長文ですみませんが、アドバイスいただければ幸いです。 > >> > >> _______________________________________________ > >> Codeigniter-users mailing list > >> Codei****@lists***** > >> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users > > > > _______________________________________________ > > Codeigniter-users mailing list > > Codei****@lists***** > > http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users > > > > _______________________________________________ > Codeigniter-users mailing list > Codei****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users