RkBlog

Hardware, programming and astronomy tutorials and reviews.

Kontrolery

Poznanie budowy i sposobu działania kontrolerów - elementów spinających dane z modeli i kod HTML strony z widoków

Cele

- Poznanie budowy i sposobu działania kontrolerów - podstawowego elementu CI

Kontroler to klasa umieszczona w pliku o nazwie takiej jak nazwa klasy, umieszczonym w "application/controllers" Nazwa zawierać można znaki alfanumeryczne (cyfry i litery) oraz znaki podkreślenia. Nazwa klasy jest używana w linkach URL do jej wywoływania (co już robiliśmy wcześniej). Przykładowo link:
http://localhost/html/ci/index.php/form
Wywoła klasę o nazwie "Form". Klasa ta powinna znajdować się w pliku "form.php". Nazwa pliku musi zaczynać się z małej litery, nazwa klasy - z dużej. Wykorzystany przez nas wcześniej kontroler wyglądał następująco:
<?php
class Test extends Controller
{
function index()
 {
 echo 'Test CI';
 }
 }
 ?>
A więc tak:
class NAZWAKLASY extends Controller
Deklaruje nam klasę o podanej nazwie. Fraza extends Controller oznacza że nasza klasa dziedziczy (dostaje) wszystkie metody klasy "Controller". Szczegóły są tu nie potrzebne. Po prostu klażda klasa kontroler musi to mieć.
function index()
 {
 echo 'Test CI';
 }
Tutaj mamy "standardową" metodę. W przypadku CI jest mały dodatek. Otóż metoda o nazwie index wywołana zostanie domyślnie jeżeli w linku nie podamy nazwy określonej metody.
<?php
class Test extends Controller
{
function index()
 {
 echo 'Test CI';
 }
function dodatek()
 {
 echo 'Dodatkowy tekst';
 }
 }
 ?>
Link typu http://localhost/html/ci/index.php/test wywoła metodę index, a http://localhost/html/ci/index.php/test/dodatek - metodę dodatek.

Prywatne metody, niedostępne poprzez URL tworzy się zaczynając ich nazwę od znaku podkreślenia:
<?php
function _utility()
 {
   // jakiś kod
 }

Domyślny kontroler jaki zostanie wywołany przy pustym URLu (sam index.php) ustawić można w application/config/routes.php. Mamy tam: $route['default_controller'] = "welcome"; gdzie wartość (tutaj "welcome") oznacza nazwę domyślnie wywoływanego kontrolera.

Konstruktory tworzy się normalnie z tym że trzeba dodać jedną linijkę kodu. Dla PHP4:
<?php
 class Blog extends Controller {
       // konstruktor to metoda o nazwie jak nazwa klasy
        function Blog()
        {
             parent::Controller();
        }
 }
 ?>
W PHP5 "nazwa" konstruktora to __construct()
<?php
 class Blog extends Controller {
 
        function __construct()
        {
             parent::Controller();
        }
 }
 ?>
W konstruktorze musi znaleźć się parent::Controller();. Jeżeli nie potrzebujemy to nie musimy tworzyć konstruktora.
RkBlog

14 July 2008;

Comment article