Podręcznik użytkownika CodeIgniter wersja 2.2.1


Klasa Loader

Klasa Loader, jak sama nazwa wskazuje służy do ładowania elementów. Tymi elementami mogą być biblioteki (klasy), pliki widoku, helpery, modele, lub Twoje własne pliki.

Uwaga: Ta klasa jest ładowana automatycznie przez system, dlatego nie musisz tego robić samodzielnie.

W tej klasie dostępne są następujące funkcje:

$this->load->library('class_name', $config, 'object name')

Ta funkcja jest używana do ładowania podstawowych klas. Gdzie class_name jest nazwą klasy, którą chcesz załadować. Uwaga: Używamy tu zwrotu "klasa" i "biblioteka" wymiennie.

Dla przykładu, jeśli chciałbyś wysłać wiadomość email w CodeIgniterze, pierwszym krokiem byłoby załadowanie klasy email w kontrolerze:

$this->load->library('email');

Raz załadowana, biblioteka będzie gotowa do użycia za pomocą składni $this->email->some_function().

Pliki biblioteki mogą być przechowywane w podkatalogach w głównym foderze bibliotek, lub w samym folderze application/libraries. Aby załadować plik znajdujący się w podkatalogu, po prostu dołącz ścieżkę relatywną do folderu "libraries". Dla przykładu, jeśli masz plik zlokalizowany w:

libraries/flavors/chocolate.php

Możesz go załadować w ten sposób:

$this->load->library('flavors/chocolate');

Możesz umieszczać pliki w tylu subfolderach, ilu tylko chcesz.

Dodatkowo, możesz ładować wiele bibiotek na raz, poprzez przypisanie tablicy z bibliotekami do funkcji ładującej.

$this->load->library(array('email', 'table'));

Ustawienia opcji

Drugi parametr (opcjonalny), pozwala na przypisanie ustawień konfiguracyjnych. Zazwyczaj będziesz je przypisywał w postaci tablicy:

$config = array (
                  'mailtype' => 'html',
                  'charset'  => 'utf-8,
                  'priority' => '1'
               );

$this->load->library('email', $config);

Konfiguracja opcji może się zazwyczaj również odbywać poprzez plik konfiguracyjny. Każda biblioteka posiada informacje na ten temat na swojej własnej stronie. Zapoznaj się z tymi informacjami dla każdej z bibliotek, którą będziesz chciał użyć.

Proszę wziąść pod uwagę, że kiedy ładujemy wiele bibliotek za pomocą tablicy, to każda z nich otrzyma informacje korespondujące z indeksem w drugim parametrze.

Przypisywanie biblioteki do innej nazwy obiektu

Jeśli trzeci (opcjonalny) parametr jest pusty, biblioteka zwykle jest przypisywana do obiektu o takiej samej nazwie jak biblioteka. Dla przykładu, jeśli biblioteka ma nazwę Session, zostanie przypisana do zmeinnej o nazwie $this->session.

Jeśli wolisz ustawić swoją własną nazwę klasy, możesz przypisać jej wartość w trzecim parametrze:

$this->load->library('session', '', 'my_session');

// Klasa sesji jest teraz dostępna poprzez:

$this->my_session

Proszę zwrócić uwagę, że kiedy ładujemy wiele bibliotek za pomocą tablicy, to ten parametr jest pomijany.

$this->load->view('file_name', $data, true/false)

Ta funkcja jest używana do ładowania plików widoku. Jeśli nie czytałeś jeszcze rozdziału na temat widoków, to zalecamy abyś to zrobił, ponieważ znajdziesz tam informacje na temat tego w jaki sposób można korzystac z tej funcji.

Pierwszy parametr jest wymagany. Jest to nazwa pliku widoku, który chciałbyś załadować.  Uwaga: Nazwa rozszerzenia .php nie jest wymagana, chyba że używasz czegoś innego niż .php.

Drugi opcjonalny parametr, za wartość może przyjmować tablicę asocjacyjną lub obiekt. Wartość ta jest później poddawana działaniu funkcji PHP extract, która konwertuje wspomnianą wartość do zmiennych, które mogą być później wykorzystane w plikach widoku. Ponownie prosimy, abyś zapoznał się z rozdziałem dotyczącym widoków, abyś mógł się nauczyć w jaki sposob możesz to wykorzystać.

Trzeci opcjonalny parametr, pozwala na zmianę zachowania funkcji, tak aby zwracała dane jako ciąg, a nie wysyłała je bezpośrednio do przeglądarki. Może być to przydatne, jeśli będziesz chciał w jakiś sposób przetworzyć te dane. Jeśli ustawisz parametr na true (boolean), to dane zostaną zwrócone. Domyślną wartością jest false, co powoduje wysłanie danych do przeglądarki. Pamiętaj o przypisaniu do zmiennej, jeśli chcesz aby dane zostały zwrócone:

$string = $this->load->view('myfile', '', true);

$this->load->model('Model_name');

$this->load->model('Model_name');

Jeśli twój model znajduje się w subfolderze, dołącz relatywną ścieżkę z folderu modelu. Dla przykładu, jeśli Twój model znajduje się w application/models/blog/queries.php, załadujesz go w ten sposób:

$this->load->model('blog/queries');

Jeśli chcesz, aby Twój model został przypisany do innego obiektu, możesz określić jego nazwę poprzez drugi parametr funkcji ładującej:

$this->load->model('Model_name', 'fubar');

$this->fubar->function();

