Как вы, наверное, знаете, вы на самом деле не хотите модифицировать основные методы в CI. Итак, чтобы предотвратить конфликт CI с вашим классом, вы должны сделать что-то очень похожее на следующее:
Оставьте структуру папок как есть, но создайте новый файл вне вашей папки aws_sdk. Назовите это как * Aws_loader * или что-то, что имеет смысл для вас. Если вы хотите автоматически загрузить SDK, то в файле автозагрузчика CI добавьте:
Файл автозагрузки CI (application / config / autoload.php):
$autoload['libraries'] = array('Aws_loader');
Ваш файл инициализации:
class CI_Aws_sdk{
// for use with PHP < version 5
/*public function CI_Aws_sdk(){
require dirname(__FILE__) . DIRECTORY_SEPARATOR . "aws_sdk" .DIRECTORY_SEPARATOR . 'sdk.class.php';
}*/
// for use with PHP >= 5
public function __construct(){
require dirname(__FILE__) . DIRECTORY_SEPARATOR . "aws_sdk" .DIRECTORY_SEPARATOR . 'sdk.class.php';
}
}
Итак, ваша структура каталогов выглядит следующим образом:
application --
config --
...
libraries --
Aws_loader.php
aws_sdk --
sdk.class.php
Если вы не загружаете sdk автоматически, то в вашем контроллере вы можете сделать это:
$this->load->library('Aws_loader');
В любом случае, CI загружает класс для вас и эффективно разделяет любые методы внутри него, и теперь вы можете работать внутри этого класса, как и любая другая библиотека или модель, которую вы загрузили ранее, без вмешательства в методы CI, аналогично это:
$this->Aws_loader->do_something();
Вы можете использовать тот же метод для любой сторонней библиотеки классов или даже для той, которую вы написали сами. Очень похожая схема может быть использована для моделей, библиотек, помощников и тому подобного.
Надеюсь, это поможет!