Nowości

Wprowadzenie do Zend Framework 2.0

NA eduweb.pl dostępny jest już pierwszy kurs ze ścieżki Zend Framework. Na przestrzeni niemal 7 godzin wideo szkolenia pokażemy Ci wszystkie najważniejsze rzeczy związane…

NA eduweb.pl dostępny jest już pierwszy kurs ze ścieżki Zend Framework. Na przestrzeni niemal 7 godzin wideo szkolenia pokażemy Ci wszystkie najważniejsze rzeczy związane z funkcjonowaniem frameworku, jego instalacją jak również podstawowymi modułami i komponentami, które na praktycznych przykładach omówimy w ramach projektu. Na przestrzeni kolejnych miesięcy pojawi się drugi kurs, jako rozszerzenie podstaw, w którym skoncentrujemy się na stworzeniu rozbudowanego systemu e-commerce w Zend od A-Z.


Witam serdecznie, W tym artykule opiszę to wszystko od czego należy rozpocząć pracę z Zend Framework 2.0, tak więc do dzieła. Zaczynamy od tego, że jego dokumentacja znajduje się tutaj http://framework.zend.com/ natomiast strona projektu tutaj http://zend.com/

Artykuł ten podzielimy na trzy części:
1. Wstępne informacje o frameworku
2. Instalacja i konfiguracja
3. Instalacja nowego modułu

Słowem wstępu

Framework Zend jest to zbiór przydatnych narzędzi i gotowych rozwiązań wielu problemów, z którymi spotykamy się w codziennej pracy. Mogą być to rzeczy bardzo błahe jak sformatowanie daty do ściśle określonego formatu lub bardziej skomplikowane elementy bazujące na wzorcach projektowych jak np. połączenie z bazą danych i wzorzec Active Record. Można go uruchamiać w środowisku z zainstalowanym interpreterem PHP w wersji >= 5.3.3 Zend (jak i inne jemu podobne framework’i) składa się z części jądra systemu oraz części publicznej. Wszystkie modyfikacje wprowadzamy właśnie w tej drugiej części i nawet niech nam nie przyjdzie do głowy modyfikować jądro Zend’a 🙂

Wprowadzanymi modyfikacjami w części publicznej mogą być nowe widoki, kontrolery, modele, pliki JS, html itp. – czyli to wszystko z czym mamy do czynienia w swoim projekcie. Zend nie jest systemem CMS. Na jego podstawie możemy zbudować taki system razem z panelem administracyjnym lecz sam w sobie jest tylko (aż ?) zbiorem funkcyjnych rozwiązań wykonanych zgodnie ze standardem projektowym. Używając tego standardu mamy pewność, że nasz kod będzie działał prawidłowo na każdym innym (podobnym technologicznie) systemie oraz będziemy mieli poczucie, że nasz kod wygląda i działa jak należy (estetyka programisty). Jakie narzędzia zawiera zatem?  Począwszy od autoryzacji, baz danych, operacji na ciągach i formatach danych poprzez tzw. remoting (zdalne połączenia), Active record, model-view-viewmodel a skończywszy na bramkach (tablegateways) i adapterach bazodanowych. Narzędzi jest mnóstwo. Jestem przekonany, że niezależnie od tego co się robi można skorzystać z tych rozwiązań. Poniżej dołączam obraz z listą narzędzi i bibliotek:

bibl

Zend działa w porozumieniu z biblioteką o nazwie Composer https://getcomposer.org/ Jest to biblioteka, która integruje się z aplikacją oraz dostarcza i aktualizuje pliku danego systemu, w tym momencie Zend’a.

Instalacja i konfiguracja

Framework można pobrać z dowolnej lokalizacji. Ja jednak preferuję GitHub’a https://github.com/zendframework/zf2. Na dole strony jest przycisk „Download ZIP”, po kliknięciu w nań nastąpi pobieranie framework’u. Jednak jako, że my dopiero zaczynamy naszą przygodę z Zendem powyższe źródła nie zdadzą się nam na zbyt wiele. Musimy pobrać zatem pierwszy szkielet aplikacji, który jest zbudowany o architekturę MVC i jest idealnym rozwiązaniem na początek. Dodatkowo jest prosty w instalacji. Wystarczy że pobierzemy plik ZIP ze strony github’a https://github.com/zendframework/ZendSkeletonApplication. Umieścimy go na serwerze i zaktualizujemy jego pliki jądra i konfiguracje za pomocą composer’a. Nie będę tłumaczył w jaki sposób umieścić pliki na FTP’ie bo to każdy wie, natomiast ważne jest aby po ich wgraniu otworzyć konsolę, przejść do katalogu z nowo wgranym Zend’em metodą „cd” i będąc w katalogu, w którym znajduje się plik composer.phar musimy uruchomić kolejno:

php composer.phar self-update
php composer.phar install
php composer.phar update

Self-update aktualizuje silnik biblioteki composer.
Install pobiera i umieszcza wszystkie źródła frameworku na swoim miejscu.
Update aktualizuje nowo zainstalowanego Zenda (sprawdza czy są aktualizacje). Jeśli to zrobimy to jest to już koniec mocowania się z instalacją zend’a.

Możemy przejść do otwarcia strony ze szkieletem pod adresem: http://twoja-domena.pl/public/ Jeśli na ekranie zobaczymy coś takiego:

