[Codeigniter-users] はじめまして

Back to archive index

Yoshiyuki Okamoto okamo****@gmail*****
2011年 5月 24日 (火) 10:00:25 JST


お世話になっております。
岡本です。


Kenjiさんご返信ありがとうございます。


> \w だとうまく動かない理由がわかりません。
> 動作しないサンプルコードはありますでしょうか?
⇒こちらですが、下記のようにValidation Rule に[が含まれる場合に\wだとマッチしないようです。
callback__check_db[arg1,arg2]


> 最新のコード <https://bitbucket.org/ellislab/codeigniter-reactor> では、48行目で
>
>        $lib_name = ucfirst(strtolower(str_replace('CI_', '', $this->lib_name)));
>
> となっており、修正されているのではないでしょうか?
⇒こちらですが、ありがとうございます。先程上記URLから最新ソースをDOWNLOADしたので、
確認してみます。

> Apache が強制終了するのは、たぶん PHP のバグでしょうね。CI が原因とは言えないでしょうから、
> CI のバグとするのは無理があるように思います。
>
> E_DEPRECATED が発生するライブラリの方が問題とも言えると思います。
⇒こちらですが、了解です。
こちらはずいぶんはまりました。Pear::MailあたりがE_DEPRECATED発生させてるみたいでした。


> https://bitbucket.org/ellislab/codeigniter-reactor/issue/158/cachephp-save-behavior-depending-on-the
> これですね。バグと思えますので open にしました。
⇒こちらですが、まさにこれですね。
恥ずかしながら open にするというのはどういう意味でしょうか?


追加ですが、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値に依存していて、バッチ等のファイル入力で使えない為、大幅に書き換えましたが。


以上です。
取り急ぎお礼と回答まで。





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 メーリングリストの案内
Back to archive index