2013-05-14 4 views
15

я использую CodeIgniter 2.CodeIgniter правильный способ проверить, если библиотеки/помощник/файлы ядра загружается

Цените, если кто-то может показать правильный способ проверить, если следующие файлы:
- файл библиотеки загружается ?
- загружен вспомогательный файл?
- загружен файл конфигурации?
- файл модели загружен?
- Загружен файл third_party?

С уважением

+0

Что происходит, когда вы намеренно загрузить его неправильно? Вы получаете ошибки CI? Потому что ты должен. – qwertzman

+0

Не проверяйте, просто загружайте, Codeigniter имеет эффективный способ самостоятельно определить его. Посмотрите здесь: http://stackoverflow.com/questions/19630019/codeigniter-load-libraries-if-not-already-loaded/23597257#23597257 –

ответ

22

Вы можете использовать собственные функции PHP class_exists(), чтобы определить, если класс был определен, перед вызовом. В этом же отношении использование метода_exists() проверяет, существует ли метод класса.

Поскольку помощники - это функция, а не методы, проверка может быть выполнена с помощью функции function_exists().

if (class_exists('Library')) 
{ 
    $this->library->myMethod(); 
} 

Для получения дополнительной информации, пожалуйста, обратитесь к

http://php.net/manual/en/function.class-exists.php.

http://us.php.net/manual/en/function.method-exists.php

+0

руководство пользователя – user1884324

+0

Это правильный способ проверить, но если причина для проверки следует включить библиотеку, тогда не используйте это. Я сделал небольшой тест, который доказывает, что метод загрузки Codigniter по умолчанию - лучший способ. Смотрите здесь: http: // stackoverflow.com/questions/19630019/codeigniter-load-libraries-if-not-already-loaded/23597257 # 23597257 –

9

Вам не нужно проверять, вы просто загрузить их везде, где вы должны быть уверены, чтобы иметь их.

Использование библиотеки загрузки CI ($this->load->[library|model|helper]) всегда будет загружать ее только один раз. Вы можете увидеть это, если вы включите ведение журнала отладки.

+0

Уверены ли вы в этом? Я включаю сессионную библиотеку несколько раз, используемая память значительно увеличивается, я только что проверил ее. Ошибка Codeigniter? –

+3

Посмотрите на Loader.php и найдите «Вторая попытка проигнорирована» (ПРИМЕЧАНИЕ. Если вы укажете пользовательские имена, она создаст новый экземпляр). – minboost

+1

Вы правы, способ Codeignign - самый эффективный способ, я сделал небольшой тест –

1

После загрузки ваш экземпляр магазина на контроллере, поэтому, чтобы проверить, была ли загружена модель:

if (isset($this->my_model)) 

Где $ это ваш контроллер.

5

это метод codeigniter для проверки загруженных библиотек.

if($this->load->is_loaded('session') 
{ 
    $this->load->library('session'); 
} 
0

Лучший способ сделать это с помощью Loader класса CodeIgniter в. Loader aka load имеет встроенный метод is_loaded. Метод is_loaded проверяет, был ли класс уже загружен или нет.

Если класс не был загружен, то is_loaded возвращает FALSE, иначе он возвращает имя свойства.

Пример:

$this->load->library('table'); 
$this->load->is_loaded('table'); //Returns 'table' 
$this->load->is_loaded('blabla_library'); //Returns FALSE 
Смежные вопросы