Creare ed eseguire un progetto Symfony
Cos'è Symfony?
Symfony è un framework PHP open-source creato da SensioLabs, dedicato a fornire agli sviluppatori un insieme di strumenti efficienti, flessibili e potenti per costruire applicazioni web moderne. Symfony offre una vasta gamma di funzionalità, come routing, motore di template, gestione dei form, autenticazione e altro, semplificando i compiti comuni dello sviluppo web.
Principali caratteristiche e vantaggi di Symfony
- Design modulare: Symfony adotta un design modulare, permettendo agli sviluppatori di scegliere e utilizzare i componenti secondo le necessità.
- Alte performance: Grazie alla sua architettura ottimizzata e meccanismi di caching, Symfony offre eccellenti prestazioni.
- Supporto della comunità: Ha una vasta comunità di sviluppatori e un ricco ecosistema.
- Flessibilità: Può integrare diverse librerie e estensioni di terze parti, adatto per progetti di tutte le dimensioni.
- Buona documentazione: Offre documentazioni dettagliate e tutorial per aiutare gli sviluppatori a iniziare rapidamente.
Symfony può aiutare gli sviluppatori a costruire rapidamente applicazioni web e API di alta qualità, adatte a progetti di qualsiasi scala, dai piccoli alle grandi aziende.
Creare ed eseguire un progetto Symfony con ServBay
In questo articolo, utilizzeremo l'ambiente PHP fornito da ServBay per creare ed eseguire un progetto Symfony. Useremo la funzionalità 'host' di ServBay per configurare il server web e accedere al progetto attraverso una semplice configurazione.
Attenzione: se hai usato NGINX o Apache in passato
ServBay utilizza di default Caddy come server web. Per gli utenti che migrano da NGINX e Apache a ServBay, ci sono alcuni punti chiave da considerare:
Configurazione di Caddy
ServBay ha già incorporato Caddy, e la configurazione predefinita è stata ottimizzata e testata. Gli sviluppatori devono solo gestire il sito tramite la funzionalità 'host' di ServBay, senza bisogno di modificare manualmente il file di configurazione di Caddy.
Regole di Rewrite e .htaccess
In NGINX e Apache, gli sviluppatori spesso devono scrivere personalmente le regole di Rewrite e i file .htaccess per gestire il rewrite degli URL e altre configurazioni. Tuttavia, ServBay ha già configurato le regole di Caddy, quindi, salvo necessità particolari, gli sviluppatori non devono scriverle manualmente.
Saperne di più
Per ulteriori informazioni, si prega di consultare Rewrite e htaccess, Come migrare un sito Apache a ServBay, Come migrare un sito NGINX a ServBay.
Creare un progetto Symfony
TIP
ServBay consiglia agli sviluppatori di posizionare i siti web nella directory /Applications/ServBay/www
per una gestione più semplice.
Installare Composer
ServBay include già Composer, quindi non è necessario installarlo separatamente.
Creare un progetto Symfony
Utilizzare Composer per creare un nuovo progetto Symfony:
bashcd /Applications/ServBay/www mkdir servbay-symfony-app cd servbay-symfony-app composer create-project symfony/website-skeleton .
1
2
3
4Entrare nella directory del progetto
Passare alla directory del nuovo progetto Symfony:
bashcd /Applications/ServBay/www/servbay-symfony-app
1
Configurazione iniziale
Configurare le variabili d'ambiente
Configurare le informazioni di connessione al database e altre variabili d'ambiente nel file
.env
. Assicurarsi che le seguenti configurazioni siano impostate correttamente:APP_ENV=dev APP_SECRET=your_secret_key DATABASE_URL=mysql://root:[email protected]:3306/servbay_symfony_app
1
2
3
Configurare il server web
Usare la funzionalità 'host' di ServBay per accedere al progetto Symfony tramite il server web. Nelle impostazioni 'host' di ServBay, aggiungere un nuovo host:
- Nome:
My First Symfony Dev Site
- Dominio:
servbay-symfony-test.local
- Tipo di sito:
PHP
- Versione PHP: scegliere
8.3
- Directory radice del sito:
/Applications/ServBay/www/servbay-symfony-app/public
Per i dettagli sui passaggi di configurazione, fare riferimento a Aggiungere il primo sito.
Aggiungere codice di esempio
Nel file config/routes.yaml
aggiungere il seguente codice per visualizzare "Hello ServBay!":
index:
path: /
controller: App\Controller\DefaultController::index
2
3
Nel file src/Controller/DefaultController.php
aggiungere il seguente codice:
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
Accedere al sito
Aprire il browser e visitare https://servbay-symfony-test.local
, vedrai la pagina visualizzare Hello ServBay!
.
Esempio di database NoSQL
Esempio di Memcached
Installare l'estensione Memcached
In ServBay, l'estensione Memcached è già preinstallata, non è necessaria alcuna installazione aggiuntiva.
Configurare Memcached
Configurare le informazioni di connessione a Memcached nel file
.env
:CACHE_DRIVER=memcached MEMCACHED_HOST=127.0.0.1
1
2Nel file
config/routes.yaml
aggiungere il seguente codice:
memcached:
path: /memcached
controller: App\Controller\DefaultController::memcached
2
3
Usare Memcached
Utilizzare la cache nel controller:
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
21Aprire il browser e visitare
https://servbay-symfony-test.local/memcached
Esempio di Redis
Installare l'estensione Redis
In ServBay, l'estensione Redis è già preinstallata, non è necessaria alcuna installazione aggiuntiva.
Configurare Redis
Configurare le informazioni di connessione a Redis nel file
.env
:REDIS_URL=redis://127.0.0.1:6379
1Nel file
config/routes.yaml
aggiungere il seguente codice:
redis:
path: /redis
controller: App\Controller\DefaultController::redis
2
3
Usare Redis
Utilizzare la cache nel controller:
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
21Aprire il browser e visitare
https://servbay-symfony-test.local/redis
Esempio di database relazionale
Creare struttura database e file di migrazione
Creare file di migrazione
Usare il Symfony Maker Bundle per creare i file di migrazione:
bashphp bin/console make:migration
1Modificare i file di migrazione
Trovare il file di migrazione appena creato nella directory
src/Migrations
e modificarlo per definire la struttura delle tabelle del database: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
4Eseguire la migrazione
Utilizzare il comando Symfony per eseguire la migrazione e creare le tabelle del database:
bashphp bin/console doctrine:migrations:migrate
1
Esempio di MySQL
Configurare MySQL
Configurare le informazioni di connessione a MySQL nel file
.env
:DATABASE_URL=mysql://root:[email protected]:3306/servbay_symfony_app
1Nel file
config/routes.yaml
aggiungere il seguente codice:
mysql_add:
path: /mysql-add
controller: App\Controller\DefaultController::mysqlAdd
mysql_get:
path: /mysql
controller: App\Controller\DefaultController::mysql
2
3
4
5
6
Inserire dati utente
Inserire dati utente nel controller:
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
37Aprire il browser e visitare
https://servbay-symfony-test.local/mysql-add
ehttps://servbay-symfony-test.local/mysql
Esempio di PostgreSQL
Configurare PostgreSQL
Configurare le informazioni di connessione a PostgreSQL nel file
.env
:DATABASE_URL=pgsql://root:[email protected]:5432/servbay_symfony_app
1Nel file
config/routes.yaml
aggiungere il seguente codice:
pgsql_add:
path: /pgsql-add
controller: App\Controller\DefaultController::pgsqlAdd
pgsql_get:
path: /pgsql
controller: App\Controller\DefaultController::pgsql
2
3
4
5
6
Inserire dati utente
Inserire dati utente nel controller:
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
37Aprire il browser e visitare
https://servbay-symfony-test.local/pgsql-add
ehttps://servbay-symfony-test.local/pgsql
Con questi passaggi, hai creato ed eseguito con successo un progetto Symfony utilizzando le funzionalità offerte da ServBay per gestire e accedere al tuo progetto, collegando simultaneamente vari database per la gestione dei dati.