Créer et exécuter un projet Zend Framework (Laminas) dans ServBay
Vue d'ensemble
Zend Framework (désormais partie du projet Laminas) est un puissant framework PHP open-source, doté de composants orientés objet de haute qualité pour le développement d’applications et de services web modernes. Réputé pour sa flexibilité, sa conception modulaire et ses performances élevées, il est idéal pour créer aussi bien de simples sites web que des applications d’entreprise complexes.
ServBay est un environnement de développement web local conçu pour macOS et Windows. Il intègre PHP, plusieurs serveurs web (Caddy, Nginx), des bases de données (MySQL, PostgreSQL, MongoDB), des services de cache (Redis, Memcached) et divers outils de développement. ServBay facilite la gestion et la configuration de ces logiciels, rendant la mise en place et l'exécution de projets PHP locale très simple.
Ce guide vous accompagnera pour créer et lancer un projet Zend Framework (Laminas) dans ServBay, et vous montrera comment connecter votre projet aux services de base de données et de cache proposés par ServBay.
Prérequis
Avant de commencer, assurez-vous d’avoir effectué les étapes suivantes :
- Installer ServBay : ServBay est installé et lancé sur votre système macOS ou Windows. Si ce n’est pas encore fait, rendez-vous sur le site officiel de ServBay pour suivre les instructions de téléchargement et d’installation.
- Packages ServBay requis : Vérifiez que ServBay contient et exécute les services nécessaires :
- Au moins une version de PHP (PHP 8.x ou supérieure recommandée, car les dernières versions de Zend Framework / Laminas requièrent PHP récent).
- Un serveur web (Caddy ou Nginx).
- Composer (généralement préinstallé dans ServBay).
- Les services de base de données (MySQL, PostgreSQL) et de cache (Memcached, Redis) que vous souhaitez utiliser. Vous pouvez facilement démarrer ces services via le panneau de contrôle ServBay.
Créer un projet Zend Framework
ServBay recommande de regrouper tous vos projets web dans un dossier dédié :
- macOS :
/Applications/ServBay/www
- Windows :
C:\ServBay\www
Accéder au répertoire racine des sites
Lancez votre terminal, puis naviguez jusqu’au dossier recommandé par ServBay :
macOS :
bashcd /Applications/ServBay/www
1Windows :
cmdcd C:\ServBay\www
1Créer le projet avec Composer
Composer est déjà intégré à ServBay. Utilisez la commande
create-project
pour générer une nouvelle application squelette Zend Framework (Laminas), que nous placerons dans le dossierservbay-zend-app
:bashcomposer create-project laminas/laminas-skeleton-application servbay-zend-app
1Cela télécharge l’application squelette de Zend Framework (Laminas) dans le dossier
servbay-zend-app
et installe toutes ses dépendances.Accéder au dossier du projet
Placez-vous dans le dossier du projet nouvellement créé :
bashcd servbay-zend-app
1
Configurer le serveur web
Pour accéder à votre projet Zend Framework depuis un navigateur, vous devez configurer un site dans ServBay.
- Ouvrir le panneau de contrôle ServBay : Lancez l’application ServBay.
- Accéder aux paramètres de sites web : Cliquez sur l’onglet Sites (Websites) dans le panneau de contrôle.
- Ajouter un nouveau site : Cliquez sur le bouton
+
en bas à gauche. - Compléter les informations du site :
- Nom (Name) : Choisissez un nom reconnaissable pour votre site, par exemple
My Zend Dev Site
. - Domaine (Domain) : Entrez le domaine que vous souhaitez utiliser dans votre navigateur. Pour éviter toute collision avec des domaines réels, ajoutez
.local
ou.test
à la fin, par ex.servbay-zend-test.local
. ServBay configurera automatiquement la résolution DNS locale. - Type de site (Website Type) : Sélectionnez
PHP
. - Version PHP (PHP Version) : Sélectionnez la version PHP désirée (ex.
8.3
). Assurez-vous qu’elle est installée et opérationnelle dans ServBay. - Racine du site (Document Root) : C’est le dossier exposé par le serveur web. Le point d’entrée de Zend Framework (
index.php
) se situe dans le dossierpublic
du projet. Le chemin doit donc être :/Applications/ServBay/www/servbay-zend-app/public
.
- Nom (Name) : Choisissez un nom reconnaissable pour votre site, par exemple
- Sauvegarder et redémarrer : Cliquez sur Sauvegarder (Save). ServBay vous invite à appliquer les changements. Après confirmation, le serveur web sera rechargé et le site sera disponible.
Consultez la documentation ServBay (section Ajouter le premier site) pour plus de détails sur la configuration.
Exemple "Hello ServBay!"
Modifions le code du projet pour afficher "Hello ServBay!" en accédant à l’URL racine (/
).
Configurer les routes et le contrôleur (
module.config.php
)Éditez le fichier
module/Application/config/module.config.php
pour inclure la configuration de base des routes et du contrôleur :php// ... autres routes // ... autres configurations // ... Dans le fichier module.config.php // ... Seuls les commentaires chinois sont traduits
1
2
3
4Remarque : Cette partie doit être insérée dans le tableau de configuration existant, en veillant à la présence de la route
'home'
et du contrôleurController\IndexController::class
dans les définitions de factory.Créer ou modifier le contrôleur (
IndexController.php
)Dans
module/Application/src/Controller/IndexController.php
, le contrôleur doit fournir la variablemessage
à la vue :phpclass IndexController extends AbstractActionController { /** * Action par défaut pour afficher la page d’accueil. */ public function indexAction() { // Retourne un ViewModel en passant la variable 'message' à la vue return new ViewModel([ 'message' => 'Hello ServBay!', ]); } // ... autres méthodes d'action }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Créer ou modifier le fichier vue (
index.phtml
)Dans
module/Application/view/application/index/index.phtml
:php<h1><?php echo $this->message; ?></h1>
1On utilise ici le helper de vue
$this->message
pour afficher les données transmises par le contrôleur.
Accéder au site
Ouvrez votre navigateur et accédez au domaine configuré dans ServBay, par exemple https://servbay-zend-test.local
.
Si tout est correctement configuré, la page affichera : Hello ServBay!
, signe que votre projet Zend Framework fonctionne dans ServBay.
Exemple d'intégration bases de données et cache
ServBay propose plusieurs bases de données et systèmes de cache. Voici comment connecter et utiliser Memcached, Redis, MySQL, et PostgreSQL dans votre projet Zend Framework.
Important : Ces exemples de connexion sont indépendants les uns des autres. En production, vous choisirez la base de données et le(s) service(s) de cache adaptés à vos besoins, en gérant ces connexions avec des mécanismes comme l’injection de dépendances. Lancez toujours les services nécessaires via le panneau de contrôle ServBay avant d’exécuter les exemples.
Exemple de création de table avec une base de données
Avec le composant Laminas DB, voici comment créer manuellement une table sans passer par les migrations automatiques.
Installer le composant Laminas DB
À la racine du projet :
bashcomposer require laminas/laminas-db
1Créer la base de données manuellement
Avant de poursuivre, créez une base
servbay_zend_app
dans votre service MySQL ou PostgreSQL via phpMyAdmin, pgAdmin, MongoDB Compass, etc. Les identifiants par défaut ServBay :- MySQL/MariaDB : utilisateur
root
, mot de passepassword
- PostgreSQL : utilisateur
root
, mot de passepassword
- MySQL/MariaDB : utilisateur
Définir et exécuter le script de création de table
Créez un fichier PHP
create_users_table.php
:php// Seuls les commentaires chinois sont traduits // ... // Supposons que vous utilisez MySQL ou MariaDB // ... // Définit la création de la table users en SQL // ... // Exécute le SQL // ... // Ceci est un exemple manuel. Utilisez Laminas Migrations pour la gestion réelle du schéma.
1
2
3
4
5
6
7
8
9Lancez le script :
bashphp create_users_table.php
1
Exemple d'intégration MySQL
Comment insérer et lire des données via MySQL dans votre contrôleur Zend Framework.
Configurer la connexion MySQL
Dans
config/autoload/global.php
:php// Seuls les commentaires chinois sont traduits // ...
1
2Configurer la factory du contrôleur (
module.config.php
)Pour injecter l’adapteur
Laminas\Db\Adapter\Adapter
:php// Seuls les commentaires chinois sont traduits // ... // Récupère l'adapteur depuis le service container // ... // Définit l'alias AdapterInterface // Définit la factory pour l'adapteur
1
2
3
4
5
6Configurer les routes MySQL (
module.config.php
)Ajoutez les routes dans le tableau
routes
.Ajouter les méthodes du contrôleur (
IndexController.php
)Injectez l’adapteur dans le constructeur et créez deux méthodes pour l’ajout et la lecture des utilisateurs :
php// Seuls les commentaires chinois sont traduits // ... // Action pour ajouter un utilisateur // ... // Action pour lister tous les utilisateurs // ... // Transforme le résultat en chaîne JSON pour la vue
1
2
3
4
5
6
7Créer les fichiers de vue
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 Users</h1> <pre><?php echo $this->users; ?></pre>
1
2Tester la connexion MySQL
Assurez-vous que le service MySQL fonctionne via ServBay.
- Accédez à
https://servbay-zend-test.local/mysql-add
pour ajouter un utilisateur. - Accédez à
https://servbay-zend-test.local/mysql
pour consulter la tableusers
(au format JSON).
- Accédez à
Exemple d'intégration PostgreSQL
Connexion et lecture via PostgreSQL dans le contrôleur Zend Framework.
Configurer la connexion PostgreSQL
Modifiez
config/autoload/global.php
selon vos besoins :php// Seuls les commentaires chinois sont traduits // ...
1
2Configurer la factory du contrôleur
Si déjà configurée pour MySQL, inutile de le refaire.
Configurer les routes PostgreSQL (
module.config.php
)Ajoutez les routes pour l’ajout et la lecture via PostgreSQL.
Ajouter les méthodes du contrôleur (
IndexController.php
)Voici les nouvelles méthodes :
php// Seuls les commentaires chinois sont traduits // ... // Action pour ajouter un utilisateur // ... // Action pour lister tous les utilisateurs // ...
1
2
3
4
5
6Créer les fichiers de vue
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 Users</h1> <pre><?php echo $this->users; ?></pre>
1
2Tester la connexion PostgreSQL
- Allez sur
https://servbay-zend-test.local/pgsql-add
pour ajouter un utilisateur. - Puis visitez
https://servbay-zend-test.local/pgsql
pour consulter les utilisateurs (JSON).
- Allez sur
Exemple d'intégration Memcached
Utilisez Memcached comme système de cache dans le contrôleur.
Installer l’adapteur Memcached
Dans le fichier composer.json :
json// Seuls les commentaires chinois sont traduits // ...
1
2Puis :
bashcomposer update
1ServBay intègre déjà l’extension PHP
memcached
.Configurer la route Memcached
Ajoutez la route
/memcached
.Ajouter la méthode du contrôleur (
IndexController.php
)php/** * Action pour démontrer l’utilisation de Memcached. */ public function memcachedAction() { // Crée une instance de cache Memcached // Memcached fonctionne sur 127.0.0.1:11211 par défaut // Tente de récupérer les données depuis le cache // Si le cache est absent // Si le cache est présent // Retourne le résultat à la vue }
1
2
3
4
5
6
7
8
9
10
11
12Créer le fichier de vue
module/Application/view/application/index/memcached.phtml
:php<h1>Exemple Memcached</h1> <p><?php echo $this->message; ?></p>
1
2Tester Memcached
- Service Memcached démarré dans ServBay.
- Visitez
https://servbay-zend-test.local/memcached
: le message "CACHE MISS" s’affiche la première fois, puis "CACHE HIT" tant que le cache est valide (300 secondes).
Exemple d'intégration Redis
Utilisez Redis comme système de cache ou de stockage.
Installer l’adapteur Redis
Dans le fichier composer.json :
json// Seuls les commentaires chinois sont traduits // ...
1
2Puis :
bashcomposer update
1ServBay intègre déjà l’extension PHP
redis
.Configurer la route Redis
Ajoutez la route
/redis
.Ajouter la méthode du contrôleur (
IndexController.php
)php/** * Action pour démontrer l’utilisation de Redis. */ public function redisAction() { // Crée une instance de cache Redis // Redis fonctionne sur 127.0.0.1:6379 par défaut // Tente de récupérer les données depuis le cache // Si le cache est absent // Si le cache est présent // Retourne le résultat à la vue }
1
2
3
4
5
6
7
8
9
10
11
12Créer le fichier de vue
module/Application/view/application/index/redis.phtml
:php<h1>Exemple Redis</h1> <p><?php echo $this->message; ?></p>
1
2Tester Redis
- Service Redis démarré dans ServBay.
- Visitez
https://servbay-zend-test.local/redis
: "CACHE MISS" la première fois, puis "CACHE HIT" tant que le cache reste actif (300 secondes).
Conclusion
À présent, vous savez comment créer, configurer et exécuter un projet Zend Framework (Laminas) dans l’environnement local ServBay. Vous avez appris à pointer le serveur web vers le dossier public via la fonctionnalité site de ServBay, et à intégrer les bases de données MySQL, PostgreSQL ainsi que les systèmes de cache Memcached et Redis dans votre projet.
ServBay simplifie la mise en place et la gestion de votre environnement de développement, afin que vous puissiez vous concentrer sur la programmation et le développement de vos projets. Grâce à ses nombreux services et à sa configuration flexible, ServBay vous permet de simuler facilement un environnement de production local et d’augmenter votre efficacité au quotidien.