Есть ли встроенные функции codeigniter, которые я могу использовать, чтобы определить, была ли уже загружена определенная модель? Можно ли использовать php's class_exists()
, чтобы определить, была ли уже загружена модель?Codeigniter: как я могу узнать, загружена ли модель?
ответ
У меня возникло бы желание расширить основной класс CI_Loader
. (См extending Core Class)
class MY_Loader extends CI_Loader {
function __construct()
{
parent::__construct();
}
/**
* Returns true if the model with the given name is loaded; false otherwise.
*
* @param string name for the model
* @return bool
*/
public function is_model_loaded($name)
{
return in_array($name, $this->_ci_models, TRUE);
}
}
Вы бы проверить для данной модели со следующими требованиями:
$this->load->is_model_loaded('foobar');
That strategy уже используется CI_Loader
класса.
Это решение поддерживает функцию именования модели CI, где модели могут иметь другое имя, чем сам класс модели. Решение class_exists
не поддерживает эту функцию, но должно работать нормально, если вы не переименовываете модели.
Примечание: Если вы изменили конфигурацию subclass_prefix
, это может быть не MY_
.
Отредактировано:
Вы можете использовать функцию log_message().
Поместите это в конструктор вашей модели (родительский :: Model())
log_message ("debug", "model is loaded");
не забудьте установить конфигурации журнала в режиме отладки в файле config.php
$config['log_threshold'] = 2;
И установите права на каталоги системы/журналов на запись (по умолчанию CI создаст здесь файлы журналов)
или установить каталог журналов в другом каталоге
$config['log_path'] = 'another/directory/logs/';
CI затем создаст файл журнала в каталоге. контролировать файлы журналов по своему усмотрению. Вы можете получить отладочное сообщение, чтобы узнать, загружена ли ваша модель или нет в файлах журнала.
, это только сообщит мне, существует ли файл, я хотел знать, была ли первая модель загружена в контроллер или была автоматически загружена с помощью автозагрузки – Xecure
риффов от того, что Максим Morin & Tomexsans написал, что это мое решение:
<?php
class MY_Loader extends CI_Loader {
/**
* Model Loader
*
* Overwrites the default behaviour
*
* @param string the name of the class
* @param string name for the model
* @param bool database connection
* @return void
*/
function model ($model, $name = '', $db_conn = FALSE) {
if (is_array($model) || !class_exists($model)) {
parent::model($model, $name, $db_conn);
}
}
}
?>
Таким образом, вы никогда не должны (сознательно) проверить, является ли модель загружается или нет :)
Я столкнулся с проблемой ситуация, когда я загружала классы более одного раза, и она не бросала какие-либо ошибки, но она использовала предел памяти PHP, и это исправило мою проблему без необходимости изменять какой-либо другой код, поэтому большое спасибо! – Sam
Самым простым решением является использование РНР-функции class_exists
http://php.net/manual/en/function.class-exists.php
Например. если вы хотите проверить, был ли Post_model определен или нет.
$this->load->model('post_model');
/*
a lot of code
*/
if (class_exists("Post_model")) {
// yes
}
else {
// no
}
Самый простой из лучших ..
- 1. Как я могу узнать, изменилась ли модель?
- 2. Как узнать, загружена ли CSV?
- 3. Как я могу узнать, когда загружена моя страница html
- 4. Как узнать, загружена ли партия изображений?
- 5. Как узнать, загружена ли Google Visualization
- 6. Как узнать, загружена ли Google Analytics
- 7. Как узнать, загружена ли строка JSON?
- 8. Как узнать, полностью загружена ли jQuery?
- 9. Как узнать, загружена ли надстройка VSTO?
- 10. Android - Как узнать, правильно ли загружена картаView?
- 11. Как узнать, откуда загружена страница
- 12. Как узнать, что страница загружена
- 13. CodeIgniter - Модель загружена, но не может быть использована?
- 14. Как я могу узнать, завершено ли GKAchievement?
- 15. Как узнать, могу ли я отключить SQLALCHEMY_TRACK_MODIFICATIONS?
- 16. Как я могу узнать, исчез ли GKHostedAuthenticateViewController?
- 17. Android - Как я могу узнать модель подключенного устройства износа Android?
- 18. Как я могу проверить, загружена ли карта карт Google Maps?
- 19. Как узнать, была ли загружена страница из всплывающего окна
- 20. Могу ли я узнать, перезагружен ли ipad?
- 21. Могу ли я узнать, ссылается ли объект?
- 22. Как узнать, какая активность была загружена
- 23. Как узнать, когда страница будет загружена?
- 24. Как узнать, загружена ли Flash на веб-сайт?
- 25. Android Webview - как узнать, загружена ли страница из кеша?
- 26. Как узнать, загружена ли данная DLL данным процессом?
- 27. Как узнать, используется ли модель от Rake?
- 28. Веб-сервер YAWS - как узнать, успешно ли загружена загрузка?
- 29. three.js Как узнать, была ли загружена моя сцена?
- 30. Я только главная страница, чтобы узнать CodeIgniter и я хочу, как я могу изменить этот PHP код CodeIgniter
Да, вы можете и он будет работать – tomexsans