Créer et exécuter un projet Symfony
Qu'est-ce que Symfony ?
Symfony est un framework web PHP open source créé par SensioLabs, conçu pour fournir aux développeurs un ensemble d'outils efficaces, flexibles et puissants pour construire des applications web modernes. Symfony offre de nombreuses fonctionnalités, telles que le routing, le moteur de templates, le traitement des formulaires, l'authentification, et plus encore, simplifiant ainsi les tâches courantes de développement web.
Principales caractéristiques et avantages de Symfony
- Conception modulaire : Symfony adopte une conception modulaire, permettant aux développeurs de choisir et d'utiliser les composants selon leurs besoins.
- Haute performance : Grâce à son architecture optimisée et à ses mécanismes de cache, Symfony offre d'excellentes performances.
- Soutien communautaire solide : Il dispose d'une vaste communauté de développeurs et d'un écosystème riche.
- Flexibilité : Peut être intégré avec diverses bibliothèques et extensions tierces, convenant à des projets de toutes tailles.
- Documentation de qualité : Fournit une documentation détaillée et des tutoriels pour aider les développeurs à démarrer rapidement.
Symfony aide les développeurs à créer rapidement des applications web et des API de haute qualité, adaptées à des projets allant des petites applications aux systèmes d'entreprise de grande envergure.
Créer et exécuter un projet Symfony avec ServBay
Dans cet article, nous utiliserons l'environnement PHP fourni par ServBay pour créer et exécuter un projet Symfony. Nous allons utiliser la fonctionnalité 'Hôte' de ServBay pour configurer le serveur web et permettre l'accès au projet par une configuration simple.
Remarque : Si vous avez déjà utilisé NGINX ou Apache
ServBay utilise par défaut Caddy comme serveur web. Pour ceux qui migrent de NGINX et Apache vers ServBay, il y a quelques changements clés à prendre en compte :
Configuration de Caddy
ServBay intègre Caddy avec des configurations par défaut optimisées et déboguées. Les développeurs peuvent gérer les sites via la fonctionnalité 'Hôte' de ServBay, sans modifier manuellement le fichier de configuration de Caddy.
Règles de réécriture et .htaccess
Avec NGINX et Apache, les développeurs doivent souvent écrire eux-mêmes les règles de réécriture et les fichiers .htaccess pour le traitement des URL et autres configurations. Avec ServBay, les règles de Caddy sont déjà configurées à la sortie d'usine, donc sauf besoin spécifique, les développeurs n'ont pas à écrire ces règles eux-mêmes.
En savoir plus
Pour plus d'informations, consultez Rewrite et htaccess, Migrer un site Apache vers ServBay, Migrer un site NGINX vers ServBay.
Créer un projet Symfony
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é, aucune installation supplémentaire n'est nécessaire.
Créer un projet Symfony
Utilisez Composer pour créer un nouveau projet Symfony :
bashcd /Applications/ServBay/www mkdir servbay-symfony-app cd servbay-symfony-app composer create-project symfony/website-skeleton .
1
2
3
4Accéder au répertoire du projet
Entrez dans le répertoire du nouveau projet Symfony :
bashcd /Applications/ServBay/www/servbay-symfony-app
1
Initialiser la configuration
Configurer les variables d'environnement
Configurez les informations de connexion à la base de données et autres variables d'environnement dans le fichier
.env
. Assurez-vous que les configurations suivantes sont correctement définies :APP_ENV=dev APP_SECRET=your_secret_key DATABASE_URL=mysql://root:[email protected]:3306/servbay_symfony_app
1
2
3
Configurer le serveur web
Utilisez la fonctionnalité 'Hôte' de ServBay pour accéder au projet Symfony via le serveur web. Dans les paramètres 'Hôte' de ServBay, ajoutez un nouvel hôte :
- Nom :
Mon Premier Site Symfony Dev
- Domaine :
servbay-symfony-test.local
- Type de site web :
PHP
- Version PHP : choisissez
8.3
- Répertoire racine du site web :
/Applications/ServBay/www/servbay-symfony-app/public
Pour les étapes détaillées, consultez Ajouter le premier site web.
Ajouter du code d'exemple
Ajoutez le code suivant dans le fichier config/routes.yaml
pour afficher "Hello ServBay!":
index:
path: /
controller: App\Controller\DefaultController::index
2
3
Ajoutez le code suivant dans le fichier src/Controller/DefaultController.php
:
namespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class DefaultController
{
/**
* @Route("/", name="index")
*/
public function index(): Response
{
return new Response('Hello ServBay!');
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Accéder au site web
Ouvrez un navigateur et accédez à https://servbay-symfony-test.local
, vous verrez la page afficher Hello ServBay!
.
Exemple de base de données NoSQL
Exemple avec Memcached
Installer l'extension Memcached
Dans ServBay, l'extension Memcached est déjà préinstallée, aucune installation supplémentaire n'est nécessaire.
Configurer Memcached
Configurez les informations de connexion à Memcached dans le fichier
.env
:CACHE_DRIVER=memcached MEMCACHED_HOST=127.0.0.1
1
2Ajoutez le code suivant dans le fichier
config/routes.yaml
:
memcached:
path: /memcached
controller: App\Controller\DefaultController::memcached
2
3
Utiliser Memcached
Utilisez le cache dans le contrôleur :
phpuse Symfony\Component\Cache\Adapter\MemcachedAdapter; class DefaultController { /** * @Route("/memcached", name="memcached") */ public function memcached(): Response { $client = MemcachedAdapter::createConnection('memcached://127.0.0.1:11211'); $cache = new MemcachedAdapter($client); $cacheItem = $cache->getItem('my_cache_key'); if (!$cacheItem->isHit()) { $cacheItem->set('Hello Memcached!'); $cache->save($cacheItem); } return new Response($cacheItem->get()); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Ouvrez un navigateur et accédez à
https://servbay-symfony-test.local/memcached
Exemple avec Redis
Installer l'extension Redis
Dans ServBay, l'extension Redis est déjà préinstallée, aucune installation supplémentaire n'est nécessaire.
Configurer Redis
Configurez les informations de connexion à Redis dans le fichier
.env
:REDIS_URL=redis://127.0.0.1:6379
1Ajoutez le code suivant dans le fichier
config/routes.yaml
:
redis:
path: /redis
controller: App\Controller\DefaultController::redis
2
3
Utiliser Redis
Utilisez le cache dans le contrôleur :
phpuse Symfony\Component\Cache\Adapter\RedisAdapter; class DefaultController { /** * @Route("/redis", name="redis") */ public function redis(): Response { $redisConnection = RedisAdapter::createConnection('redis://127.0.0.1:6379'); $cache = new RedisAdapter($redisConnection); $cacheItem = $cache->getItem('my_cache_key'); if (!$cacheItem->isHit()) { $cacheItem->set('Hello Redis!'); $cache->save($cacheItem); } return new Response($cacheItem->get()); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Ouvrez un navigateur et accédez à
https://servbay-symfony-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 le Maker Bundle de Symfony pour créer un fichier de migration :
bashphp bin/console make:migration
1Modifier le fichier de migration
Trouvez le fichier de migration nouvellement créé dans le répertoire
src/Migrations
et modifiez-le pour définir la structure des tables de la base de données :phppublic function up(Schema $schema): void { $this->addSql('CREATE TABLE users (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL UNIQUE, PRIMARY KEY(id))'); }
1
2
3
4Exécuter la migration
Utilisez la commande Symfony pour exécuter la migration et créer les tables de la base de données :
bashphp bin/console doctrine:migrations:migrate
1
Exemple avec MySQL
Configurer MySQL
Configurez les informations de connexion à MySQL dans le fichier
.env
:DATABASE_URL=mysql://root:[email protected]:3306/servbay_symfony_app
1Ajoutez le code suivant dans le fichier
config/routes.yaml
:
mysql_add:
path: /mysql-add
controller: App\Controller\DefaultController::mysqlAdd
mysql_get:
path: /mysql
controller: App\Controller\DefaultController::mysql
2
3
4
5
6
Écrire des données utilisateur
Écrivez des données utilisateur dans le contrôleur :
phpuse Doctrine\ORM\EntityManagerInterface; use App\Entity\User; use Symfony\Component\Routing\Annotation\Route; class DefaultController { private $entityManager; public function __construct(EntityManagerInterface $entityManager) { $this->entityManager = $entityManager; } /** * @Route("/mysql-add", name="mysql_add") */ public function mysqlAdd(): Response { $user = new User(); $user->setName('ServBay'); $user->setEmail('[email protected]'); $this->entityManager->persist($user); $this->entityManager->flush(); return new Response('User added'); } /** * @Route("/mysql", name="mysql") */ public function mysql(): Response { $users = $this->entityManager->getRepository(User::class)->findAll(); return new Response(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
25
26
27
28
29
30
31
32
33
34
35
36
37Ouvrez un navigateur et accédez à
https://servbay-symfony-test.local/mysql-add
ethttps://servbay-symfony-test.local/mysql
Exemple avec PostgreSQL
Configurer PostgreSQL
Configurez les informations de connexion à PostgreSQL dans le fichier
.env
:DATABASE_URL=pgsql://root:[email protected]:5432/servbay_symfony_app
1Ajoutez le code suivant dans le fichier
config/routes.yaml
:
pgsql_add:
path: /pgsql-add
controller: App\Controller\DefaultController::pgsqlAdd
pgsql_get:
path: /pgsql
controller: App\Controller\DefaultController::pgsql
2
3
4
5
6
Écrire des données utilisateur
Écrivez des données utilisateur dans le contrôleur :
phpuse Doctrine\ORM\EntityManagerInterface; use App\Entity\User; use Symfony\Component\Routing\Annotation\Route; class DefaultController { private $entityManager; public function __construct(EntityManagerInterface $entityManager) { $this->entityManager = $entityManager; } /** * @Route("/pgsql-add", name="pgsql_add") */ public function pgsqlAdd(): Response { $user = new User(); $user->setName('ServBay'); $user->setEmail('[email protected]'); $this->entityManager->persist($user); $this->entityManager->flush(); return new Response('User added'); } /** * @Route("/pgsql", name="pgsql") */ public function pgsql(): Response { $users = $this->entityManager->getRepository(User::class)->findAll(); return new Response(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
25
26
27
28
29
30
31
32
33
34
35
36
37Ouvrez un navigateur et accédez à
https://servbay-symfony-test.local/pgsql-add
ethttps://servbay-symfony-test.local/pgsql
En suivant ces étapes, vous avez créé et exécuté avec succès un projet Symfony, et utilisé les fonctionnalités fournies par ServBay pour gérer et accéder à votre projet, tout en vous connectant à plusieurs bases de données et en appelant des données.