- 私はCodeigniter 2.1.0を使用しています。
- 私はこれがうまく機能
require_once APPPATH . "/libraries/aws_sdk/sdk.class.php";
を使用してカスタムモデルでAmazon WebサービスSDKを含めています。しかし、CIは、それが後には、DBキャッシュクラスのロードする必要が決定したとき、それは(cache_init :: _ CI_DB_driver経由)を呼び出します:PHP AWS SDKオートローダとCodeigniterとの競合
if (! class_exists('CI_DB_Cache'))
{
if (! @include(BASEPATH.'database/DB_cache.php'))
{
return $this->cache_off();
}
}
これは、AWS SDK(正確な方法はCFLoader::autoloader
である)の自動ロードをトリガします。
私はclass_exists
falseを返した場合、とにかくDB_cache.phpが含まれているようだとして、ない自動ロードにclass_exists
を伝えることにより、これを回避することができます
if (! class_exists('CI_DB_Cache', false))
{
if (! @include(BASEPATH.'database/DB_cache.php'))
{
return $this->cache_off();
}
}
この汚い修正作品が、明らかにのみ当面の問題を修正。一般に、CodeIgniterが他のライブラリからの自動ロードと混同されないようにする最良の方法は何ですか?
ご注意:spl_autoload_register
の使用に関する
- 私が読んだこまごまとします。 Codeigniterはこれを使用していないようですが、私はこれをどのようにして安全に実装すべきか分かりません。私はこの最も実用的な方法(そして、これが解決策である場合)をどのように、どこで実装すべきかの確かな例を見つけるでしょう。
- それはAWS SDKはすでに
spl_autoload_register
を使用していることを表示されます。spl_autoload_register(array('CFLoader', 'autoloader'));