Erstellen und Ausführen eines Symfony-Projekts
Was ist Symfony?
Symfony ist ein Open-Source-PHP-Web-Framework, das von SensioLabs erstellt wurde und Entwicklern eine effiziente, flexible und leistungsstarke Tool-Suite zum Aufbau moderner Webanwendungen bietet. Symfony bietet reichhaltige Funktionen wie Routing, Template-Engine, Formularverarbeitung, Authentifizierung usw., was häufige Aufgaben der Webentwicklung vereinfacht.
Hauptmerkmale und Vorteile von Symfony
- Modulares Design: Symfony verwendet ein modulares Design, das Entwicklern ermöglicht, Komponenten nach Bedarf auszuwählen und zu verwenden.
- Hohe Leistung: Durch die optimierte Architektur und Caching-Mechanismen bietet Symfony eine hervorragende Leistung.
- Starke Gemeinschaftsunterstützung: Große Entwickler-Community und ein umfangreiches Ökosystem.
- Flexibilität: Kann eine Vielzahl von Drittanbieter-Bibliotheken und Erweiterungen integrieren, die für Projekte jeder Größe geeignet sind.
- Gute Dokumentation: Bietet ausführliche Dokumentation und Tutorials, um Entwicklern den Einstieg zu erleichtern.
Symfony hilft Entwicklern, hochwertige Webanwendungen und APIs schnell zu erstellen, geeignet für Projekte von kleinen Anwendungen bis zu großen Unternehmenssystemen.
Erstellen und Ausführen eines Symfony-Projekts mit ServBay
In diesem Artikel verwenden wir die von ServBay bereitgestellte PHP-Umgebung, um ein Symfony-Projekt zu erstellen und auszuführen. Wir nutzen die 'Host'-Funktion von ServBay, um den Webserver einzurichten und durch einfache Konfigurationen den Zugang zum Projekt zu ermöglichen.
Hinweis: Wenn Sie NGINX- oder Apache-Nutzer gewesen sind
ServBay verwendet standardmäßig Caddy als Webserver. Für Nutzer, die von NGINX und Apache zu ServBay wechseln, gibt es einige wichtige Änderungen:
Caddy-Konfiguration
ServBay enthält bereits Caddy, und die Standardkonfiguration ist optimiert und debuggt. Entwickler müssen die Caddy-Konfigurationsdatei nicht manuell ändern, sondern können Websites über die 'Host'-Funktion von ServBay verwalten.
Rewrite-Regeln und .htaccess
In NGINX und Apache müssen Entwickler normalerweise Rewrite-Regeln und .htaccess-Dateien selbst schreiben, um URL-Umschreibungen und andere Konfigurationen zu verwalten. ServBay ist jedoch bereits mit Caddy-Regeln vorkonfiguriert. Sofern keine speziellen Anforderungen bestehen, müssen Entwickler diese Regeln nicht selbst schreiben.
Mehr erfahren
Weitere Informationen finden Sie unter Rewrite und htaccess, Wie man eine Apache-Website zu ServBay migriert und Wie man eine NGINX-Website zu ServBay migriert.
Erstellen eines Symfony-Projekts
TIP
ServBay empfiehlt Entwicklern, ihre Websites im Verzeichnis /Applications/ServBay/www
abzulegen, um die Verwaltung zu erleichtern.
Installation von Composer
ServBay wird mit Composer vorinstalliert geliefert, sodass keine separate Installation erforderlich ist.
Erstellen eines Symfony-Projekts
Verwenden Sie Composer, um ein neues Symfony-Projekt zu erstellen:
bashcd /Applications/ServBay/www mkdir servbay-symfony-app cd servbay-symfony-app composer create-project symfony/website-skeleton .
1
2
3
4In das Projektverzeichnis wechseln
Wechseln Sie in das neu erstellte Symfony-Projektverzeichnis:
bashcd /Applications/ServBay/www/servbay-symfony-app
1
Initialisierungskonfiguration
Umgebungsvariablen konfigurieren
Konfigurieren Sie die Datenbankverbindungsinformationen und andere Umgebungsvariablen in der
.env
Datei. Stelen Sie sicher, dass die folgende Konfiguration korrekt eingerichtet ist:APP_ENV=dev APP_SECRET=your_secret_key DATABASE_URL=mysql://root:[email protected]:3306/servbay_symfony_app
1
2
3
Konfiguration des Webservers
Verwenden Sie die 'Host'-Funktion von ServBay, um über den Webserver auf das Symfony-Projekt zuzugreifen. Fügen Sie in den Host-Einstellungen von ServBay einen neuen Host hinzu:
- Name:
My First Symfony Dev Site
- Domain:
servbay-symfony-test.local
- Website-Typ:
PHP
- PHP-Version: Wählen Sie
8.3
- Webstammverzeichnis:
/Applications/ServBay/www/servbay-symfony-app/public
Detaillierte Einstellungsschritte finden Sie unter Hinzufügen der ersten Website.
Beispielcode hinzufügen
Fügen Sie in der Datei config/routes.yaml
den folgenden Code hinzu, um "Hello ServBay!" auszugeben:
index:
path: /
controller: App\Controller\DefaultController::index
2
3
Fügen Sie in der Datei src/Controller/DefaultController.php
den folgenden Code hinzu:
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('Hallo ServBay!');
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Website aufrufen
Öffnen Sie Ihren Browser und rufen Sie https://servbay-symfony-test.local
auf, Sie werden die Ausgabe Hello ServBay!
sehen.
NoSQL-Datenbankbeispiel
Memcached Beispiel
Installation der Memcached-Erweiterung
In ServBay ist die Memcached-Erweiterung bereits vorinstalliert, sodass keine zusätzliche Installation erforderlich ist.
Konfiguration von Memcached
Konfigurieren Sie die Memcached-Verbindungsinformationen in der
.env
Datei:CACHE_DRIVER=memcached MEMCACHED_HOST=127.0.0.1
1
2Fügen Sie in der Datei
config/routes.yaml
den folgenden Code hinzu:
memcached:
path: /memcached
controller: App\Controller\DefaultController::memcached
2
3
Verwendung von Memcached
Verwenden Sie den Cache im 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('Hallo 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
21Öffnen Sie Ihren Browser und rufen Sie
https://servbay-symfony-test.local/memcached
auf.
Redis Beispiel
Installation der Redis-Erweiterung
In ServBay ist die Redis-Erweiterung bereits vorinstalliert, sodass keine zusätzliche Installation erforderlich ist.
Konfiguration von Redis
Konfigurieren Sie die Redis-Verbindungsinformationen in der
.env
Datei:REDIS_URL=redis://127.0.0.1:6379
1Fügen Sie in der Datei
config/routes.yaml
den folgenden Code hinzu:
redis:
path: /redis
controller: App\Controller\DefaultController::redis
2
3
Verwendung von Redis
Verwenden Sie den Cache im 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('Hallo 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
21Öffnen Sie Ihren Browser und rufen Sie
https://servbay-symfony-test.local/redis
auf.
Beispiel für relationale Datenbanken
Datenbankstruktur und Migrationsdateien erstellen
Migrationsdateien erstellen
Verwenden Sie das Maker Bundle von Symfony, um Migrationsdateien zu erstellen:
bashphp bin/console make:migration
1Migrationsdateien bearbeiten
Finden Sie die neu erstellten Migrationsdateien im Verzeichnis
src/Migrations
und bearbeiten Sie diese, um die Tabellenstruktur zu definieren: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
4Migration ausführen
Führen Sie die Migration mit dem Symfony-Befehl aus, um die Datenbanktabellen zu erstellen:
bashphp bin/console doctrine:migrations:migrate
1
MySQL Beispiel
Konfiguration von MySQL
Konfigurieren Sie die MySQL-Verbindungsinformationen in der
.env
Datei:DATABASE_URL=mysql://root:[email protected]:3306/servbay_symfony_app
1Fügen Sie in der Datei
config/routes.yaml
den folgenden Code hinzu:
mysql_add:
path: /mysql-add
controller: App\Controller\DefaultController::mysqlAdd
mysql_get:
path: /mysql
controller: App\Controller\DefaultController::mysql
2
3
4
5
6
Benutzerdaten schreiben
Schreiben Sie Benutzerdaten im 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('Benutzer hinzugefügt'); } /** * @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
37Öffnen Sie Ihren Browser und rufen Sie
https://servbay-symfony-test.local/mysql-add
undhttps://servbay-symfony-test.local/mysql
auf.
PostgreSQL Beispiel
Konfiguration von PostgreSQL
Konfigurieren Sie die PostgreSQL-Verbindungsinformationen in der
.env
Datei:DATABASE_URL=pgsql://root:[email protected]:5432/servbay_symfony_app
1Fügen Sie in der Datei
config/routes.yaml
den folgenden Code hinzu:
pgsql_add:
path: /pgsql-add
controller: App\Controller\DefaultController::pgsqlAdd
pgsql_get:
path: /pgsql
controller: App\Controller\DefaultController::pgsql
2
3
4
5
6
Benutzerdaten schreiben
Schreiben Sie Benutzerdaten im 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('Benutzer hinzugefügt'); } /** * @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
37Öffnen Sie Ihren Browser und rufen Sie
https://servbay-symfony-test.local/pgsql-add
undhttps://servbay-symfony-test.local/pgsql
auf.
In den obigen Schritten haben Sie erfolgreich ein Symfony-Projekt erstellt und ausgeführt, die Funktionen von ServBay genutzt, um Ihr Projekt zu verwalten und darauf zuzugreifen, und mehrere Datenbanken verbunden und Daten abgerufen.