Symfony Projesi Oluşturma ve Çalıştırma
Symfony Nedir?
Symfony, SensioLabs tarafından geliştirilmiş olan, PHP tabanlı açık kaynak kodlu bir web framework'üdür. Geliştiricilere modern web uygulamaları oluşturmak için etkin, esnek ve güçlü bir araç seti sunmayı amaçlar. Symfony, yönlendirme, şablon motoru, form işleme, doğrulama gibi zengin özellikler sunar ve yaygın web geliştirme görevlerini kolaylaştırır.
Symfony'nin Ana Özellikleri ve Avantajları
- Modüler Tasarım: Symfony modüler bir tasarıma sahiptir, geliştiricilerin ihtiyaçlarına göre bileşenleri seçip kullanmalarına olanak tanır.
- Yüksek Performans: Optimizasyonu yapılmış mimarisi ve önbellekleme mekanizmaları ile Symfony üstün performans sunar.
- Güçlü Topluluk Desteği: Büyük bir geliştirici topluluğuna ve zengin bir ekosisteme sahiptir.
- Esneklik: Çeşitli üçüncü parti kütüphaneler ve eklentilerle entegre edilebilir, her ölçekten proje için uygundur.
- İyi Belgelenmiş: Geliştiricilere hızlı bir başlangıç yapmaları için kapsamlı belgeler ve eğitimler sağlar.
Symfony, geliştiricilerin yüksek kaliteli web uygulamaları ve API'ler hızlı bir şekilde oluşturmasını sağlar ve küçük uygulamalardan büyük ölçekli kurumsal sistemlere kadar her türden proje için uygundur.
ServBay Kullanarak Symfony Projesi Oluşturma ve Çalıştırma
Bu makalede, ServBay'in sunduğu PHP ortamını kullanarak bir Symfony projesi oluşturmayı ve çalıştırmayı öğreneceğiz. ServBay'in 'host' işlevini kullanarak web sunucusunu kuracak ve projenin erişimini basit yapılandırmalarla sağlayacağız.
Dikkat: Daha önce NGINX veya Apache kullanıcıları için not
ServBay varsayılan olarak web sunucusu olarak Caddy kullanır. NGINX ve Apache'den ServBay'e geçiş yapan kullanıcılar için birkaç kritik değişiklik noktası vardır:
Caddy Konfigürasyonu
ServBay, Caddy'yi önceden entegre etmiş ve varsayılan yapılandırmalar optimize edilmiştir. Geliştiriciler ServBay'in 'host' işlevini kullanarak siteleri yönetebilir, manuel olarak Caddy yapılandırma dosyasını değiştirmeye gerek yoktur.
Yeniden Yazma Kuralları ve .htaccess
NGINX ve Apache'de, geliştiriciler genellikle URL yeniden yazma ve diğer yapılandırmalar için kendi yeniden yazma kurallarını ve .htaccess dosyalarını yazarlar. Bununla birlikte, ServBay çıkışta Caddy kurallarını yapılandırmıştır, bu nedenle özel ihtiyaçlar dışında geliştiricilerin bu kuralları yazmasına gerek yoktur.
Daha Fazla Bilgi
Daha fazla bilgi için Rewrite ve .htaccess, Apache Sitesini ServBay'e Taşıma, NGINX Sitesini ServBay'e Taşıma kılavuzlarına başvurun.
Symfony Projesi Oluşturma
TIP
ServBay, geliştiricilere sitelerini yönetimi kolaylaştırmak için Applications/ServBay/www
dizinine yerleştirmelerini önerir.
Composer Kurulumu
ServBay çıkışında Composer ile birlikte gelmektedir, ayrı bir kurulum gerektirmez.
Symfony Projesi Oluşturma
Composer kullanarak yeni bir Symfony projesi oluşturun:
bashcd /Applications/ServBay/www mkdir servbay-symfony-app cd servbay-symfony-app composer create-project symfony/website-skeleton .
1
2
3
4Proje Dizinine Girme
Yeni oluşturulan Symfony projesi dizinine girin:
bashcd /Applications/ServBay/www/servbay-symfony-app
1
Başlangıç Yapılandırması
Ortam Değişkenlerini Yapılandırma
.env
dosyasında veritabanı bağlantı bilgilerini ve diğer ortam değişkenlerini yapılandırın. Aşağıdaki yapılandırmaların doğru olduğundan emin olun:APP_ENV=dev APP_SECRET=your_secret_key DATABASE_URL=mysql://root:[email protected]:3306/servbay_symfony_app
1
2
3
Web Sunucusunu Yapılandırma
ServBay'in 'host' işlevini kullanarak Symfony projesine web sunucusu üzerinden erişin. ServBay 'host' ayarlarında yeni bir host ekleyin:
- İsim:
My First Symfony Dev Site
- Domain:
servbay-symfony-test.local
- Site Türü:
PHP
- PHP Sürümü:
8.3
seçin - Site Kök Dizini:
/Applications/ServBay/www/servbay-symfony-app/public
Detaylı ayar adımları için İlk Siteyi Ekleme kılavuzuna başvurun.
Örnek Kod Ekleme
config/routes.yaml
dosyasına aşağıdaki kodu ekleyin, "Hello ServBay!" mesajını çıktılayacaktır:
index:
path: /
controller: App\Controller\DefaultController::index
2
3
src/Controller/DefaultController.php
dosyasına aşağıdaki kodu ekleyin:
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
Siteye Erişim
Tarayıcıyı açın ve https://servbay-symfony-test.local
adresine gidin, Hello ServBay!
mesajını göreceksiniz.
NoSQL Veritabanı Örneği
Memcached Örneği
Memcached Eklentisini Yükleme
ServBay içinde, Memcached eklentisi önceden kurulmuş olarak gelir, ek kurulum gerekmez.
Memcached'i Yapılandırma
.env
dosyasında Memcached bağlantı bilgilerini yapılandırın:CACHE_DRIVER=memcached MEMCACHED_HOST=127.0.0.1
1
2config/routes.yaml
dosyasına aşağıdaki kodu ekleyin:
memcached:
path: /memcached
controller: App\Controller\DefaultController::memcached
2
3
Memcached Kullanma
Kontrolcüde önbelleği kullanın:
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
21Tarayıcıyı açın ve
https://servbay-symfony-test.local/memcached
adresine gidin.
Redis Örneği
Redis Eklentisini Kurma
ServBay içinde, Redis eklentisi önceden kurulmuş olarak gelir, ek kurulum gerekmez.
Redis'i Yapılandırma
.env
dosyasında Redis bağlantı bilgilerini yapılandırın:REDIS_URL=redis://127.0.0.1:6379
1config/routes.yaml
dosyasına aşağıdaki kodu ekleyin:
redis:
path: /redis
controller: App\Controller\DefaultController::redis
2
3
Redis Kullanma
Kontrolcüde önbelleği kullanın:
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
21Tarayıcıyı açın ve
https://servbay-symfony-test.local/redis
adresine gidin.
İlişkisel Veritabanı Örneği
Veritabanı Yapısı ve Göç Dosyası Oluşturma
Göç Dosyası Oluşturma
Symfony'nin Maker Bundle'ını kullanarak göç dosyası oluşturun:
bashphp bin/console make:migration
1Göç Dosyasını Düzenleme
src/Migrations
dizininde yeni oluşturulan göç dosyasını bulun ve veritabanı tablo yapısını tanımlamak için düzenleyin: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
4Göçü Çalıştırma
Symfony komutunu kullanarak göçü çalıştırın, veritabanı tablosunu oluşturun:
bashphp bin/console doctrine:migrations:migrate
1
MySQL Örneği
MySQL'i Yapılandırma
.env
dosyasında MySQL bağlantı bilgilerini yapılandırın:DATABASE_URL=mysql://root:[email protected]:3306/servbay_symfony_app
1config/routes.yaml
dosyasına aşağıdaki kodu ekleyin:
mysql_add:
path: /mysql-add
controller: App\Controller\DefaultController::mysqlAdd
mysql_get:
path: /mysql
controller: App\Controller\DefaultController::mysql
2
3
4
5
6
Kullanıcı Verilerini Yazma
Kontrolcüde kullanıcı verilerini yazma:
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
37Tarayıcıyı açın ve
https://servbay-symfony-test.local/mysql-add
vehttps://servbay-symfony-test.local/mysql
adresine gidin.
PostgreSQL Örneği
PostgreSQL'i Yapılandırma
.env
dosyasında PostgreSQL bağlantı bilgilerini yapılandırın:DATABASE_URL=pgsql://root:[email protected]:5432/servbay_symfony_app
1config/routes.yaml
dosyasına aşağıdaki kodu ekleyin:
pgsql_add:
path: /pgsql-add
controller: App\Controller\DefaultController::pgsqlAdd
pgsql_get:
path: /pgsql
controller: App\Controller\DefaultController::pgsql
2
3
4
5
6
Kullanıcı Verilerini Yazma
Kontrolcüde kullanıcı verilerini yazma:
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
37Tarayıcıyı açın ve
https://servbay-symfony-test.local/pgsql-add
vehttps://servbay-symfony-test.local/pgsql
adresine gidin.
Yukarıdaki adımlarla, Symfony projesini başarıyla oluşturup çalıştırdınız ve ServBay'in sunduğu işlevleri kullanarak projenizi yönettiniz, ayrıca çeşitli veritabanlarına bağlanıp veri çağırdınız.