Créer et exécuter un projet PHPixie sur macOS avec ServBay
PHPixie est un framework PHP léger et performant, conçu pour le développement rapide d'applications web. Il s’appuie sur le paradigme HMVC (Hierarchical Model-View-Controller), offrant une structure de code claire ainsi qu’une gestion efficace des requêtes. Sa simplicité, sa flexibilité et ses performances élevées en font un choix privilégié pour de nombreux développeurs.
Principales caractéristiques et avantages de PHPixie
- Léger : Le cœur du système PHPixie est minimaliste, contenant seulement les composants essentiels à la création d’une application. Démarrage et exécution se font très rapidement.
- Haute performance : La conception du framework est orientée vers l’efficacité, capable de gérer de nombreuses requêtes simultanées. Il est idéal pour les applications exigeant de bonnes performances.
- Facile à apprendre : Une API claire et une documentation détaillée permettent aux développeurs de s’approprier l’outil rapidement.
- Flexible : La structure souple et faiblement couplée laisse aux développeurs le choix d’intégrer des bibliothèques et composants tiers selon leurs besoins.
- Communauté active : Une communauté dynamique propose de nombreux modules et ressources, ainsi que du support.
PHPixie vous aide à développer efficacement des applications web performantes et robustes, adaptées aussi bien aux petits projets qu'aux applications de grande envergure.
Créer et exécuter un projet PHPixie avec ServBay
Ce guide vous explique comment utiliser l’environnement de développement local ServBay pour créer et exécuter un projet PHPixie. Nous utiliserons l’intégration PHP, l’outil de gestion des dépendances Composer et la fonction « Sites » de ServBay pour configurer le serveur web, puis nous verrons comment accéder au projet en local et intégrer des bases de données et systèmes de cache.
Prérequis
- ServBay doit être installé et en cours d’exécution sur macOS. ServBay intègre PHP, Composer, plusieurs bases de données (MySQL, PostgreSQL, MongoDB, Redis, etc.) ainsi que le serveur web Caddy.
- Savoir réaliser des opérations de base en ligne de commande.
Créer un projet PHPixie
Chemin recommandé pour les sites web
ServBay recommande de placer vos projets web locaux dans le dossier /Applications/ServBay/www
pour en faciliter la gestion et le contrôle des accès.
- Vérifier l’installation de Composer : ServBay inclut nativement Composer ; aucune installation supplémentaire n’est requise. Ouvrez le terminal et tapez
composer --version
pour vérifier. - Créer le dossier du projet : Dans le dossier racine recommandé, créez un nouveau répertoire pour votre projet PHPixie et placez-vous à l’intérieur :bash
cd /Applications/ServBay/www mkdir servbay-phpixie-app cd servbay-phpixie-app
1
2
3 - Créer le projet avec Composer : Dans le répertoire du projet, exécutez la commande Composer pour générer un modèle de projet PHPixie :bashComposer téléchargera PHPixie et ses dépendances dans le dossier courant.
composer create-project phpixie/project .
1
Configuration du serveur web
Utilisez la fonction Sites de ServBay pour configurer le serveur web Caddy et pointer correctement vers votre projet PHPixie.
Ouvrez l’interface de l’application ServBay.
Rendez-vous dans la liste Sites web (Websites).
Cliquez pour ajouter un nouveau site.
Renseignez les informations de configuration :
- Nom : par exemple
Mon Premier Site Développement PHPixie
(nom d’identification interne dans ServBay). - Nom de domaine : par exemple
servbay-phpixie-test.local
(ce sera votre domaine de développement local dans le navigateur). - Type de site : choisissez
PHP
. - Version de PHP : sélectionnez la version souhaitée, par exemple
8.3
. - Racine du site (Document Root) : indiquez le dossier
web
de votre projet :/Applications/ServBay/www/servbay-phpixie-app/web
.
Pourquoi le dossier
/web
?Le fichier d’entrée du projet PHPixie est
web/index.php
. Pour des raisons de sécurité et de bonnes pratiques, la racine du serveur web doit pointer directement sur le dossierweb
où se trouve ce fichier, et non sur la racine du projet. Cela prévient un accès direct aux fichiers sensibles (configuration, dossier vendor, etc.).- Nom : par exemple
Enregistrez la configuration. ServBay configurera Caddy automatiquement et mettra à jour le fichier hosts local (si besoin), afin que
servbay-phpixie-test.local
pointe vers votre serveur local ServBay.
Pour plus de détails, consultez Ajouter votre premier site.
Ajouter du code d'exemple
Pour valider le bon fonctionnement du projet et illustrer l’intégration base de données/cache, ajoutons quelques exemples de code.
Créer un contrôleur d’exemple : Ajoutez le code suivant dans le fichier
src/App/HTTP/Controller/Home.php
. Créez le dossier/fichier manuellement si besoin.php<?php namespace App\HTTP\Controller; use PHPixie\HTTP\Request; use PHPixie\Template; use PHPixie\Database\Query; // Importer la classe Query class Home extends \PHPixie\Controller { protected $template; public function __construct(Template $template) { $this->template = $template; } // Action pour la page d'accueil par défaut public function action_index(Request $request) { // Affiche le template assets/templates/app/home.php return $this->template->render('app:home'); } // Action d’exemple Memcached public function action_memcached(Request $request) { $cache = $this->components->cache(); $cache->set('key', 'Hello Memcached from ServBay!', 60); // Stocker la donnée pour 60 secondes $value = $cache->get('key'); // Récupérer la donnée return $this->response()->string($value); // Retourner la valeur en réponse } // Action d’exemple Redis public function action_redis(Request $request) { $redis = $this->components->redis(); $redis->set('key', 'Hello Redis from ServBay!'); // Stocker la donnée $value = $redis->get('key'); // Récupérer la donnée return $this->response()->string($value); // Retourner la valeur en réponse } // Action d’exemple pour ajout utilisateur en MySQL/PostgreSQL public function action_add_user(Request $request) { // Récupérer le query builder via le composant base de données $query = $this->components->database()->query(); // Insérer un nouvel utilisateur dans la table 'users' $query->insert('users')->data([ 'name' => 'ServBay Demo User', 'email' => 'demo-' . uniqid() . '@servbay.test', // Générer un email unique ])->execute(); // Exécuter l’insertion return $this->response()->string('Utilisateur ajouté avec succès.'); // Retourner un message de réussite } // Action pour liste des utilisateurs en MySQL/PostgreSQL public function action_list_users(Request $request) { // Récupérer le query builder via le composant base de données $query = $this->components->database()->query(); // Sélectionner tous les utilisateurs de la table 'users' $users = $query->select('*')->from('users')->execute()->fetchAll(); // Exécuter la requête et récupérer tous les résultats return $this->response()->json($users); // Retourner la liste au format JSON } }
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
67Créer le template d’exemple : Ajoutez le code suivant dans
assets/templates/app/home.php
. Créez le dossier/fichier si besoin.php<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Bienvenue sur PHPixie avec ServBay</title> <style> body { font-family: sans-serif; line-height: 1.6; margin: 20px; } h1 { color: #333; } p { margin-bottom: 15px; } code { background-color: #f4f4f4; padding: 2px 5px; border-radius: 4px; } ul { list-style: none; padding: 0; } li { margin-bottom: 10px; } li a { text-decoration: none; color: #007bff; } li a:hover { text-decoration: underline; } </style> </head> <body> <h1>Bienvenue sur PHPixie avec ServBay</h1> <p>Cette page est générée dynamiquement par l’application PHPixie que vous exécutez sur ServBay.</p> <h2>Liens vers les fonctionnalités d’exemple :</h2> <ul> <li><a href="/home/memcached">Tester Memcached</a></li> <li><a href="/home/redis">Tester Redis</a></li> <li><a href="/home/add_user">Ajouter un utilisateur en base</a></li> <li><a href="/home/list_users">Lister les utilisateurs</a></li> </ul> <p>Assurez-vous d’avoir correctement configuré la base de données et le cache.</p> </body> </html>
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
Accéder au site
Une fois la configuration du site dans ServBay et les exemples de code en place, vous pouvez accéder à votre domaine local dans le navigateur :
- Ouvrez votre navigateur et accédez à
https://servbay-phpixie-test.local
. - Vous devriez voir une page affichant "Bienvenue sur PHPixie avec ServBay" et des liens vers les exemples de fonctionnalités.
En cas de problème d’accès, vérifiez :
- Que ServBay fonctionne bien.
- Que la configuration du site dans ServBay est correcte, notamment le domaine, le type du site et la racine du site.
- Que le fichier hosts local résout correctement
servbay-phpixie-test.local
(ServBay gère cela automatiquement dans la plupart des cas). - Que la version de PHP sélectionnée dans ServBay est activée.
Exemples d’intégration base de données et cache
PHPixie propose un support intégré pour divers systèmes de bases de données et de cache. ServBay inclut des paquets tels que MySQL, PostgreSQL, Redis, Memcached, que vous pouvez intégrer aisément dans votre projet.
Important : Avant toute opération de base de données, assurez-vous que le service de base de données correspondant (MySQL ou PostgreSQL) est démarré dans ServBay et que vous avez créé une base dédiée au projet (dans l’exemple : servbay_phpixie_app
). Vous pouvez la créer avec un outil ServBay (Sequel Ace, Postico, TablePlus…) ou en ligne de commande. Par défaut, l’utilisateur est root
et le mot de passe password
(à vérifier selon votre configuration ServBay).
Configurer la connexion à la base de données
Selon la base utilisée (MySQL ou PostgreSQL), modifiez le fichier assets/config/database.php
à la racine du projet. L’adresse par défaut sous ServBay est généralement 127.0.0.1
.
Exemple de configuration MySQL (assets/config/database.php
) :
php
<?php
return [
'default' => [
'driver' => 'pdo',
// Chaîne de connexion à adapter selon la base et la config ServBay
'connection' => 'mysql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // Utilisateur par défaut ServBay
'password' => 'password', // Mot de passe par défaut (modifiez selon votre config)
'options' => []
]
];
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Exemple de configuration PostgreSQL (assets/config/database.php
) :
php
<?php
return [
'default' => [
'driver' => 'pdo',
// Chaîne de connexion à adapter selon la base et la config ServBay
'connection' => 'pgsql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // Utilisateur par défaut ServBay
'password' => 'password', // Mot de passe par défaut (modifiez selon votre config)
'options' => []
]
];
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Créer la table en base (migrations)
PHPixie propose un outil en ligne de commande pour gérer les migrations, une approche propre à la gestion de versions de la structure des bases de données.
- Ouvrir le terminal : Placez-vous dans la racine de votre projet PHPixie :bash
cd /Applications/ServBay/www/servbay-phpixie-app
1 - Générer un fichier de migration : Lancez la CLI PHPixie pour créer une nouvelle migration afin de générer la table
users
:bashCeci créera un fichier PHP daté dans le dossierphp pixie generate:migration create_users_table
1assets/migrations
. - Modifier le fichier de migration : Entrez dans le dossier
assets/migrations
, ouvrez le fichier nouvellement créé (ex :YYYY_MM_DD_HHMMSS_create_users_table.php
) et complétez les méthodesup()
etdown()
:php<?php use PHPixie\Database\Migration; use PHPixie\Database\Schema\Table; class CreateUsersTable extends Migration { public function up() { // Créer la table 'users' via le schema builder $this->schema->create('users', function(Table $table) { $table->increments('id'); // Clé primaire auto-incrémentée $table->string('name'); // Colonne nom $table->string('email')->unique(); // Colonne email, unique $table->timestamps(); // Colonnes created_at et updated_at }); } public function down() { // Supprimer la table 'users' $this->schema->drop('users'); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 - Exécuter la migration : Dans votre terminal, exécutez la commande suivante pour créer la table
users
:bashSi tout se passe bien, la migration se termine avec succès. Vous pouvez vérifier la création de la table dans la basephp pixie migrate
1servbay_phpixie_app
via votre outil de gestion de base.
Utiliser une base relationnelle (MySQL/PostgreSQL)
Dans le contrôleur d’exemple src/App/HTTP/Controller/Home.php
, les méthodes action_add_user
et action_list_users
illustrent l’utilisation du composant base de données de PHPixie pour interagir avec MySQL ou PostgreSQL.
- Ajouter un utilisateur : Rendez-vous sur
https://servbay-phpixie-test.local/home/add_user
pour insérer un nouvel utilisateur. - Lister les utilisateurs : Rendez-vous sur
https://servbay-phpixie-test.local/home/list_users
pour afficher tous les utilisateurs au format JSON.
Configurer et utiliser une base NoSQL (Memcached/Redis)
ServBay inclut Memcached et Redis ainsi que les extensions PHP associées. Il ne vous reste qu’à configurer l’utilisation dans le projet PHPixie.
Exemple de configuration Memcached (assets/config/cache.php
) :
Créez ou éditez le fichier assets/config/cache.php
pour la configuration Memcached :
php
<?php
return [
'default' => [
'driver' => 'memcached',
'servers' => [
[
'host' => '127.0.0.1', // Adresse par défaut ServBay Memcached
'port' => 11211, // Port par défaut ServBay Memcached
'weight' => 100,
],
],
],
];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
Exemple de configuration Redis (assets/config/redis.php
) :
Créez ou éditez le fichier assets/config/redis.php
pour la configuration Redis :
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // Adresse par défaut ServBay Redis
'port' => 6379, // Port par défaut ServBay Redis
'timeout' => 0,
'database' => 0, // Index de la base Redis
],
];
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Utilisation de Memcached/Redis :
Dans le contrôleur d’exemple src/App/HTTP/Controller/Home.php
, les méthodes action_memcached
et action_redis
montrent comment utiliser le composant cache de PHPixie (configurable avec Memcached ou Redis).
- Tester Memcached : Accédez à
https://servbay-phpixie-test.local/home/memcached
pour écrire puis lire une valeur dans Memcached. - Tester Redis : Accédez à
https://servbay-phpixie-test.local/home/redis
pour écrire puis lire une valeur dans Redis.
Veillez à ce que les packages Memcached et Redis soient bien activés dans ServBay.
Conclusion
En suivant ce guide, vous avez appris à créer, configurer et exécuter un projet PHPixie en local sur macOS à l’aide de ServBay. Vous avez effectué la création du projet avec Composer, configuré le serveur web via la fonction Sites de ServBay, réalisé la configuration de base et cache, puis confirmé le fonctionnement des différentes intégrations.
L’environnement intégré proposé par ServBay facilite grandement la mise en place d’un environnement PHP, vous permettant de vous concentrer sur le développement. Nous espérons que ce guide vous aidera à démarrer rapidement et efficacement vos prochains projets web avec PHPixie !