[Codeigniter-users] はじめまして

Back to archive index

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




Codeigniter-users メーリングリストの案内
Back to archive index