Czy istnieją funkcje natywnego kodowania znaków, za pomocą których mogę stwierdzić, czy dany model został już załadowany? Czy php może używać class_exists()
do stwierdzenia, czy model został już załadowany?Codeigniter: jak mogę sprawdzić, czy model jest już załadowany?
Odpowiedz
Chciałbym pokusić się o rozszerzenie podstawowej klasy CI_Loader
. (Patrz 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);
}
}
Byłbyś sprawdzenie danego modelu z następujących czynności:
$this->load->is_model_loaded('foobar');
That strategy jest już używany przez klasę CI_Loader
.
To rozwiązanie obsługuje funkcję modelowania nazw CI, gdzie modele mogą mieć inną nazwę niż sama klasa modelu. Rozwiązanie class_exists
nie obsługuje tej funkcji, ale powinno działać poprawnie, jeśli nie zmieniasz nazwy modeli.
Uwaga: Jeśli zmieniłeś konfigurację subclass_prefix
, może ona już nie być MY_
.
Zmieniano:
Można użyć funkcji log_message().
umieścić to w konstruktorze Twojego modelu (rodzic :: model())
log_message ("debug", "model is loaded");
Nie zapomnij ustawić config dziennika do trybie debugowania w pliku config.php
$config['log_threshold'] = 2;
I ustaw uprawnienia do katalogu system/logs na writable (domyślnie CI utworzy pliki dziennika tutaj)
lub ustaw katalog dzienników w innym katalogu
$config['log_path'] = 'another/directory/logs/';
CI utworzy plik dziennika w katalogu. monitoruj pliki dziennika w dowolny sposób. Możesz pobrać komunikat debugowania, aby sprawdzić, czy twój model jest już załadowany, czy nie, w plikach dziennika.
to tylko poinformuje mnie, czy plik istnieje, chciałem się dowiedzieć, czy pierwszy model został załadowany pojedynczo do kontrolera lub czy został automatycznie załadowany przez automatyczne ładowanie – Xecure
riffy off co Maxime Morin & Tomexsans zostały napisane, to jest moje rozwiązanie:
<?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);
}
}
}
?>
ten sposób, że nie zawsze trzeba (świadomie) sprawdzić, czy model jest naładowany czy nie :)
natknąłem się na sytuacja, w której ładowałem klasy więcej niż jeden raz i nie wyrzucałem żadnych błędów, ale korzystałem z limitu pamięci PHP i to naprawiło mój problem bez potrzeby modyfikacji żadnego innego kodu, więc dziękuję bardzo! – Sam
Najprostszym rozwiązaniem jest użycie php class_exists
http://php.net/manual/en/function.class-exists.php
Na przykład. jeśli chcesz sprawdzić, czy Post_model został zdefiniowany, czy nie.
$this->load->model('post_model');
/*
a lot of code
*/
if (class_exists("Post_model")) {
// yes
}
else {
// no
}
Najprostszym jest najlepszy ..
- 1. Jak sprawdzić, czy identyfikator już istnieje - CodeIgniter
- 2. Jak mogę sprawdzić, czy załadowany jest obraz tła?
- 3. Jak mogę sprawdzić, czy Flash jest załadowany na stronie internetowej?
- 4. Szkielet: Jak sprawdzić, czy model już istnieje w kolekcji?
- 5. Jak mogę sprawdzić, czy przycisk radiowy jest już zaznaczony?
- 6. Jak mogę sprawdzić, czy dany pakiet jest już zainstalowany?
- 7. Jak sprawdzić, czy widget JQuery UI jest załadowany?
- 8. Jak sprawdzić, czy model jest nowy, czy nie?
- 9. Jak sprawdzić, czy jQuery jest już w pamięci podręcznej?
- 10. Jak sprawdzić, czy element audio HTML5 jest załadowany?
- 11. Jak sprawdzić, czy obraz jest załadowany lub buforowany w JQuery?
- 12. Jak sprawdzić, czy obraz jest w pełni załadowany z Picasso
- 13. Jak sprawdzić, czy pole pliku jest puste w codeigniter?
- 14. moduł wsgi_module jest już załadowany, pomijając
- 15. Jak mogę sprawdzić, czy dane już istnieją na liście combobox?
- 16. Jak mogę sprawdzić, czy wyjątek został już zgłoszony?
- 17. Jak mogę sprawdzić, czy synonim już istnieje, nie twórz synonimu
- 18. Jak przenieść z powrotem do UIViewController, który jest już załadowany?
- 19. Jak sprawdzić, czy port TCP jest już odsłuchiwany?
- 20. Jak sprawdzić, czy fragment już jest wywoływany naCreateView()
- 21. Jak sprawdzić, czy sesja ChromeCast jest już w toku?
- 22. jak sprawdzić, czy zdarzenie "ładowanie" okna zostało uruchomione już
- 23. Jak mogę sprawdzić, czy kolejka jest pusta?
- 24. Jak mogę sprawdzić, czy funkcja jest częściowa?
- 25. Jak mogę sprawdzić, czy Dispatcher.DisableProcessing jest aktywny?
- 26. Jak mogę sprawdzić, czy scenarzysta jest zamknięty?
- 27. Jak mogę sprawdzić, czy wartość jest liczbą?
- 28. Jak sprawdzić, czy zmienna Smarty jest już przypisana?
- 29. Jak sprawdzić, czy ssh-agent jest już uruchomiony w bashu?
- 30. Jak sprawdzić, czy sesja szyn jest już załadowana?
Tak, możesz i zadziała – tomexsans