CodeIgniter - wprowadzenie część I

Opublikowano:
CodeIgniter jest jednym z łatwiejszych do nauki frameworków PHP. Posiada bardzo dobrą dokumentację, jest szybki i zajmuje mało zasobów. Idealnie nadaje się do mniejszych i tych średnich serwisów. Dzisiaj szybko wprowadzę Ciebie do tego frameworka.

Niniejszy wpis jest szybkim wprowadzeniem do frameworka CodeIgniter. Jak wspomniałem, jest to moim zdaniem idealny framework dla małych i średnich aplikacji internetowych. Aktualną wersję CodeIgniter znajdziemy na stronie domowej frameworka. W tym miejscu jest takżę dokumentacja.

Na potrzeby "kursu" uznajmy, że masz już gotowy serwer oraz host. - jako host będę używał localhost.
Pierwszym krokiem, jest ściągnięcie aktualnej paczki z framewrokiem CodeIgniter. Po rozpakowaniu jej zawartości w katalogu strony wpisz adres localhost.

Jednak przyjrzymy się dokładniej strukturze frameworka. Posiada on na początku foldery application ( w którym pliki naszej strony internetowej) oraz system (pliki frameworka).

W folderze application, mamy kolejne katalogi, które odpowiadają za odpowiednie funkcjonalności. W tym momencie interesują nas foldery: config, controllers, models oraz views. Najpierw w dużym skrócie omówię zawartość folderu config

Zaletą tego frameworka jest to, że ma minimalistyczną konfigurację. Podstawowa konfiguracja kończy się na edycji pliku application/config/config.php i uzupełnieniem tablicy klucza base_url na odpowiedni adres, w naszym przypadku ustawiamy http://localhost/

 $config['base_url'] = 'http://localhost/";

Kolejną rzeczą, którą należy ustawić jest połączenie z bazą danych, ponieważ praktycznie każda strona korzystaz bazy danych, ale to także zostawimy na potem.
Jak widzisz oprócz tych dwóch rzeczy jest o wiele więcej ustawień, które już domyślnie są odpowiednio skonfigurowane, dlatego nie potrzeba nic więcej tam zmieniać, ale polecam na przyszłość zobaczyć dokładniej co się znajduje w tym folderze, bo nie raz jeszcze do niego wrócimy, aby poprawnie skonfigurować naszą stronę internetową.

Jeśli nigdy wcześniej nie programowałeś obiektowo, to ważne jest abyś zapoznał się z informacją czym jest klasa w PHP, ponieważ od teraz tylko będziemy z nich korzystać oraz z wzorca projektowego MVC.

Nazwa MVC na początku brzmi strasznie, jednak nie jest to nic strasznego, ale bardzo pożyteczna logiczna struktura kodu, która w dużym skrócie polega na stworzeniu trzech warst kodu:

  • warstwa prezentacyjna - jest to widok danej strony, wszelkie przetworzone dane opakowane w ładny wygląd
  • warstwa kontrolująca - są to klasy, które kontrolują przepływ danych między modelem a widokiem (warstwą prezentacyjną)
  • warstwa logiczna - tak zwane modele, w nich umieszczamy prakytycznie cały kod.

Do tego wzorca jest też coś takiego jak router, którego zadaniem jest uruchomienie odpowiedniego kontrolera względem żadania użytkownika. Poniższy obrazek powinien lekko rozjaśnić sytuację.


Więc jak działa router? Użytkownik wpisuje adres strony w przeglądarce. Router parsuje ten adres i szuka odpowiedniego controllera i akcji, a następnie wywołuje daną akcję w controllerze. Wejdź teraz do folderu controllers i znajdziesz tam plik welcome.php otwórz go. W środku znajduje się klasa z metodą index(), która odpowiada za wyświetlnie strony, którą otrzymaliśmy po pierwszym uruchomieniu, aby dostać się do niej wystarczyło wpisać tylko adres http://localhost, ale gdy już wiesz, jak działa router, to spróbuj wpisać adres http://localhost/index.php/welcome/index - otrzymałeś tą samą stronę.

Czym jest controller oraz akcja? Controller jest klasą - czyli takim workiem którym upychamy powiązane ze sobą akcje - funkcje. Dla przykładu w klasie post będziemy mieli akcje od dodawania, edycji, usuwania oraz wyświetlania postu.

Czym jest model? Na modelu spoczywa najwięcej pracy, do jego zadań należą wszelkie obliczenia oraz komunikacja z bazą danych.

Czym jest widok? Według powyższego diagramu do widoku dostajesz przetworzone dane, które są wplecione w kod HTML I CSS i na końcu wyświetlone użytkownikowi jako strona internetowa. (podejrzyj w folderze views jak taki widok wygląda.

Skoro już część teoretyczną mamy za sobą. Zabierzmy się za stworzenie swojej pierwszej strony WWW w frameworku CodeIgniter! Oczywiście będzie to Hello World!. Więc do dzieła.
Skopiuj sobie controller Welcome i nadaj mu nazwę Hello. Zwróć uwagę, że nazwa pliku jest taka sama jak nazwa klasy.

Kolejnym krokiem jest stworzenie sobie funkcji index(), która będzie jako domyślna uruchamiana w controllerze Hello.


public function index(){
  $this->load->view('hello/index');
}

W praktycznie każdej akcji będzie występowało wywołanie metody view. Właśnie ona służy do "wysyłania danych" do widoku. Przyjmuje jako pierwszy parametr nazwę widoku, jaki ma zostać wyświetlony (wyrenderowany).
Dobrym nawykiem będzie, jeśli już od samego początku będziesz układał widoki w odpowiednich katalogach na zasadzie CONTROLLER_NAME/ACTION_NAME.php dzięki temu później będziesz mógł prościej zarządzać kodem. Więc stwórz sobie teraz widok w folderze views/hello/ o nazwie index.php i umieść w nim magiczne słowa: Hello world!

Dobra, ale to co zrobiliśmy to szybciej wykonasz w samym HTML, dlatego troszkę zmodyfikujmy ten kod. Utwórz teraz akcję, która jako parametr będzie przyjmowała imię i witała się z daną osobą. Jeśli nie podasz imienia, ma wyświetlić tekst Witaj nieznajomy!


< h1 style="text-align: center;">< ?php if(empty($name)): ?> Witaj nieznajomy!< ?php else: ?> Cześć < ?=$name;?>< ?php endif;?>< /h1>

Aby uruchomić ten kod należy w przeglądarce wpisać http://localhost/hello/name/Dawid. Na ekranie zobaczysz piękny napis Cześć Dawid.

Skoro już potrafisz stworzyć swój controller i swoją akcję, to na koniec jeszcze kilka słów o routingu. Jak widzisz routing jest dynamiczny - to znaczy tworzony na podstawie adresu i automatycznie dobierany według poniższego schematu jest controller i akcja wraz z parametrami, ale oczywiście można ustalić indywidualne routing w pliku config/routes.php. W ramach testu ustaw tam nasz controller hello jako domyślny.

http://localhost/index.php/CONTROLLER/ACTION/ARG1/ARG2/.../ARG_N

Jeśli jesteś zainteresowany nauką tego frameworka to zaglądaj na mój blog częściej. W ramach nauki jako aplikację stworzymy sobie prosty serwis w stylu samosia.pl . Jeśli zaciekawił Ciebie ten wpis, zostaw jakiś komentarz :)