zf2

oznacza to, że mamy wszystko zainstalowane i skonfigurowane. Możemy rozpoczynać pracę 🙂

Instalacja nowego modułu

Jeśli domyślnie zainstalowany moduł (wraz ze szkieletem aplikacji) nie wystarcza już nam, albo mamy pomysł na nową funkcjonalność w naszym systemie możemy do tego utworzyć moduł. Instalacja jest prosta pod warunkiem, że korzystamy z jego szkieletu. https://github.com/zendframework/ZendSkeletonModule
Plik ZIP pobieramy, rozpakowujemy i wgrywamy na serwer do uprzednio utworzonego katalogu z nazwą nowego modułu. Katalog ten tworzymy w w miejscu <instalacja_zend>/module/
Do utworzonego katalogu wgrywamy rozpakowaną paczkę ZIP ze szkieletem modułu.

Powiedzmy że mój nowo wgrywany moduł nosi nazwę „Sklep”. Tworzę katalog „Sklep” w powyższej lokalizacji oraz przenoszę pliki z rozpakowanego ZIP’a szkieletu modułu na serwer FTP do folderu „Sklep”. Następnie musimy powiedzieć Zend’owi że używamy drugiego modułu.

1. Otwieramy plik <instalacja_zend>/module/Sklep/Module.php zmieniając linijkę 10, w której zmieniamy namespace z „ZendSkeletonModule” na „Sklep”
2. Usuwamy zawartość katalogów <instalacja_zend>/module/Sklep/src/* oraz <instalacja_zend>/module/Sklep/view/*
3. W pliku <instalacja_zend>/module/Sklep/autoload_classmap.php zmieniamy treść na:

<?php
return array();

4. Zmieniamy treść pliku <instalacja_zend>/module/Sklep/config/module.config.php na

<?php
return array(
    'controllers' => array(
        'invokables' => array(
            'Sklep\Controller\Index' => 'Sklep\Controller\IndexController',
        ),
    ),
    'router' => array(
        'routes' => array(
            'sklep' => array(
                'type'    => 'Literal',
                'options' => array(
                    // Change this to something specific to your module
                    'route'    => '/sklep',
                    'defaults' => array(
                        // Change this value to reflect the namespace in which
                        // the controllers for your module are found
                        '__NAMESPACE__' => 'Sklep\Controller',
                        'controller'    => 'Index',
                        'action'        => 'index',
                    ),
                ),
                'may_terminate' => true,
                'child_routes' => array(
                    // This route is a sane default when developing a module;
                    // as you solidify the routes for your module, however,
                    // you may want to remove it and replace it with more
                    // specific routes.
                    'default' => array(
                        'type'    => 'Segment',
                        'options' => array(
                            'route'    => '/[:controller[/:action]]',
                            'constraints' => array(
                                'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                                'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
                            ),
                            'defaults' => array(
                            ),
                        ),
                    ),
                ),
            ),
        ),
    ),
    'view_manager' => array(
        'template_path_stack' => array(
            'sklep' => __DIR__ . '/../view',
        ),
    ),
);

5. W pliku <instalacja_zend>/config/application.config.php dodajemy do tablicy „modules” nasz moduł. Kod przed modyfikacją wygląda:

<?php
return array(
    // This should be an array of module namespaces used in the application.
    'modules' => array(
        'Application'
    ),

//.....

,a po modyfikacji:

<?php
return array(
    // This should be an array of module namespaces used in the application.
    'modules' => array(
        'Application',
        'Sklep',
    ),

//.....

3. Musimy utworzyć poszczególne katalogi względem ścieżki: <instalacja_zend>/module/Sklep/src/Sklep/Controller/ 4. W nowo utworzonym katalogu Controller tworzymy plik IndexController.php i wypełniamy go treścią:

<?php

namespace Sklep\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class IndexController extends AbstractActionController
{
    public function indexAction()
    {
        $view = new ViewModel();
        return $view;
    }
}

?>

6. Musimy utworzyć poszczególne katalogi względem ścieżki: <instalacja_zend>/module/Sklep/view/sklep/index/ 7. W nowo utworzonym katalogu index tworzymy plik index.phtml i wypełniamy go treścią:

<h1>Hello World</h1>
<p>Tradycja jest tradycją i Hell-o-World być musi!</p>

To wszystko 🙂 Otwieramy przeglądarkę na stronie http://twoja-domena.pl/public/sklep i naszym oczom powinien ukazać się widok:

zf22

W kolejnym artykule opiszę w jaki sposób stworzyć system formularzy w oparciu o ZF2. s’il vous plaît! Serdecznie zapraszam do komentowania i oceniania na moim blogu: http://mateuszmanaj.pl/

manaj project banner

UDOSTĘPNIJ ARTYKUŁ:

Powiązane artykuły

Nowości

Nasz Manifest

Nowości

2020 na eduweb – podsumowanie roku

Nowości

5 funkcji, dla których warto przesiąść się na aplikacje Affinity!

Nowości

Lekcje online – wskazówki dla nauczycieli

Pozostań na bieżąco!

Już nigdy nie przegapisz ważnych informacji, promocji oraz nowych kursów. Zapisz się na newsletter już teraz!

Zapisując się do newslettera akceptujesz naszą politykę prywatności