- Я использую Codeigniter 2.1.0.
- Я включаю SDK Amazon Web Services в пользовательскую модель, используя
require_once APPPATH . "/libraries/aws_sdk/sdk.class.php";
Это хорошо работает. Однако, когда CI решает, что позже ему нужно загрузить свой класс кеша db, он вызывает (через CI_DB_driver::_cache_init):
if ( ! class_exists('CI_DB_Cache'))
{
if ( ! @include(BASEPATH.'database/DB_cache.php'))
{
return $this->cache_off();
}
}
Это запускает автозагрузку AWS SDK (точный метод — CFLoader::autoloader
).
Я могу обойти это, сказав class_exists
не загружать автозагрузку, так как кажется, что DB_cache.php все равно включается, если class_exists
возвращает false:
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'));