Een Zend Framework (Laminas) Project Maken en Uitvoeren in ServBay
Overzicht
Zend Framework (tegenwoordig onderdeel van het Laminas Project) is een krachtig open source PHP-framework dat een reeks hoogwaardige, objectgeoriënteerde componenten biedt voor moderne webapplicaties en services. Dankzij de flexibiliteit, modulaire opbouw en hoge prestaties is het een uitgelezen keuze voor alles van eenvoudige websites tot complexe enterprise-applicaties.
ServBay is een speciaal voor macOS ontworpen lokale webontwikkelomgeving, met integratie van PHP, meerdere webservers (zoals Caddy en Nginx), databases (MySQL, PostgreSQL, MongoDB), caching-services (Redis, Memcached) en andere ontwikkeltools. ServBay maakt het eenvoudig om al deze software te installeren, configureren en beheren, waardoor het lokaal opzetten en draaien van PHP-frameworkprojecten kinderspel wordt.
In deze handleiding leert u stap voor stap hoe u binnen ServBay een Zend Framework (Laminas) project opzet en uitvoert, inclusief het integreren van de database- en cachingdiensten die ServBay biedt.
Vereisten
Controleer voordat u begint of u aan onderstaande voorwaarden voldoet:
- Installeer ServBay: U heeft ServBay succesvol geïnstalleerd en gestart op macOS. Indien nog niet geïnstalleerd, bezoek de officiële ServBay-website voor download- en installatie-instructies.
- ServBay pakketten: De benodigde pakketten in ServBay zijn geïnstalleerd en actief, waaronder:
- Ten minste één PHP-versie (aanbevolen: PHP 8.x of hoger, omdat moderne Zend Framework/Laminas-versies deze vereisen).
- Een webserver (Caddy of Nginx).
- Composer (standaard inbegrepen in ServBay).
- De database- en cachingservices die u wilt gebruiken (zoals MySQL, PostgreSQL, Memcached, Redis). U kunt deze eenvoudig activeren in het ServBay-configuratiescherm.
Een Zend Framework Project Aanmaken
ServBay adviseert om al uw websiteprojecten te plaatsen in de map /Applications/ServBay/www
. Op deze manier kan ServBay uw sites automatisch beheren en configureren.
Ga naar de rootmap van de website
Open Terminal en navigeer naar de aanbevolen map:
bashcd /Applications/ServBay/www
1Maak een nieuw project met Composer
Composer is reeds standaard inbegrepen bij ServBay. Gebruik het
create-project
commando van Composer om een nieuwe Zend Framework (Laminas skeleton application) aan te maken. We plaatsen het project in een submapservbay-zend-app
:bashcomposer create-project laminas/laminas-skeleton-application servbay-zend-app
1Hiermee wordt het Laminas-skelet gedownload in de map
servbay-zend-app
en worden alle vereiste afhankelijkheden geïnstalleerd.Navigeer naar de projectmap
Ga naar de zojuist aangemaakte projectmap:
bashcd servbay-zend-app
1
Webserver Configureren
Om uw Zend Framework project in de browser toegankelijk te maken, moet u in ServBay een nieuwe website configureren.
- Open het ServBay-dashboard: Start de ServBay-applicatie.
- Ga naar website-instellingen: Klik op het tabblad Websites in het dashboard.
- Voeg een website toe: Klik linksonder op de
+
-knop om een nieuwe website toe te voegen. - Vul de websitegegevens in:
- Naam: Kies een herkenbare naam, bijvoorbeeld
My Zend Dev Site
. - Domein: Vul het domein in waarmee u de site lokaal wilt benaderen. Gebruik een veilige extensie zoals
.local
of.test
, bijvoorbeeldservbay-zend-test.local
. ServBay regelt de lokale DNS-resolutie automatisch. - Website type: Kies
PHP
. - PHP-versie: Selecteer de gewenste PHP-versie (bijvoorbeeld
8.3
). Controleer of deze versie actief is in ServBay. - Rootmap (Document Root): Dit is de map die aan de webserver wordt aangeboden. Het hoofdbestand (
index.php
) van Laminas staat in depublic
-map van uw project. Stel de rootmap daarom in op/Applications/ServBay/www/servbay-zend-app/public
.
- Naam: Kies een herkenbare naam, bijvoorbeeld
- Opslaan & herstarten: Klik op Opslaan. Na bevestiging worden de nieuwe instellingen toegepast en de webserver herstart.
Zie voor gedetailleerde uitleg het hoofdstuk Eerste website toevoegen in de ServBay-documentatie.
Basisvoorbeeld "Hello ServBay!"
We passen nu de projectcode aan zodat de root URL (/
) de tekst "Hello ServBay!" toont.
Routes en controllers instellen (module.config.php)
Bewerk het bestand
module/Application/config/module.config.php
en zorg dat het onderstaande baselineconfiguratie 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', ], ], ], // ... overig routings ], ], '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 configuraties ];
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: Dit is een fragment van
module.config.php
. Zorg dat de'home'
-route en de factory vanController\IndexController::class
aanwezig zijn.Controller aanmaken of bewerken (IndexController.php)
Maak of bewerk het bestand
module/Application/src/Controller/IndexController.php
als volgt:php<?php declare(strict_types=1); namespace Application\Controller; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; class IndexController extends AbstractActionController { /** * Standaardactie toont de welkomstpagina. */ public function indexAction() { // Retourneer een ViewModel met de 'message'-variabele voor de view return new ViewModel([ 'message' => 'Hello ServBay!', ]); } // ... 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
24View-bestand maken of bewerken (index.phtml)
Maak of bewerk het bestand
module/Application/view/application/index/index.phtml
met de volgende code:php<h1><?php echo $this->message; ?></h1>
1Hiermee wordt de door de controller aangeboden
message
weergegeven.
Website Benaderen
Open uw browser en ga naar het gekozen domein, bijvoorbeeld https://servbay-zend-test.local
.
Als alles correct is ingesteld, ziet u "Hello ServBay!" op de pagina. Uw Zend Framework-project werkt nu lokaal onder ServBay.
Voorbeelden van Database- en Cache-integratie
ServBay levert meerdere databases en caching services. Hieronder vindt u voorbeelden van het verbinden met en gebruiken van Memcached, Redis, MySQL en PostgreSQL in uw Laminas-project.
Belangrijk: Deze voorbeelden zijn bedoeld ter illustratie. In productie kiest u doorgaans één database en één of meerdere cachingservices (en beheert u connecties via dependency injection). Zorg dat de relevante diensten in ServBay gestart zijn voordat u de voorbeelden uitvoert (MySQL, PostgreSQL, Memcached, Redis).
Voorbeeld Database Interactie - Tabel Aanmaken
We laten eerst zien hoe u met het Laminas DB-component handmatig een eenvoudige tabel aanmaakt. Dit gebeurt buiten de officiële Migrations-tool om.
Laminas DB-component installeren
Installeer via Composer in de projectroot:
bashcomposer require laminas/laminas-db
1Database handmatig aanmaken
Maak via een databasebeheertool in ServBay een database genaamd
servbay_zend_app
aan. De standaard gebruikersnaam en wachtwoord zijn zowel bij MySQL/MariaDB als PostgreSQL:root
/password
.Maak en voer het script voor tabelcreatie uit
Plaats in uw project (of tijdelijk) een bestand, bijvoorbeeld
create_users_table.php
, met deze code:php<?php // create_users_table.php use Laminas\Db\Adapter\Adapter; use Laminas\Db\Sql\Sql; // Stel in: MySQL of MariaDB $adapter = new Adapter([ 'driver' => 'Pdo_Mysql', // Of 'Pdo_Pgsql' 'database' => 'servbay_zend_app', 'username' => 'root', 'password' => 'password', // Standaard in ServBay 'hostname' => '127.0.0.1', // 'port' => 3306, // Standaard MySQL // 'port' => 5432, // Standaard PostgreSQL ]); $sql = new Sql($adapter); // Defineer SQL voor tabel '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 { // 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 script is bedoeld als handmatig hulpmiddel. Gebruik voor beheer in productie doorgaans Laminas Migrations.
Voer het script uit via de terminal:
bashphp create_users_table.php
1
MySQL Integratie Voorbeeld
Een demonstratie hoe u binnen de controller van Zend Framework met MySQL werkt.
Configureer databaseverbinding
Open
config/autoload/global.php
en voeg de MySQL-instellingen toe of wijzig bestaande:php<?php // config/autoload/global.php return [ 'db' => [ 'driver' => 'Pdo_Mysql', 'database' => 'servbay_zend_app', // Zorg dat deze database bestaat 'username' => 'root', // Standaard ServBay 'password' => 'password', 'hostname' => '127.0.0.1', 'port' => 3306, 'charset' => 'utf8mb4', ], // ... overige globale instellingen ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14Stel de controller-factory in (module.config.php)
Om de database-adapter te injecteren, past u de
controllers
sectie vanmodule/Application/config/module.config.php
als volgt aan:php<?php // module/Application/config/module.config.php namespace Application; use Laminas\ServiceManager\Factory\InvokableFactory; // Laat staan voor elders use Laminas\Db\Adapter\AdapterInterface; return [ // ... overige instellingen 'controllers' => [ 'factories' => [ Controller\IndexController::class => function($container) { $adapter = $container->get(AdapterInterface::class); return new Controller\IndexController($adapter); }, // Andere controllers indien nodig ], ], 'service_manager' => [ 'aliases' => [ AdapterInterface::class => 'Laminas\Db\Adapter\Adapter', ], 'factories' => [ 'Laminas\Db\Adapter\Adapter' => \Laminas\Db\Adapter\AdapterServiceFactory::class, ], ], // ... 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
28Let op: Voeg bovenstaande toe/werk toe naar uw bestaande configuratie.
Voeg de routes toe (module.config.php)
In
module/Application/config/module.config.php
voegt u deze routes toe:php<?php // module/Application/config/module.config.php namespace Application; use Laminas\Router\Http\Literal; // ... andere uses 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 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
35Voeg controller-methoden toe (IndexController.php)
Werk
module/Application/src/Controller/IndexController.php
bij met onderstaande constructor en methoden: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; // Injecteer AdapterInterface public function __construct(AdapterInterface $adapter) { $this->adapter = $adapter; } /** * Welkomstactie */ public function indexAction() { return new ViewModel([ 'message' => 'Hello ServBay!', ]); } /** * Gebruiker toevoegen aan 'users'-tabel (MySQL) */ public function mysqlAddAction() { $sql = new Sql($this->adapter); $insert = $sql->insert('users') ->values([ 'name' => 'ServBay Demo User', 'email' => '[email protected]', ]); $statement = $sql->prepareStatementForSqlObject($insert); $result = $statement->execute(); $message = $result->getAffectedRows() > 0 ? 'MySQL gebruiker succesvol toegevoegd.' : 'Toevoegen van MySQL gebruiker mislukt.'; return new ViewModel([ 'message' => $message, ]); } /** * Toon alle gebruikers uit tabel 'users' (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
74
75
76Views aanmaken
Maak
module/Application/view/application/index/mysql-add.phtml
:php<h1><?php echo $this->message; ?></h1>
1Maak
module/Application/view/application/index/mysql.phtml
:php<h1>MySQL Gebruikers</h1> <pre><?php echo $this->users; ?></pre>
1
2Voorbeeld benaderen
Zet de MySQL-dienst in ServBay aan. Ga dan naar
https://servbay-zend-test.local/mysql-add
om een gebruiker toe te voegen. U ziet de boodschap "MySQL gebruiker succesvol toegevoegd." Bezoekhttps://servbay-zend-test.local/mysql
om gebruikers uit de tabel te bekijken (in JSON-formaat).
PostgreSQL Integratie Voorbeeld
Toon hoe u PostgreSQL gebruikt vanuit de Zend Framework-controller.
Databaseconfiguratie instellen
In
config/autoload/global.php
schakelt u eventueel dedb
-config naar PostgreSQL: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 instellingen ];
1
2
3
4
5
6
7
8
9
10
11
12
13Controllerfactory en service manager instellen
Deze zijn gelijk aan het MySQL-voorbeeld. Geen extra aanpassingen nodig als u ze al heeft ingesteld.
Routes toevoegen (module.config.php)
Voeg in
module/Application/config/module.config.php
deze routes toe: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 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
34Controller-methoden toevoegen (IndexController.php)
Voeg deze methoden toe in uw controller:
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; } // ... reeds bestaande acties /** * Gebruiker toevoegen (PostgreSQL) */ public function pgsqlAddAction() { $sql = new Sql($this->adapter); $insert = $sql->insert('users') ->values([ 'name' => 'ServBay Demo User', 'email' => '[email protected]', ]); $statement = $sql->prepareStatementForSqlObject($insert); $result = $statement->execute(); $message = $result->getAffectedRows() > 0 ? 'PostgreSQL gebruiker succesvol toegevoegd.' : 'Toevoegen van PostgreSQL gebruiker mislukt.'; return new ViewModel([ 'message' => $message, ]); } /** * Toon alle gebruikers uit tabel 'users' (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
65Views aanmaken
Maak
module/Application/view/application/index/pgsql-add.phtml
:php<h1><?php echo $this->message; ?></h1>
1Maak
module/Application/view/application/index/pgsql.phtml
:php<h1>PostgreSQL Gebruikers</h1> <pre><?php echo $this->users; ?></pre>
1
2Voorbeeld benaderen
Start de PostgreSQL-dienst in ServBay. Ga naar
https://servbay-zend-test.local/pgsql-add
om een gebruiker toe te voegen ("PostgreSQL gebruiker succesvol toegevoegd."). Bezoek daarnahttps://servbay-zend-test.local/pgsql
voor het overzicht in JSON-formaat.
Memcached Integratie Voorbeeld
Toon hoe u Memcached als cache gebruikt in uw controller.
Installeer Memcached adapter
In uw
composer.json
:json// composer.json { "require": { "laminas/laminas-skeleton-application": "^1.0", "laminas/laminas-cache-storage-adapter-memcached": "^2.0" // ... andere vereisten }, // ... overige configuratie }
1
2
3
4
5
6
7
8
9Installeer/vernieuw de pakketten:
bashcomposer update
1Let op: PHP's
memcached
extensie is standaard aanwezig in ServBay.Voeg nieuwe route toe (module.config.php)
In
module/Application/config/module.config.php
: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
24Voeg de controlleractie toe (IndexController.php)
Voeg de volgende methode 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 { // ... constructor en andere acties /** * Demonstratie Memcached-gebruik. */ public function memcachedAction() { // Maak Memcached cache storage aan, standaard op 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 from source, cached at ' . 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
53View aanmaken
module/Application/view/application/index/memcached.phtml
:php<h1>Memcached Voorbeeld</h1> <p><?php echo $this->message; ?></p>
1
2Voorbeeld benaderen
Zorg dat Memcached actief is in ServBay. Ga naar
https://servbay-zend-test.local/memcached
. Zie eerst "CACHE MISS" (eerste keer/na verloop tijd), daarna "CACHE HIT" bij herladen binnen 300 seconden.
Redis Integratie Voorbeeld
Gebruik Redis als (cache)dataopslag in uw controller.
Installeer Redis adapter
In uw
composer.json
:json// composer.json { "require": { "laminas/laminas-skeleton-application": "^1.0", "laminas/laminas-cache-storage-adapter-redis": "^2.0", "ext-redis": "*" // ... andere vereisten }, // ... overige configuratie }
1
2
3
4
5
6
7
8
9
10Installeer/ververs de pakketten:
bashcomposer update
1De PHP extensie
redis
is standaard aanwezig in ServBay.Voeg Redis-route toe (module.config.php)
Voeg toe in
module/Application/config/module.config.php
: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
24Voeg de controlleractie toe (IndexController.php)
Voeg deze methode 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 { // ... constructor en andere acties /** * Demonstratie Redis-gebruik. */ public function redisAction() { // Maak Redis cache storage aan, standaard op 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 from source, cached at ' . 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
56View aanmaken
module/Application/view/application/index/redis.phtml
:php<h1>Redis Voorbeeld</h1> <p><?php echo $this->message; ?></p>
1
2Voorbeeld benaderen
Start Redis in ServBay. Bezoek
https://servbay-zend-test.local/redis
. Bij eerste bezoek "CACHE MISS", daarna "CACHE HIT" zolang de cache geldig is (binnen 5 minuten).
Samenvatting
Met bovenstaande stappen heeft u succesvol een Zend Framework (Laminas) project opgezet, geconfigureerd en uitgevoerd in de ServBay-ontwikkelomgeving. U weet nu hoe u met de Websites-functie van ServBay een webserver instelt, en hoe u MySQL, PostgreSQL, Memcached en Redis kunt integreren en aanroepen in uw project.
ServBay maakt het opzetten en beheren van een lokale ontwikkelomgeving eenvoudig, zodat u zich volledig kunt richten op het ontwikkelen van hoogwaardige applicaties. Met het brede aanbod aan softwarepakketten van ServBay simuleert u een productie-omgeving lokaal en vergroot u uw ontwikkelproductiviteit aanzienlijk.