Podręcznik użytkownika CodeIgniter wersja 2.2.1


Tworzenie głównych klas systemowych

Za każdym razem kiedy CodeIgniter jest uruchamiany, kilka podstawowych klas jest uruchamianych automatycznie, jako część główna frameworka. Istnieje jednak możliwość, zastąpienia każdej z głównych klas systemu Twoją własną wersją lub nawet jej rozszerzenie.

Większość użytkowników nigdy nie będzie miała potrzeby tego robić, ale opcja aby zastąpić lub rozszerzyć klasy istnieje dla tych osób, które chciałyby w znaczący sposób zmienić główne klasy CodeIgnitera.

Uwaga:  Zmiana głównych klas systemowych niesie ze sobą konsekwencje, upewnij się więc że wiesz co robisz zanim przystąpisz do tych czynności.

Lista klas systemowych

Oto lista głównych klas systemowych, które są wywoływane za każdym razem, podczas uruchamiania CodeIgnitera:

Zastępowanie głównych klas

Aby używać jedną ze swoich własnych klas głównych, zamiast wersji domyślnej, wystarczy umieścić swoją wersję w folderze application/core:

application/core/some_class.php

Jeśli ten folder nie istnieje, możesz go utworzyć.

Każdy plik o identycznej nazwie jak z powyższej listy, zostanie użyty zamiast tego wywoływanego normalnie.

Zauważ, że Twoja klasa musi używać prefiksu CI. Dla przykładu, jeśli Twoj plik ma nazwę Input.php klasa musi mieć nazwę:

class CI_Input {

}

Rozszerzanie klas głównych

Jeśli wszystko czego potrzebujesz, to dodanie pewnej funkcjonalności do istniejącej biblioteki - być może dodanie funkcji lub dwoch - wtedy dużym nadużyciem wydaje się zastąpienie całej biblioteki swoją wersją. W takim przypadku lepszym rozwiązaniem jest po prostu rozszerzenie klasy. Rozszerzanie klasy jest prawie identyczne jak jej zastępowanie, z kilkoma wyjątkami:

Dla przykładu, aby rozszerzyć natywną klasę Input, musisz utworzyć plik o nazwie application/core/MY_Input.php i zadeklarować klasę w ten sposób:

class MY_Input extends CI_Input {

}

Uwaga: Jeśli musisz użyć konstruktora w swojej klasie, upewnij się że rozszerza on kontruktor rodzica:

class MY_Input extends CI_Input {

    function __construct()
    {
        parent::__construct();
    }
}

Wskazówka:  Każda funkcja w Twojej klasie, ktora ma identyczną nazwę jak ta w klasie rodzica, będzie użyta zamiast funkcji natywnej (nazywa się to przesłanianiem metod). Pozwala to w zasadniczy sposób zmieniać dziaalnie głównych klas.

Jeśli rozszerzasz główną klasę kontrolera, pamiętaj aby rozszerzać swoją nową klasę w konstruktorach kontrolera aplikacji.

class Welcome extends MY_Controller {

    function __construct()
    {
        parent::__construct();
    }

    function index()
    {
        $this->load->view('welcome_message');
    }
}

Ustawianie własnego prefiksu

Aby ustawić swój własny prefiks dla sub-klasy, otwórz plik application/config/config.php i spójrz na zmienną:

$config['subclass_prefix'] = 'MY_';

Zauważ, że wszystkie natywne biblioteki CodeIgnitera mają prefiks CI_, tak więc NIE używaj tego ciągu jako własnego prefiksu.