Création et exécution d'un projet CakePHP
Qu'est-ce que CakePHP ?
CakePHP est un framework web PHP open source conçu pour aider les développeurs à construire rapidement des applications web. Il est basé sur l'architecture MVC (Modèle-Vue-Contrôleur) et offre une riche boîte à outils qui simplifie les tâches courantes comme l'interaction avec la base de données, la gestion des formulaires, l'authentification et la gestion des sessions.
Les principales caractéristiques et avantages de CakePHP
- Développement rapide : Propose de nombreux outils de génération de code pour aider 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 avec la base de données.
- Sécurité : Intègre de nombreuses fonctionnalités de sécurité comme la validation des entrées, la protection CSRF et la prévention des injections SQL.
- Soutien communautaire : Dispose d'une communauté active et d'un riche écosystème de plugins.
- Bonne documentation : Fournit une documentation détaillée et des tutoriels pour aider les développeurs à démarrer rapidement.
CakePHP est adapté à divers projets, des petites applications aux grands systèmes d'entreprise, et aide les développeurs à construire rapidement des applications web de haute qualité.
Créer et exécuter un projet CakePHP avec 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é 'Hôte' de ServBay pour configurer le serveur web et accéder au projet par une simple configuration.
Attention : Si vous avez utilisé NGINX ou Apache auparavant
ServBay utilise par défaut Caddy comme serveur web. Pour les utilisateurs migrant de NGINX ou Apache vers ServBay, quelques changements clés sont à noter :
Configuration de Caddy
ServBay intègre Caddy avec une configuration par défaut optimisée. Les développeurs peuvent gérer les sites via la fonctionnalité 'Hôte' de ServBay sans avoir à modifier manuellement les fichiers de configuration de Caddy.
Règles de réécriture et .htaccess
Les développeurs doivent souvent écrire eux-mêmes des règles de réécriture et des fichiers .htaccess pour gérer les réécritures d'URL et d'autres configurations dans NGINX et Apache. Cependant, ServBay est préconfiguré avec les règles de Caddy, donc à moins que des besoins spécifiques ne surviennent, il n'est pas nécessaire d'écrire ces règles.
En savoir plus
Pour plus d'informations, veuillez consulter Réécriture et htaccess, Comment migrer un site Apache vers ServBay, Comment migrer un site NGINX vers ServBay.
Créer un projet CakePHP
TIP
ServBay recommande de placer les sites web dans le répertoire /Applications/ServBay/www
pour une gestion facile.
Installer Composer
ServBay est livré avec Composer préinstallé, il n'est donc pas nécessaire de l'installer séparément.
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
Accédez au 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 la configuration suivante est correcte :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 fonctionnalité 'Hôte' de ServBay pour accéder au projet CakePHP via le serveur web. Dans la configuration de 'Hôte' de ServBay, ajoutez un nouvel hôte :
- Nom :
My First CakePHP Dev Site
- Domaine :
servbay-cakephp-test.local
- Type de site :
PHP
- Version de PHP : Sélectionnez
8.3
- Répertoire racine du site :
/Applications/ServBay/www/servbay-cakephp-app/webroot
Pour des étapes détaillées, veuillez consulter Ajouter votre premier site.
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
Ouvrez votre navigateur et visitez https://servbay-cakephp-test.local
. Vous verrez la sortie "Hello ServBay!".
Exemple avec la base NoSQL
Exemple Memcached
Installer l'extension Memcached
Sur ServBay, l'extension Memcached est déjà installée, il n'est donc pas nécessaire de l'installer séparément.
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 votre navigateur et visitez
https://servbay-cakephp-test.local/memcached
Exemple Redis
Installer l'extension Redis
Sur ServBay, l'extension Redis est déjà installée, il n'est donc pas nécessaire de l'installer séparément.
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 votre navigateur et visitez
https://servbay-cakephp-test.local/redis
Exemple de base de données relationnelle
Créer la structure de la base de données et les fichiers de migration
Créer un fichier de migration
Utilisez l'outil Bake de CakePHP pour créer un fichier de migration :
bashbin/cake bake migration CreateUsers name:string email:string:unique
1Exécuter la migration
Utilisez les commandes CakePHP pour exécuter la migration et créer les tables de la 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 Users
Sauvegardez le code suivant dans le 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
8Insérer des données utilisateur
Insérez 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 votre 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 Users
Sauvegardez le code suivant dans le 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
8Insérer des données utilisateur
Insérez 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 votre navigateur et visitez
https://servbay-cakephp-test.local/pgsql-add
ethttps://servbay-cakephp-test.local/pgsql
En suivant ces étapes, vous avez réussi à créer et exécuter un projet CakePHP en utilisant les fonctionnalités fournies par ServBay pour gérer et accéder à votre projet, tout en connectant des bases de données variées et en y accédant.