Tworzenie i uruchamianie projektu Zend Framework (Laminas) w ServBay
Przegląd
Zend Framework (obecnie część projektu Laminas) to potężny otwarty framework PHP, oferujący wysokiej jakości komponenty obiektowe do budowy nowoczesnych aplikacji i usług webowych. Jest ceniony za elastyczność, modularną architekturę i wydajność – doskonale sprawdzi się przy realizacji prostych stron oraz złożonych rozwiązań korporacyjnych.
ServBay to lokalne środowisko web developerskie stworzone dla macOS i Windows, integrujące PHP, różne serwery WWW (np. Caddy, Nginx), bazy danych (MySQL, PostgreSQL, MongoDB), systemy cache (Redis, Memcached) oraz inne narzędzia deweloperskie. ServBay umożliwia łatwą konfigurację i zarządzanie tymi pakietami, upraszczając proces tworzenia i uruchamiania projektów PHP opartych o różne frameworki.
W tym dokumencie dowiesz się, jak utworzyć i uruchomić projekt Zend Framework (Laminas) w środowisku ServBay oraz zintegrować bazę danych i system cache dostępne w ServBay.
Wymagania wstępne
Przed rozpoczęciem upewnij się, że:
- Zainstalowano ServBay: ServBay jest zainstalowany i uruchomiony na Twoim komputerze z macOS lub Windows. Instrukcję instalacji znajdziesz na stronie ServBay.
- Pakiety ServBay: W ServBay aktywne są wymagane komponenty:
- Co najmniej jedna wersja PHP (zalecane PHP 8.x lub nowsze, gdyż nowe wersje Zend Framework / Laminas wymagają nowoczesnego PHP).
- Serwer WWW (Caddy lub Nginx).
- Composer (zazwyczaj zainstalowany automatycznie).
- Usługa bazy danych (np. MySQL, PostgreSQL) oraz cache (np. Memcached, Redis). Ich uruchomienie jest możliwe z poziomu panelu ServBay.
Tworzenie projektu Zend Framework
Zaleca się umieszczać wszystkie projekty WWW w dedykowanym katalogu, aby ServBay mógł automatycznie nimi zarządzać:
- macOS:
/Applications/ServBay/www
- Windows:
C:\ServBay\www
Przejdź do katalogu stron
Otwórz terminal i przejdź do rekomendowanego katalogu:
macOS:
bashcd /Applications/ServBay/www
1Windows:
cmdcd C:\ServBay\www
1Utworzenie projektu przez Composer
Composer jest już zainstalowany wraz z ServBay. Użyj polecenia
create-project
, aby utworzyć szkielet aplikacji Zend Framework (Laminas). Projekt powstanie w kataloguservbay-zend-app
:bashcomposer create-project laminas/laminas-skeleton-application servbay-zend-app
1Pobrany zostanie szkielet projektu Zend Framework (Laminas) oraz wszystkie zależności.
Wejdź do folderu projektu
Przejdź do utworzonego katalogu:
bashcd servbay-zend-app
1
Konfiguracja serwera WWW
Aby uzyskać dostęp do projektu przez przeglądarkę, musisz skonfigurować stronę w ServBay.
- Otwórz panel ServBay: Uruchom aplikację ServBay.
- Przejdź do ustawień stron: W panelu wybierz zakładkę Strony (Websites).
- Dodaj nową stronę: Kliknij przycisk
+
w lewym dolnym rogu, by dodać konfigurację strony. - Wypełnij szczegóły:
- Nazwa (Name): Wpisz łatwą do rozpoznania nazwę, np.
My Zend Dev Site
. - Domena (Domain): Podaj lokalną domenę, np.
servbay-zend-test.local
(zaleca się końcówki.local
lub.test
), by uniknąć kolizji z prawdziwymi domenami. ServBay automatycznie skonfiguruje DNS lokalny. - Typ strony (Website Type): Wybierz
PHP
. - Wersja PHP (PHP Version): Wskaż wersję PHP używaną przez stronę (np.
8.3
). Upewnij się, że jest dostępna w ServBay. - Katalog główny (Document Root): Jako katalog publiczny podaj ścieżkę do folderu
public
projektu:/Applications/ServBay/www/servbay-zend-app/public
.
- Nazwa (Name): Wpisz łatwą do rozpoznania nazwę, np.
- Zapisz i zrestartuj: Kliknij Zapisz (Save). Po aplikacji zmian serwer automatycznie przeładuje konfigurację.
Szczegółowe instrukcje znajdziesz w rozdziale Dodawanie pierwszej strony dokumentacji ServBay.
Podstawowy przykład "Hello ServBay!"
Zmieńmy kod projektu, aby pod adresem głównym (/
) wyświetlał komunikat "Hello ServBay!".
Konfiguracja routingu i kontrolera (module.config.php)
Edytuj plik
module/Application/config/module.config.php
tak, by zawierał poniższą konfigurację:php<?php declare(strict_types=1); namespace Application; use Laminas\Router\Http\Literal; use Laminas\Router\Http\Segment; use Laminas\ServiceManager\Factory\InvokableFactory; return [ 'router' => [ 'routes' => [ 'home' => [ 'type' => Literal::class, 'options' => [ 'route' => '/', 'defaults' => [ 'controller' => Controller\IndexController::class, 'action' => 'index', ], ], ], // ... inne konfiguracje tras ], ], 'controllers' => [ 'factories' => [ Controller\IndexController::class => InvokableFactory::class, ], ], 'view_manager' => [ 'display_not_found_reason' => true, 'display_exceptions' => true, 'doctype' => 'HTML5', 'not_found_template' => 'error/404', 'exception_template' => 'error/index', 'template_map' => [ 'layout/layout' => __DIR__ . '/../view/layout/layout.phtml', 'application/index/index' => __DIR__ . '/../view/application/index/index.phtml', 'error/404' => __DIR__ . '/../view/error/404.phtml', 'error/index' => __DIR__ . '/../view/error/index.phtml', ], 'template_path_stack' => [ __DIR__ . '/../view', ], ], // ... pozostałe konfiguracje ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49Uwaga: To tylko fragment - należy go połączyć z istniejącą konfiguracją. Upewnij się, że trasa
'home'
oraz fabryka dlaController\IndexController::class
są obecne.Utworzenie lub edycja kontrolera (IndexController.php)
Edytuj lub utwórz plik
module/Application/src/Controller/IndexController.php
z poniższą metodą:php<?php declare(strict_types=1); namespace Application\Controller; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; class IndexController extends AbstractActionController { /** * Domyślna akcja – wyświetlenie strony powitalnej. */ public function indexAction() { // Zwraca ViewModel z przekazaną zmienną 'message' do widoku return new ViewModel([ 'message' => 'Hello ServBay!', ]); } // ... inne metody akcji }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24Utwórz lub edytuj widok (index.phtml)
Edytuj lub utwórz plik
module/Application/view/application/index/index.phtml
, w którym wyświetlisz przekazaną wiadomość:php<h1><?php echo $this->message; ?></h1>
1Kod wykorzystuje pomocnika widoku Zend Framework (Laminas).
Dostęp do strony
Wejdź w przeglądarce na skonfigurowaną domenę, np. https://servbay-zend-test.local
.
Jeśli konfiguracja jest poprawna, powinieneś zobaczyć komunikat Hello ServBay!
, co potwierdza prawidłowe uruchomienie projektu Zend Framework w ServBay.
Przykłady integracji baz danych i cache
ServBay oferuje wiele usług bazodanowych oraz cache. Poniżej przykłady, jak używać Memcached, Redis, MySQL i PostgreSQL w projekcie Zend Framework.
Ważne: Przykłady są demonstracyjne – w praktycznych aplikacjach wybierzesz odpowiednią bazę i system cache według potrzeb oraz zadbasz o zarządzanie zależnościami. Uruchom wymagane usługi z poziomu ServBay (np. MySQL, PostgreSQL, Memcached, Redis).
Przykład pracy z bazą danych – tworzenie tabeli
Pokażemy użycie komponentu Laminas DB do utworzenia przykładowej tabeli.
Dodanie komponentu Laminas DB
Zainstaluj przez Composer w katalogu projektu:
bashcomposer require laminas/laminas-db
1Ręczne utworzenie bazy danych
Przed testami utwórz bazę danych
servbay_zend_app
(np. przez phpMyAdmin, pgAdmin, MongoDB Compass w ServBay). Domyślne dane logowania: dla MySQL/MariaDB i PostgreSQL to użytkownikroot
oraz hasłopassword
.Skrypt tworzący tabelę (przykład)
Utwórz plik PHP, np.
create_users_table.php
i dodaj kod:php<?php // create_users_table.php use Laminas\Db\Adapter\Adapter; use Laminas\Db\Sql\Sql; // Zakładamy MySQL/MariaDB $adapter = new Adapter([ 'driver' => 'Pdo_Mysql', // lub 'Pdo_Pgsql' 'database' => 'servbay_zend_app', 'username' => 'root', 'password' => 'password', // domyślne hasło ServBay 'hostname' => '127.0.0.1', // 'port' => 3306, // domyślny port MySQL // 'port' => 5432, // domyślny port PostgreSQL ]); $sql = new Sql($adapter); // Definicja SQL do utworzenia tabeli users $create = $sql->createTable('users') ->addColumn(new \Laminas\Db\Sql\Ddl\Column\Integer('id', false, null, ['AUTO_INCREMENT' => true])) ->addColumn(new \Laminas\Db\Sql\Ddl\Column\Varchar('name', 255)) ->addColumn(new \Laminas\Db\Sql\Ddl\Column\Varchar('email', 255, ['UNIQUE' => true])) ->addConstraint(new \Laminas\Db\Sql\Ddl\Constraint\PrimaryKey('id')); echo "Executing SQL:\n"; echo $sql->buildSqlString($create, $adapter->getPlatform()) . "\n"; try { // Wykonaj SQL $adapter->query( $sql->buildSqlString($create, $adapter->getPlatform()), Adapter::QUERY_MODE_EXECUTE ); echo "Table 'users' created successfully.\n"; } catch (\Exception $e) { echo "Error creating table: " . $e->getMessage() . "\n"; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38Uwaga: To przykładowy ręczny skrypt. W praktyce skorzystaj z narzędzi do migracji Laminas.
Uruchom go z konsoli:
bashphp create_users_table.php
1
Integracja MySQL – przykład
Jak połączyć kontroler Zend Framework z bazą MySQL i wykonać zapytania.
Konfiguracja połączenia
W pliku
config/autoload/global.php
dodaj dane połączeniowe:php<?php // config/autoload/global.php return [ 'db' => [ 'driver' => 'Pdo_Mysql', 'database' => 'servbay_zend_app', 'username' => 'root', 'password' => 'password', 'hostname' => '127.0.0.1', 'port' => 3306, 'charset' => 'utf8mb4', ], // ... dalsza konfiguracja ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14Fabryka kontrolera (module.config.php)
Zmień konfigurację fabryki kontrolera na wstrzyknięcie Adaptera:
php<?php // module/Application/config/module.config.php namespace Application; use Laminas\ServiceManager\Factory\InvokableFactory; use Laminas\Db\Adapter\AdapterInterface; return [ // ... inne konfiguracje 'controllers' => [ 'factories' => [ Controller\IndexController::class => function($container) { $adapter = $container->get(AdapterInterface::class); return new Controller\IndexController($adapter); }, ], ], 'service_manager' => [ 'aliases' => [ AdapterInterface::class => 'Laminas\Db\Adapter\Adapter', ], 'factories' => [ 'Laminas\Db\Adapter\Adapter' => \Laminas\Db\Adapter\AdapterServiceFactory::class, ], ], // ... reszta ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27Uwaga: Dodaj powyższe fragmenty do swojego
module.config.php
.Routing (module.config.php)
Dodaj dwie trasy do obsługi MySQL:
php<?php // module/Application/config/module.config.php namespace Application; use Laminas\Router\Http\Literal; return [ 'router' => [ 'routes' => [ // ... istniejące trasy 'mysql-add' => [ 'type' => Literal::class, 'options' => [ 'route' => '/mysql-add', 'defaults' => [ 'controller' => Controller\IndexController::class, 'action' => 'mysqlAdd', ], ], ], 'mysql' => [ 'type' => Literal::class, 'options' => [ 'route' => '/mysql', 'defaults' => [ 'controller' => Controller\IndexController::class, 'action' => 'mysql', ], ], ], ], ], // ... pozostałe ustawienia ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34Metody kontrolera (IndexController.php)
Dodaj metodę konstrukcyjną oraz akcje do kontrolera:
php<?php declare(strict_types=1); namespace Application\Controller; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; use Laminas\Db\Adapter\AdapterInterface; use Laminas\Db\Sql\Sql; class IndexController extends AbstractActionController { private $adapter; public function __construct(AdapterInterface $adapter) { $this->adapter = $adapter; } /** * Domyślna akcja powitalna. */ public function indexAction() { return new ViewModel([ 'message' => 'Hello ServBay!', ]); } /** * Akcja dodająca użytkownika przez MySQL. */ public function mysqlAddAction() { $sql = new Sql($this->adapter); $insert = $sql->insert('users') ->values([ 'name' => 'ServBay Demo User', 'email' => 'demo-mysql@servbay.test', ]); $statement = $sql->prepareStatementForSqlObject($insert); $result = $statement->execute(); $message = $result->getAffectedRows() > 0 ? 'MySQL User added successfully.' : 'Failed to add MySQL user.'; return new ViewModel([ 'message' => $message, ]); } /** * Akcja wyświetlająca użytkowników z MySQL. */ public function mysqlAction() { $sql = new Sql($this->adapter); $select = $sql->select('users'); $statement = $sql->prepareStatementForSqlObject($select); $result = $statement->execute(); $users = []; foreach ($result as $row) { $users[] = $row; } return new ViewModel([ 'users' => json_encode($users, JSON_PRETTY_PRINT), ]); } // ... inne metody }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75Dodaj powyższy kod do klasy IndexController.
Widoki
Utwórz plik
module/Application/view/application/index/mysql-add.phtml
:php<h1><?php echo $this->message; ?></h1>
1Plik
module/Application/view/application/index/mysql.phtml
:php<h1>MySQL Users</h1> <pre><?php echo $this->users; ?></pre>
1
2Testowanie MySQL
Uruchom usługę MySQL w ServBay. Wejdź na
https://servbay-zend-test.local/mysql-add
by dodać użytkownika – zobaczysz „MySQL User added successfully.”. Następnie odwiedźhttps://servbay-zend-test.local/mysql
by zobaczyć listę użytkowników w tabeli.
Integracja PostgreSQL – przykład
Analogiczny sposób działania dla PostgreSQL.
Konfiguracja połączenia
W pliku
config/autoload/global.php
(jeśli chcesz obsłużyć obie bazy, rozważ oddzielne konfiguracje):php<?php return [ 'db' => [ 'driver' => 'Pdo_Pgsql', 'database' => 'servbay_zend_app', 'username' => 'root', 'password' => 'password', 'hostname' => '127.0.0.1', 'port' => 5432, ], ];
1
2
3
4
5
6
7
8
9
10
11Fabryka kontrolera (module.config.php)
Konfiguracja zgodna z powyższą dla MySQL.
Routing
Dodaj dwie trasy:
php<?php namespace Application; use Laminas\Router\Http\Literal; return [ 'router' => [ 'routes' => [ // ... istniejące trasy 'pgsql-add' => [ 'type' => Literal::class, 'options' => [ 'route' => '/pgsql-add', 'defaults' => [ 'controller' => Controller\IndexController::class, 'action' => 'pgsqlAdd', ], ], ], 'pgsql' => [ 'type' => Literal::class, 'options' => [ 'route' => '/pgsql', 'defaults' => [ 'controller' => Controller\IndexController::class, 'action' => 'pgsql', ], ], ], ], ], ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32Metody kontrolera
Dodaj dwie akcje do kontrolera:
php<?php declare(strict_types=1); namespace Application\Controller; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; use Laminas\Db\Adapter\AdapterInterface; use Laminas\Db\Sql\Sql; class IndexController extends AbstractActionController { private $adapter; public function __construct(AdapterInterface $adapter) { $this->adapter = $adapter; } // ... istniejące akcje /** * Akcja dodająca użytkownika przez PostgreSQL. */ public function pgsqlAddAction() { $sql = new Sql($this->adapter); $insert = $sql->insert('users') ->values([ 'name' => 'ServBay Demo User', 'email' => 'demo-pgsql@servbay.test', ]); $statement = $sql->prepareStatementForSqlObject($insert); $result = $statement->execute(); $message = $result->getAffectedRows() > 0 ? 'PostgreSQL User added successfully.' : 'Failed to add PostgreSQL user.'; return new ViewModel([ 'message' => $message, ]); } /** * Akcja wyświetlająca użytkowników z PostgreSQL. */ public function pgsqlAction() { $sql = new Sql($this->adapter); $select = $sql->select('users'); $statement = $sql->prepareStatementForSqlObject($select); $result = $statement->execute(); $users = []; foreach ($result as $row) { $users[] = $row; } return new ViewModel([ 'users' => json_encode($users, JSON_PRETTY_PRINT), ]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65Widoki
Plik
module/Application/view/application/index/pgsql-add.phtml
:php<h1><?php echo $this->message; ?></h1>
1Plik
module/Application/view/application/index/pgsql.phtml
:php<h1>PostgreSQL Users</h1> <pre><?php echo $this->users; ?></pre>
1
2Testowanie PostgreSQL
Upewnij się, że PostgreSQL jest aktywny w ServBay. Wejdź na
https://servbay-zend-test.local/pgsql-add
by dodać użytkownika, następniehttps://servbay-zend-test.local/pgsql
by zobaczyć wszystkich użytkowników.
Przykład integracji z Memcached
Jak korzystać z Memcached w Zend Framework.
Instalacja adaptera Memcached
Dodaj do
composer.json
zależność:json{ "require": { "laminas/laminas-skeleton-application": "^1.0", "laminas/laminas-cache-storage-adapter-memcached": "^2.0" } }
1
2
3
4
5
6Zaktualizuj zależności przez:
bashcomposer update
1W ServBay rozszerzenie PHP
memcached
jest już zainstalowane.Routing
Dodaj trasę:
php<?php namespace Application; use Laminas\Router\Http\Literal; return [ 'router' => [ 'routes' => [ // ... poprzednie trasy 'memcached' => [ 'type' => Literal::class, 'options' => [ 'route' => '/memcached', 'defaults' => [ 'controller' => Controller\IndexController::class, 'action' => 'memcached', ], ], ], ], ], ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Metoda kontrolera
Dodaj akcję:
php<?php declare(strict_types=1); namespace Application\Controller; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; use Laminas\Cache\StorageFactory; use Laminas\Cache\Storage\StorageInterface; class IndexController extends AbstractActionController { // ... inne akcje /** * Przykład użycia Memcached. */ public function memcachedAction() { // Domyślnie Memcached działa na 127.0.0.1:11211 w ServBay $cache = StorageFactory::factory([ 'adapter' => [ 'name' => 'memcached', 'options' => [ 'servers' => [ ['127.0.0.1', 11211], ], 'ttl' => 300, ], ], 'plugins' => [ 'serializer', 'exception_handler' => ['throw_exceptions' => false], ], ]); $cacheKey = 'my_memcached_data'; $cachedData = $cache->getItem($cacheKey, $success); if (!$success) { $cachedData = 'Hello Memcached! (Dane z źródła, zapisane w cache ' . date('Y-m-d H:i:s') . ')'; $cache->setItem($cacheKey, $cachedData); $cachedData .= ' - CACHE MISS'; } else { $cachedData .= ' - CACHE HIT'; } return new ViewModel([ 'message' => $cachedData, ]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53Widok
Plik
module/Application/view/application/index/memcached.phtml
:php<h1>Przykład Memcached</h1> <p><?php echo $this->message; ?></p>
1
2Testowanie
Aktywuj usługę Memcached w ServBay. Wejdź na
https://servbay-zend-test.local/memcached
– pierwszy raz zobaczysz „CACHE MISS”, ponowne wejście w ciągu 300 sekund pokaże „CACHE HIT”.
Przykład integracji z Redis
Demonstracja użycia Redis w projekcie Zend Framework.
Instalacja adaptera Redis
Dodaj do
composer.json
:json{ "require": { "laminas/laminas-skeleton-application": "^1.0", "laminas/laminas-cache-storage-adapter-redis": "^2.0", "ext-redis": "*" } }
1
2
3
4
5
6
7Następnie:
bashcomposer update
1Rozszerzenie PHP
redis
jest dostępne w ServBay.Routing
Dodaj trasę:
php<?php namespace Application; use Laminas\Router\Http\Literal; return [ 'router' => [ 'routes' => [ // ... poprzednie 'redis' => [ 'type' => Literal::class, 'options' => [ 'route' => '/redis', 'defaults' => [ 'controller' => Controller\IndexController::class, 'action' => 'redis', ], ], ], ], ], ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Metoda kontrolera
Dodaj akcję:
php<?php declare(strict_types=1); namespace Application\Controller; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; use Laminas\Cache\StorageFactory; use Laminas\Cache\Storage\StorageInterface; class IndexController extends AbstractActionController { // ... inne akcje /** * Przykład użycia Redis. */ public function redisAction() { // Domyślnie Redis działa na 127.0.0.1:6379 w ServBay $cache = StorageFactory::factory([ 'adapter' => [ 'name' => 'redis', 'options' => [ 'server' => [ 'host' => '127.0.0.1', 'port' => 6379, ], 'ttl' => 300, ], ], 'plugins' => [ 'serializer', 'exception_handler' => ['throw_exceptions' => false], ], ]); $cacheKey = 'my_redis_data'; $cachedData = $cache->getItem($cacheKey, $success); if (!$success) { $cachedData = 'Hello Redis! (Dane z źródła, zapisane w cache ' . date('Y-m-d H:i:s') . ')'; $cache->setItem($cacheKey, $cachedData); $cachedData .= ' - CACHE MISS'; } else { $cachedData .= ' - CACHE HIT'; } return new ViewModel([ 'message' => $cachedData, ]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54Widok
Plik
module/Application/view/application/index/redis.phtml
:php<h1>Przykład Redis</h1> <p><?php echo $this->message; ?></p>
1
2Testowanie
Aktywuj usługę Redis w ServBay. Wejdź na
https://servbay-zend-test.local/redis
– pierwszy raz zobaczysz „CACHE MISS”, potem „CACHE HIT”, dane będą pobierane z cache’a.
Podsumowanie
Wykonując powyższe kroki, utworzyłeś, skonfigurowałeś i uruchomiłeś projekt Zend Framework (Laminas) w lokalnym środowisku ServBay. Poznałeś konfigurowanie serwera WWW poprzez funkcję stron w ServBay oraz sposoby łączenia projektu z MySQL, PostgreSQL, Memcached i Redis.
ServBay upraszcza budowę i zarządzanie środowiskiem developerskim, umożliwiając skupienie się na kodzie i rozwoju projektu. Dzięki bogatej palecie zintegrowanych pakietów ServBay łatwo odwzorujesz warunki produkcyjne na lokalnej maszynie, zwiększając efektywność pracy programisty.