Een Zend Framework (Laminas) project opzetten en uitvoeren in ServBay
Overzicht
Zend Framework, nu onderdeel van het Laminas-project, is een krachtig open-source PHP-framework dat een reeks hoogwaardige, objectgeoriënteerde componenten biedt voor het bouwen van moderne webapplicaties en services. Dankzij zijn flexibiliteit, modulaire design en hoge prestaties is het ideaal voor zowel eenvoudige websites als complexe bedrijfsapplicaties.
ServBay is een lokaal webontwikkelplatform speciaal ontworpen voor macOS en Windows, en integreert PHP, diverse webservers (zoals Caddy en Nginx), databases zoals MySQL, PostgreSQL, MongoDB, cachingdiensten zoals Redis en Memcached, en andere ontwikkeltools. ServBay maakt het eenvoudig om al deze pakketten te beheren, zodat het lokaal opzetten en uitvoeren van PHP-frameworks bijzonder gemakkelijk wordt.
Met dit document leer je stap voor stap hoe je in ServBay een Zend Framework (Laminas) project aanmaakt en uitvoert, inclusief hoe je de database- en cachingdiensten van ServBay integreert.
Vereisten
Voordat je begint, zorg ervoor dat het volgende geregeld is:
- ServBay installeren: ServBay is succesvol geïnstalleerd en draait op je macOS- of Windows-machine. Zo niet, ga dan naar de ServBay officiële website voor download- en installatie-instructies.
- ServBay pakketten: Controleer of de benodigde ServBay pakketten zijn geïnstalleerd en actief, waaronder:
- Minimaal één PHP-versie (bij voorkeur PHP 8.x of hoger, omdat de recente Zend Framework / Laminas-versies hogere PHP-versies verlangen).
- Een webserver (Caddy of Nginx).
- Composer (standaard meegeleverd met ServBay).
- De databases (zoals MySQL, PostgreSQL) en cachingservices (zoals Memcached, Redis) die je wilt gebruiken. Je kunt deze eenvoudig starten via het ServBay controlepaneel.
Een Zend Framework project maken
Voor overzicht en makkelijke sitebeheer raadt ServBay aan projecten op de volgende locatie te plaatsen:
- macOS:
/Applications/ServBay/www
- Windows:
C:\ServBay\www
Navigeer naar de projectmap
Open een terminal en ga naar de aanbevolen projectmap:
macOS:
bashcd /Applications/ServBay/www
1Windows:
cmdcd C:\ServBay\www
1Maak het project via Composer
Composer is standaard aanwezig in ServBay. Gebruik het
create-project
commando om een nieuw Zend Framework (Laminas skeleton application) project aan te maken, bijvoorbeeld in een submapservbay-zend-app
:bashcomposer create-project laminas/laminas-skeleton-application servbay-zend-app
1Dit downloadt de Zend Framework (Laminas) skeleton-applicatie in de map
servbay-zend-app
en installeert de benodigde afhankelijkheden.Ga naar de projectmap
bashcd servbay-zend-app
1
De webserver configureren
Om het Zend Framework-project via de browser te bereiken, moet je een website configureren in ServBay.
- Open ServBay controlepaneel: Start de ServBay app.
- Ga naar de website-instellingen: Klik op het tabblad Websites in het controlepaneel.
- Voeg een nieuwe website toe: Klik op de
+
-knop linksonder om een nieuwe configuratie aan te maken. - Vul de websitegegevens in:
- Naam: Kies een herkenbare naam, bijvoorbeeld
My Zend Dev Site
. - Domein: Vul het domein in waarmee je het project wilt bezoeken. Gebruik bijvoorbeeld
.local
of.test
, zoalsservbay-zend-test.local
, zodat je geen conflicting domeinen gebruikt. ServBay regelt automatisch de lokale DNS. - Website Type: Kies
PHP
. - PHP-versie: Selecteer de gewenste PHP-versie (bijvoorbeeld
8.3
) die in ServBay geïnstalleerd en actief is. - Document Root: Dit is de map die de webserver publiek beschikbaar maakt. Zet deze op de
public
map van je project, bijvoorbeeld:/Applications/ServBay/www/servbay-zend-app/public
.
- Naam: Kies een herkenbare naam, bijvoorbeeld
- Opslaan en herstarten: Klik op Opslaan. ServBay vraagt om de wijziging door te voeren; bevestig, waarna de webserver herstart en de website actief wordt.
Voor gedetailleerde instructies, zie het hoofdstuk Je eerste website toevoegen in de ServBay documentatie.
Voorbeeld: "Hello ServBay!" basisdemo
Pas nu je projectcode aan zodat de root-URL (/
) "Hello ServBay!" laat zien.
Routing en controller instellen (
module.config.php
)Werk het bestand
module/Application/config/module.config.php
bij, zodat het de juiste routing en controller bevat: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', ], ], ], // ... overige routing ], ], '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', ], ], // ... overige configuratie ];
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
49Let op: Voeg deze configuratie toe aan de bestaande array in het bestand, zodat de
'home'
route en deController\IndexController::class
factory aanwezig zijn.Controller aanmaken of aanpassen (
IndexController.php
)Bewerk of maak
module/Application/src/Controller/IndexController.php
aan. Zorg ervoor dat deindexAction
een ViewModel met het bericht teruggeeft:php<?php declare(strict_types=1); namespace Application\Controller; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; class IndexController extends AbstractActionController { /** * Standaardactie om de welkomstpagina te tonen. */ public function indexAction() { // Geeft een ViewModel terug en stuurt de 'message' variabele naar de view return new ViewModel([ 'message' => 'Hello ServBay!', ]); } // ... overige action-methodes }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24View bestand aanmaken of aanpassen (
index.phtml
)Maak of bewerk
module/Application/view/application/index/index.phtml
zodat het het bericht laat zien:php<h1><?php echo $this->message; ?></h1>
1Zend Framework (Laminas) gebruikt
$this->message
om de controllerdata in de view te laten zien.
Website bezoeken
Open je browser en ga naar het door jou ingestelde domein, bijvoorbeeld https://servbay-zend-test.local
.
Als alles goed is ingesteld, verschijnt er een pagina met Hello ServBay!
. Hiermee is je Zend Framework project succesvol gestart binnen ServBay.
Database- en cachingintegraties: voorbeelden
ServBay biedt diverse database- en cachingdiensten. Hieronder vind je voorbeelden voor interactie met Memcached, Redis, MySQL en PostgreSQL in een Zend Framework-project.
Belangrijk: Elk voorbeeld is afzonderlijk en bedoeld ter illustratie. In de praktijk gebruik je de diensten die relevant zijn voor jouw project, en beheer je verbindingen bijvoorbeeld via dependency injection. Zorg dat de betreffende pakketten (MySQL, PostgreSQL, Memcached, Redis) in ServBay zijn gestart.
Database-interactie: Tabel aanmaken
We beginnen met het aanmaken van een simpele tabel via de Laminas DB component.
Laminas DB component installeren
Voer in de projectmap uit:
bashcomposer require laminas/laminas-db
1Database handmatig aanmaken
Maak met ServBay’s database-beheer hulpmiddelen (zoals phpMyAdmin, pgAdmin) eerst een database
servbay_zend_app
aan. De standaard gebruikersnaam isroot
, wachtwoord ispassword
(zowel voor MySQL/MariaDB als PostgreSQL).Tabel aanmaken script
Maak een PHP-script aan (bijvoorbeeld
create_users_table.php
) met onderstaande code:php<?php // create_users_table.php use Laminas\Db\Adapter\Adapter; use Laminas\Db\Sql\Sql; // Stel MySQL of MariaDB in als database-engine $adapter = new Adapter([ 'driver' => 'Pdo_Mysql', // Of 'Pdo_Pgsql' 'database' => 'servbay_zend_app', 'username' => 'root', 'password' => 'password', // Standaard wachtwoord 'hostname' => '127.0.0.1', // 'port' => 3306, // Standaard MySQL port // 'port' => 5432, // Standaard PostgreSQL port ]); $sql = new Sql($adapter); // Definieer SQL om de users-tabel aan te maken $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 { // Voer SQL uit $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
38Let op: Dit is een script voor handmatige uitvoering. Voor productie kun je beter Laminas Migrations gebruiken.
Voer het script uit via de terminal:
bashphp create_users_table.php
1
MySQL-integratie voorbeeld
Voorbeeld hoe je in een Zend Framework-controller MySQL aanroept.
Databaseverbinding configureren
Pas
config/autoload/global.php
aan voor MySQL: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', ], // ... overige config ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14Controller factory configureren (
module.config.php
)Pas de
controllers
-sectie aan zodat jeIndexController
een Adapter krijgt via een factory:php<?php // module/Application/config/module.config.php namespace Application; use Laminas\ServiceManager\Factory\InvokableFactory; use Laminas\Db\Adapter\AdapterInterface; return [ // ... overige config 'controllers' => [ 'factories' => [ Controller\IndexController::class => function($container) { $adapter = $container->get(AdapterInterface::class); return new Controller\IndexController($adapter); }, // overige controllers ], ], 'service_manager' => [ 'aliases' => [ AdapterInterface::class => 'Laminas\Db\Adapter\Adapter', ], 'factories' => [ 'Laminas\Db\Adapter\Adapter' => \Laminas\Db\Adapter\AdapterServiceFactory::class, ], ], // ... overige config ];
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
28Let op: Voeg deze delen toe aan de bestaande configuraties waar nodig.
Routing instellen (
module.config.php
)Voeg routes toe voor MySQL:
php<?php // module/Application/config/module.config.php namespace Application; use Laminas\Router\Http\Literal; return [ 'router' => [ 'routes' => [ // bestaande routes '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', ], ], ], ], ], // ... overige config ];
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
34Controller-methodes toevoegen (
IndexController.php
)Voeg onderstaande functionaliteit toe:
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; } /** * Toont een welkomstbericht. */ public function indexAction() { return new ViewModel([ 'message' => 'Hello ServBay!', ]); } /** * Voegt een gebruiker toe aan de 'users'-tabel (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 gebruiker succesvol toegevoegd.' : 'Toevoegen MySQL gebruiker mislukt.'; return new ViewModel([ 'message' => $message, ]); } /** * Haalt alle gebruikers uit de 'users'-tabel (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), ]); } // ... overige acties }
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
74Viewbestanden aanmaken
module/Application/view/application/index/mysql-add.phtml
:php<h1><?php echo $this->message; ?></h1>
1module/Application/view/application/index/mysql.phtml
:php<h1>MySQL Gebruikers</h1> <pre><?php echo $this->users; ?></pre>
1
2MySQL-test uitvoeren
Zorg dat MySQL actief is in ServBay. Ga naar
https://servbay-zend-test.local/mysql-add
om een gebruiker toe te voegen, en vervolgens naarhttps://servbay-zend-test.local/mysql
om gebruikersgegevens te bekijken.
PostgreSQL-integratie voorbeeld
Voorbeeld hoe je in een Zend Framework-controller PostgreSQL aanroept.
Databaseverbinding configureren
Pas
config/autoload/global.php
aan voor PostgreSQL (let op, overschrijf indien nodig de MySQL-configuratie):php<?php // config/autoload/global.php return [ 'db' => [ 'driver' => 'Pdo_Pgsql', 'database' => 'servbay_zend_app', 'username' => 'root', 'password' => 'password', 'hostname' => '127.0.0.1', 'port' => 5432, ], // ... overige config ];
1
2
3
4
5
6
7
8
9
10
11
12
13Controller factory instellen
(Zie instructies bij MySQL) Zorg dat de factory en dependency injection correct ingesteld zijn.Routing instellen (
module.config.php
)Voeg routes toe voor PostgreSQL:
php<?php // module/Application/config/module.config.php namespace Application; use Laminas\Router\Http\Literal; return [ 'router' => [ 'routes' => [ // bestaande routes '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', ], ], ], ], ], // ... overige config ];
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
34Controller-methodes toevoegen (
IndexController.php
)Voeg deze functionaliteit toe:
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; } /** * Voegt een gebruiker toe aan de 'users'-tabel (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 gebruiker succesvol toegevoegd.' : 'Toevoegen PostgreSQL gebruiker mislukt.'; return new ViewModel([ 'message' => $message, ]); } /** * Haalt alle gebruikers uit de 'users'-tabel (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
63Viewbestanden aanmaken
module/Application/view/application/index/pgsql-add.phtml
:php<h1><?php echo $this->message; ?></h1>
1module/Application/view/application/index/pgsql.phtml
:php<h1>PostgreSQL Gebruikers</h1> <pre><?php echo $this->users; ?></pre>
1
2PostgreSQL-test uitvoeren
Zorg dat PostgreSQL actief is in ServBay. Ga naar
https://servbay-zend-test.local/pgsql-add
om een gebruiker toe te voegen, en vervolgens naarhttps://servbay-zend-test.local/pgsql
om gebruikersgegevens te bekijken.
Memcached-integratie voorbeeld
Voorbeeld caching via Memcached in je controller.
Installeer Memcached adapter
Vul in
composer.json
bij de dependencies het volgende aan:json// composer.json { "require": { "laminas/laminas-skeleton-application": "^1.0", "laminas/laminas-cache-storage-adapter-memcached": "^2.0" // ... overige dependencies }, // ... overige configuratie }
1
2
3
4
5
6
7
8
9Voer daarna uit:
bashcomposer update
1ServBay bevat standaard de PHP
memcached
extensie.Routing instellen (
module.config.php
)Voeg de Memcached route toe:
php<?php // module/Application/config/module.config.php namespace Application; use Laminas\Router\Http\Literal; return [ 'router' => [ 'routes' => [ // bestaande routes 'memcached' => [ 'type' => Literal::class, 'options' => [ 'route' => '/memcached', 'defaults' => [ 'controller' => Controller\IndexController::class, 'action' => 'memcached', ], ], ], ], ], // ... overige configuratie ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24Controller-methode toevoegen (
IndexController.php
)Voeg deze caching-demo toe:
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 { // ... bestaande methodes /** * Toont Memcached cachinggebruik. */ public function memcachedAction() { // Creëer Memcached cache storage // Standaard in ServBay: 127.0.0.1:11211 $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! (Data uit bron, gecached op ' . 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
54Viewbestand aanmaken
module/Application/view/application/index/memcached.phtml
:php<h1>Memcached voorbeeld</h1> <p><?php echo $this->message; ?></p>
1
2Memcached-test uitvoeren
Zorg dat Memcached actief is in ServBay. Ga naar
https://servbay-zend-test.local/memcached
. Eerste keer zie je "CACHE MISS"; tijdens de cachetijd (300 seconden) blijft het "CACHE HIT" en verandert de tijd niet.
Redis-integratie voorbeeld
Voorbeeld caching via Redis in je controller.
Installeer Redis adapter
Vul in
composer.json
bij de dependencies het volgende aan:json// composer.json { "require": { "laminas/laminas-skeleton-application": "^1.0", "laminas/laminas-cache-storage-adapter-redis": "^2.0", "ext-redis": "*" // ... overige dependencies }, // ... overige configuratie }
1
2
3
4
5
6
7
8
9
10Voer daarna uit:
bashcomposer update
1ServBay bevat standaard de PHP
redis
extensie.Routing instellen (
module.config.php
)Voeg de Redis route toe:
php<?php // module/Application/config/module.config.php namespace Application; use Laminas\Router\Http\Literal; return [ 'router' => [ 'routes' => [ // bestaande routes 'redis' => [ 'type' => Literal::class, 'options' => [ 'route' => '/redis', 'defaults' => [ 'controller' => Controller\IndexController::class, 'action' => 'redis', ], ], ], ], ], // ... overige configuratie ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24Controller-methode toevoegen (
IndexController.php
)Voeg deze caching-demo toe:
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 { // ... bestaande methodes /** * Toont Redis cachinggebruik. */ public function redisAction() { // Creëer Redis cache storage // Standaard in ServBay: 127.0.0.1:6379 $cache = StorageFactory::factory([ 'adapter' => [ 'name' => 'redis', 'options' => [ 'server' => [ 'host' => '127.0.0.1', 'port' => 6379, // 'database' => 0, // 'password' => null, ], 'ttl' => 300, ], ], 'plugins' => [ 'serializer', 'exception_handler' => ['throw_exceptions' => false], ], ]); $cacheKey = 'my_redis_data'; $cachedData = $cache->getItem($cacheKey, $success); if (!$success) { $cachedData = 'Hello Redis! (Data uit bron, gecached op ' . 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
54
55
56
57Viewbestand aanmaken
module/Application/view/application/index/redis.phtml
:php<h1>Redis voorbeeld</h1> <p><?php echo $this->message; ?></p>
1
2Redis-test uitvoeren
Zorg dat Redis actief is in ServBay. Ga naar
https://servbay-zend-test.local/redis
. Eerste keer zie je "CACHE MISS"; tijdens de cachetijd (300 seconden) blijft het "CACHE HIT" en verandert de tijd niet.
Samenvatting
Je hebt nu een Zend Framework (Laminas) project succesvol opgezet, geconfigureerd en uitgevoerd binnen de ServBay lokale ontwikkelomgeving. Je leerde om het websitebeheer van ServBay in te stellen, een webserver te koppelen aan de public
map van je project, en hoe je ServBay’s MySQL, PostgreSQL databases en Memcached, Redis cachingdiensten integreert en gebruikt.
ServBay maakt het opzetten van lokale ontwikkelomgevingen eenvoudig, zodat jij je kunt focussen op het ontwikkelen van je applicaties. Dankzij de uitgebreide pakketopties en flexibele configuratie simuleer je eenvoudig productieomgevingen, wat je ontwikkeling efficiënt en professioneel maakt.