Créer et exécuter un projet CakePHP
Qu'est-ce que CakePHP ?
CakePHP est un framework web PHP open-source conçu pour aider les développeurs à créer des applications web rapidement. Il est basé sur l'architecture MVC (Modèle-Vue-Contrôleur) et offre un ensemble puissant d'outils qui simplifient les tâches courantes de développement telles que l'interaction avec la base de données, la gestion des formulaires, l'authentification et la gestion des sessions.
Principales caractéristiques et avantages de CakePHP
- Développement rapide : Offre des outils de génération de code riches qui aident les développeurs à générer rapidement des structures de code courantes.
- ORM flexible et puissant : La couche ORM (Object-Relational Mapping) intégrée simplifie les opérations de base de données.
- Sécurité : Fonctions de sécurité intégrées telles que la validation des entrées, la protection CSRF, et la prévention des injections SQL.
- Soutien communautaire : Communauté active et riche écosystème de plugins.
- Bonne documentation : Fournit une documentation exhaustive et des tutoriels pour aider les développeurs à démarrer rapidement.
CakePHP est adapté à des projets allant des petites applications aux grands systèmes d'entreprise, aidant les développeurs à créer rapidement des applications web de haute qualité.
Créer et exécuter un projet CakePHP en utilisant ServBay
Dans cet article, nous utiliserons l'environnement PHP fourni par ServBay pour créer et exécuter un projet CakePHP. Nous utiliserons la fonctionnalité "Host" de ServBay pour configurer un serveur web et configurer le projet avec des paramètres simples.
Remarque : Si vous avez déjà utilisé NGINX ou Apache
ServBay utilise Caddy comme serveur web par défaut. Voici quelques changements clés à noter pour les utilisateurs migrant de NGINX et Apache vers ServBay :
Configuration de Caddy
ServBay est livré avec Caddy préinstallé et préconfiguré. Les développeurs n'ont qu'à gérer les sites via la fonctionnalité "Host" de ServBay sans éditer manuellement le fichier de configuration de Caddy.
Règles de réécriture et .htaccess
Dans NGINX et Apache, les développeurs écrivent généralement leurs propres règles de réécriture et fichiers .htaccess pour gérer la réécriture des URL et d'autres configurations. Cependant, ServBay fournit déjà des règles Caddy optimisées prêtes à l'emploi, de sorte que les développeurs n'ont pas besoin d'écrire ces règles à moins qu'il n'y ait des exigences particulières.
En savoir plus
Pour plus d'informations, consultez Rewrite and htaccess, How to Migrate Apache Site to ServBay, et How to Migrate NGINX Site to ServBay.
Créer un projet CakePHP
TIP
ServBay recommande aux développeurs de placer leurs sites web dans le répertoire /Applications/ServBay/www
pour une gestion plus facile.
Installer Composer
ServBay est livré avec Composer préinstallé, donc aucune installation séparée n'est requise.
Créer un projet CakePHP
Utilisez Composer pour créer un nouveau projet CakePHP :
bashcd /Applications/ServBay/www mkdir servbay-cakephp-app cd servbay-cakephp-app composer create-project --prefer-dist cakephp/app .
1
2
3
4Entrer dans le répertoire du projet
Naviguez vers le répertoire du projet CakePHP nouvellement créé :
bashcd /Applications/ServBay/www/servbay-cakephp-app
1
Configuration initiale
Configurer les variables d'environnement
Configurez les informations de connexion à la base de données et d'autres variables d'environnement dans le fichier
config/app_local.php
. Assurez-vous que les paramètres suivants sont correctement définis :php'Datasources' => [ 'default' => [ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_cakephp_app', 'url' => env('DATABASE_URL', null), ], ],
1
2
3
4
5
6
7
8
9
Configurer le serveur web
Utilisez la fonction "Host" de ServBay pour accéder au projet CakePHP via le serveur web. Dans les paramètres Host de ServBay, ajoutez un nouvel hôte :
- Nom :
Mon Premier Site de Développement CakePHP
- Domaine :
servbay-cakephp-test.local
- Type de site web :
PHP
- Version PHP : Sélectionnez
8.3
- Répertoire racine du site web :
/Applications/ServBay/www/servbay-cakephp-app/webroot
Pour des étapes de configuration détaillées, consultez Adding Your First Website.
Ajouter du code d'exemple
Ajoutez le code suivant au fichier config/routes.php
pour afficher "Hello ServBay!" :
$routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
Ajoutez le code suivant au fichier src/Controller/PagesController.php
:
namespace App\Controller;
use Cake\Http\Response;
class PagesController extends AppController
{
public function display()
{
return new Response(['body' => 'Hello ServBay!']);
}
}
2
3
4
5
6
7
8
9
10
11
Accéder au site web
Ouvrez un navigateur et visitez https://servbay-cakephp-test.local
pour voir la page afficher Hello ServBay!
.
Exemple avec des bases de données NoSQL
Exemple Memcached
Installer l'extension Memcached
L'extension Memcached est déjà préinstallée dans ServBay, donc aucune installation supplémentaire n'est requise.
Configurer Memcached
Configurez les informations de connexion Memcached dans le fichier
config/app_local.php
:php'Cache' => [ 'default' => [ 'className' => 'Cake\Cache\Engine\MemcachedEngine', 'servers' => ['127.0.0.1'], ], ],
1
2
3
4
5
6Configurer les routes
Ajoutez le code suivant au fichier
config/routes.php
:php$routes->connect('/memcached', ['controller' => 'Pages', 'action' => 'memcached']);
1Utiliser Memcached
Utilisez le cache dans le contrôleur :
phpuse Cake\Cache\Cache; class PagesController extends AppController { public function memcached() { $cacheKey = 'my_cache_key'; $cachedData = Cache::read($cacheKey); if (!$cachedData) { $cachedData = 'Hello Memcached!'; Cache::write($cacheKey, $cachedData); } return new Response(['body' => $cachedData]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17Ouvrez un navigateur et visitez
https://servbay-cakephp-test.local/memcached
Exemple Redis
Installer l'extension Redis
L'extension Redis est déjà préinstallée dans ServBay, donc aucune installation supplémentaire n'est requise.
Configurer Redis
Configurez les informations de connexion Redis dans le fichier
config/app_local.php
:php'Cache' => [ 'default' => [ 'className' => 'Cake\Cache\Engine\RedisEngine', 'server' => '127.0.0.1', 'port' => 6379, ], ],
1
2
3
4
5
6
7Configurer les routes
Ajoutez le code suivant au fichier
config/routes.php
:php$routes->connect('/redis', ['controller' => 'Pages', 'action' => 'redis']);
1Utiliser Redis
Utilisez le cache dans le contrôleur :
phpuse Cake\Cache\Cache; class PagesController extends AppController { public function redis() { $cacheKey = 'my_cache_key'; $cachedData = Cache::read($cacheKey); if (!$cachedData) { $cachedData = 'Hello Redis!'; Cache::write($cacheKey, $cachedData); } return new Response(['body' => $cachedData]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17Ouvrez un navigateur et visitez
https://servbay-cakephp-test.local/redis
Exemple de base de données relationnelle
Créer le schéma de base de données et les fichiers de migration
Créer les fichiers de migration
Utilisez l'outil Bake de CakePHP pour créer des fichiers de migration :
bashbin/cake bake migration CreateUsers name:string email:string:unique
1Exécuter la migration
Utilisez les commandes de CakePHP pour exécuter les migrations et créer des tables de base de données :
bashbin/cake migrations migrate
1
Exemple MySQL
Configurer MySQL
Configurez les informations de connexion MySQL dans le fichier
config/app_local.php
:php'Datasources' => [ 'default' => [ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', 'database' => 'servbay_cakephp_app', 'url' => env('DATABASE_URL', null), ], ],
1
2
3
4
5
6
7
8
9Configurer les routes
Ajoutez le code suivant au fichier
config/routes.php
:php$routes->connect('/mysql-add', ['controller' => 'Pages', 'action' => 'mysqlAdd']); $routes->connect('/mysql', ['controller' => 'Pages', 'action' => 'mysql']);
1
2Ajouter la table des utilisateurs
Ajoutez le code suivant au fichier
src/Model/Table/UsersTable.php
:php<?php namespace App\Model\Table; use Cake\ORM\Table; class UsersTable extends Table { }
1
2
3
4
5
6
7
8Ajouter des données utilisateur
Ajoutez des données utilisateur dans le contrôleur :
phpuse App\Model\Entity\User; use Cake\ORM\TableRegistry; class PagesController extends AppController { public function mysqlAdd() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $user = $usersTable->newEntity(['name' => 'ServBay', 'email' => '[email protected]']); if ($usersTable->save($user)) { return new Response(['body' => 'User added']); } return new Response(['body' => 'Failed to add user']); } public function mysql() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $users = $usersTable->find()->all(); return new Response(['body' => json_encode($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
25Ouvrez un navigateur et visitez
https://servbay-cakephp-test.local/mysql-add
ethttps://servbay-cakephp-test.local/mysql
Exemple PostgreSQL
Configurer PostgreSQL
Configurez les informations de connexion PostgreSQL dans le fichier
config/app_local.php
:php'Datasources' => [ 'default' => [ 'host' => '127.0.0.1', 'driver' => Postgres::Class, 'username' => 'root', 'password' => 'password', 'database' => 'servbay_cakephp_app', 'url' => env('DATABASE_URL', null), ], ],
1
2
3
4
5
6
7
8
9
10Configurer les routes
Ajoutez le code suivant au fichier
config/routes.php
:php$routes->connect('/pgsql-add', ['controller' => 'Pages', 'action' => 'pgsqlAdd']); $routes->connect('/pgsql', ['controller' => 'Pages', 'action' => 'pgsql']);
1
2Ajouter la table des utilisateurs
Ajoutez le code suivant au fichier
src/Model/Table/UsersTable.php
:php<?php namespace App\Model\Table; use Cake\ORM\Table; class UsersTable extends Table { }
1
2
3
4
5
6
7
8Ajouter des données utilisateur
Ajoutez des données utilisateur dans le contrôleur :
phpuse App\Model\Entity\User; use Cake\ORM\TableRegistry; class PagesController extends AppController { public function pgsqlAdd() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $user = $usersTable->newEntity(['name' => 'ServBay', 'email' => '[email protected]']); if ($usersTable->save($user)) { return new Response(['body' => 'User added']); } return new Response(['body' => 'Failed to add user']); } public function pgsql() { $usersTable = TableRegistry::getTableLocator()->get('Users'); $users = $usersTable->find()->all(); return new Response(['body' => json_encode($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
25Ouvrez un navigateur et visitez
https://servbay-cakephp-test.local/pgsql-add
ethttps://servbay-cakephp-test.local/pgsql
Grâce aux étapes ci-dessus, vous avez réussi à créer et exécuter un projet CakePHP, à utiliser les fonctionnalités de ServBay pour gérer et accéder à votre projet, et à connecter et interroger diverses bases de données.