$this->load->database('options', true/false)

Ta funkcja pozwala na załadowanie klasy bazy danych. Obydwa parametry są opcjonalne. W celu uzyskania większej liczby informacji, prosimy się zapoznać z rozdziałem traktującym o bazach danych.

$this->load->vars($array)

Ta funkcja jako wartośc przyjmuje tablicę asocjacyjną i generuje zmienne za pomocą funkcji PHP extract. Dzięki tej funkcji otrzymamy takie same rezultaty, jak w przypadku przekazania drugiego parametru do funkcji $this->load->view() powyżej. Powodem dla którego mógłbyś chcieć skorzystać z tej funkcji, jest możliwość niezależnego przekazywania zmiennych globalnych np. w konstruktorze Twojego kontrolera. W ten sposób zmienne staną się dostępne w każdym widoku załadowanym z każdej metody. Możesz się odwoływać do tej funkcji wielokrotnie. Dane zostaną zcacheowane i połączone w jedną tablicę przy konwersji na zmienne.

$this->load->get_var($key)

Ta funkcja sprawdza tablicę asocjacyjną zmiennych dostępnych dla Twoich widoków. Jest to przydatne jeśli z jakiegoś powodu zmienne są ustawiane w bibliotece lub innej metodzie kontrolera za pomocą $this->load->vars().

$this->load->helper('file_name')

Ta biblioteka ładuje pliki helperów, gdzie file_name jest nazwą pliku, bez rozszerzenia _helper.php.

$this->load->file('filepath/filename', true/false)

To jest generyczna funkcja ładowania pliku. W pierwszym parametrze należy dostarczyć ścieżkę oraz nazwę pliku do wczytania. Domyślnie zawartośc pliku jest wysyłana bezpośrednio do przeglądarki, tak samo jak w przypadku ładowania widoku. Jeśli ustawisz drugi parametr na wartość true (boolean), to dane zostaną zwrócone jako ciąg.

$this->load->language('file_name')

Ta funkcja jest aliasem funkcji ładującej plik językowy: $this->lang->load()

$this->load->config('file_name')

Ta funkcja jest aliasem funkcji ładującej plik konfiguracyjny: $this->config->load()

"Pakiety" aplikacji

Pakiety aplikacji, pozwalają na łatwą dystrybucję kompletnych zestawów zasobów w pojedynczym folderze. Kompletne pod względem własnych bibliotek, modeli, helperów, plików konfiguracyjnych i plików językowych. Zalecane jest aby te pakiety znajdowały się w folderze application/third_party. Poniżej przedstawiona jest prosta mapa folderu dla takiego pakietu

Mapa folderu dla prostego pakietu "Foo Bar"

Poniżej znajduje się przykład folderu dla pakietu o nazwie "Foo Bar".

/application/third_party/foo_bar

config/
helpers/
language/
libraries/
models/

Niezależnie od celów jakie ma spełniać pakiet "Foo Bar", ma on własne pliki konfiguracyjne, helpery, pliki językowe, biblioteki i modele. Aby używać tych zasobów w Twoich kontrolerach, musisz najpierw poinformować Loader, ze będziesz ładował zasoby z pakietu, poprzez dodanie ścieżki pakietu.

$this->load->add_package_path()

Dodanie ścieżki pakietu, informuje klasę Loader, aby dopisać daną ścieżkę do sprawdzenia podczas wczytywania zasobów. Dla przykładu, pakiet "Foo Bar" ma bibliotekę o nazwie Foo_bar.php. W Twoim kontrolerze, moglibyśmy zrobić w ten sposób:

$this->load->add_package_path(APPPATH.'third_party/foo_bar/');
$this->load->library('foo_bar');

$this->load->remove_package_path()

Kiedy twój kontroler przestaje używać zasoby pakietu, a szczegolnie kiedy masz inny pakiet, z którym chciałbyś pracować, możesz chcieć usunąć ścieżkę pakietu, aby Loader nie sprawdzał tego folderu w poszukiwaniu zasobów. Aby usunąć ostatnio dodaną ścieżkę pakietu, po prostu wywołaj metodę bez żadnych parametrów.

$this->load->remove_package_path()

Aby usunąć specyficzną ścieżkę pakietu, podaj taką samą nazwę jaką podałeś podczas wywołania add_package_path() dla pakietu.:

$this->load->remove_package_path(APPPATH.'third_party/foo_bar/');

Pliki widoku pakietu

Domyślnie ścieżki dla widoków pakietów są ustawiane kiedy wywoływana jest funkcja add_package_path(). Ścieżki widoków są przeszukiwane w pętli i kiedy nazwy się zgadzają, dany plik jest wczytywany.

W tym wypadku, istnieje możliwośc wystąpienia kolicji nazw i tym samym wczytania nieodpowiedniego widoku. Aby tego uniknąć, ustaw drugi opcjonalny parametr na wartość FALSE, podczas wywoływania add_package_path().

$this->load->add_package_path(APPPATH.'my_app', FALSE);
$this->load->view('my_app_index'); // Ładuje
$this->load->view('welcome_message'); // Domyślny widok welcome_message nie zostanie załadowany, ponieważ drugi parametr add_package_path ma wartość FALSE

// Reset things
$this->load->remove_package_path(APPPATH.'my_app');

// Again without the second parameter:
$this->load->add_package_path(APPPATH.'my_app');
$this->load->view('my_app_index'); // Ładuje
$this->load->view('welcome_message'); // Ładuje