ServBay Yerel Geliştirme Ortamında FuelPHP Projesi Oluşturmak ve Çalıştırmak
FuelPHP Nedir?
FuelPHP, modern web uygulamaları oluşturmak için tasarlanmış esnek ve modüler bir PHP çatısıdır. Hiyerarşik Model-Görünüm-Kontrolcü (HMVC – Hierarchical Model-View-Controller) tasarım modelini benimser ve geliştiricilere hızlı ve verimli şekilde yüksek kalite web uygulamaları oluşturmalarında yardımcı olacak zengin özellikler ve araçlar sunar. FuelPHP, mükemmel esnekliği, yüksek performanslı yapısı ve kolay genişletilebilirliği ile birçok PHP geliştiricisinin tercih ettiği çatı haline gelmiştir.
FuelPHP’nin Temel Özellikleri ve Avantajları
- HMVC Mimarisi: Katmanlı MVC tasarım desenini destekler, bu da kodun düzenlenmesine, yeniden kullanılmasına ve modüler geliştirmeye yardımcı olur. Özellikle büyük ve karmaşık projelerde idealdir.
- Yüksek Performans: FuelPHP, performans optimizasyonuna odaklanarak tasarlanmıştır; hızlı çalışması ve kaynakları etkili kullanabilmesiyle bilinir, yüksek eşzamanlı istekleri rahatça idare edebilir.
- Kolay Genişletilebilirlik: Güçlü genişletme mekanizması sayesinde geliştiriciler, üçüncü taraf kütüphaneleri kolayca entegre edebilir veya projeye özel işlevler ekleyebilir.
- Güvenlik: Otomatik giriş doğrulama, çıktı filtreleme (XSS korunması), CSRF koruması, SQL enjeksiyon önleme gibi pek çok güvenlik özelliği dahili olarak sunulur ve geliştiricilere daha güvenli uygulamalar oluşturma imkânı verir.
- Güçlü Topluluk Desteği: FuelPHP’nin aktif bir geliştirici topluluğu vardır; hızlıca yardım alabilir ve zengin üçüncü taraf kaynaklarından faydalanabilirsiniz.
Bu özellikleriyle FuelPHP, geliştiricilere yüksek performanslı, güvenli ve bakımı kolay web uygulamalarını küçük projelerden büyük ölçekli kurumsal uygulamalara kadar farklı ölçeklerde hızlı bir şekilde inşa etme olanağı sunar.
ServBay ile FuelPHP Geliştirme Ortamı Kurmak
ServBay, geliştiriciler için hazırlanmış bir yerel web geliştirme ortamıdır. PHP, Caddy/Nginx/Apache, MySQL/PostgreSQL/MongoDB, Redis gibi birçok hizmet ve aracı önyüklü şekilde sunar. ServBay sayesinde FuelPHP projeleriniz için gerekli çalışma ortamını kolayca kurabilir, bağımlılıkları manuel olarak indirmek ve yapılandırmakla uğraşmazsınız.
Bu rehberde, ServBay’in sunduğu PHP ortamı, web sunucusu (Caddy), veritabanı ve önbellek hizmetlerinden faydalanarak bir FuelPHP projesi oluşturup çalıştırmayı detaylıca anlatıyoruz. ServBay’in Web Sitesi fonksiyonu ile web sunucusunu yapılandıracak ve sadece bir kaç adımla projenizi hızlıca erişilebilir ve test edilebilir hale getireceğiz.
Ön Koşullar
Başlamadan önce aşağıdaki şartların sağlandığından emin olun:
- macOS üzerinde ServBay’i başarılı şekilde indirip kurdunuz.
- ServBay’deki PHP ortamı etkin (varsayılan olarak açıktır).
- Kullanmak istediğiniz veritabanı (ör. MySQL) ve önbellek (ör. Redis, Memcached) servisleri ServBay’de başlatılmış ve çalışır durumda.
- ServBay, Composer’ı önyüklü şekilde sunar; ayrıca kurulum gerekmez.
FuelPHP Projesi Oluşturmak
Önerilen Proje Klasörü Konumu
ServBay, site projelerinin tamamının /Applications/ServBay/www
klasöründe saklanmasını önerir; bu, ServBay’in yönetimini ve yapılandırmasını kolaylaştırır. Bu rehberde de örnek olarak bu klasör kullanılacaktır.
Site Kök Dizini’ne Geçin
Terminal uygulamasını açın ve ServBay’in önerdiği site kök dizinine geçin:
bashcd /Applications/ServBay/www
1Proje Klasörü Oluşturun
FuelPHP projeniz için yeni bir klasör oluşturun ve içine girin:
bashmkdir servbay-fuelphp-app cd servbay-fuelphp-app
1
2Composer ile FuelPHP Projesi Oluşturun
Proje klasöründe, Composer’ı kullanarak FuelPHP çatısını ve bağımlılıklarını indirin.
.
mevcut dizine kurulacak anlamına gelir:bashcomposer create-project fuel/fuel .
1Composer otomatik olarak FuelPHP çatısı ve bağımlılıklarını
servbay-fuelphp-app
dizinine indirir.
Web Sunucusunu Yapılandırma (ServBay Web Sitesi Fonksiyonu ile)
Projenizi tarayıcıda erişilebilir kılmak için, ServBay’in Web Sitesi fonksiyonu ile ona bir sanal host (alan adı) atamanız gerekir.
- ServBay ana arayüzünü açın.
- Sol menüde Web Sitesi seçeneğine tıklayın.
- Sağ üstteki Web Sitesi Ekle düğmesine tıklayın.
- Açılan pencereye şu bilgileri girin:
- Ad: Kolayca tanıyabileceğiniz bir ad verin, örn.
My First FuelPHP Dev Site
. - Alan Adı: Yerel geliştirme için bir alan adı belirleyin, ör.
servbay-fuelphp-test.local
. ServBay, bu alan adını yerelde otomatik olarak yönlendirir. - Site Tipi:
PHP
olarak seçin. - PHP Sürümü: Kullanmak istediğiniz PHP sürümünü seçin, ör.
8.3
. - Site Kök Dizini: FuelPHP’nin ana giriş dizini. FuelPHP’de giriş noktası
public/index.php
dosyasıdır, dolayısıyla kök dizin olarak projeninpublic
alt klasörünü seçin:/Applications/ServBay/www/servbay-fuelphp-app/public
- Ad: Kolayca tanıyabileceğiniz bir ad verin, örn.
- Ayarları kaydetmek için Ekle butonuna tıklayın.
ServBay, Caddy yapılandırmasını otomatik olarak güncelleyecek ve hizmetleri yeniden yükleyecektir. Böylece yeni alan adınız çalışır hale gelir.
Web sitesi ekleme detayları için ServBay dokümanındaki İlk Web Sitesi Ekleme bölümüne bakabilirsiniz.
FuelPHP Projesinde Hizmet Bağlantılarını Yapılandırmak
FuelPHP projelerinde genellikle veritabanı ve önbellek gibi servislerin bağlantı bilgilerinin ayarlanması gerekir.
Veritabanı Konfigürasyonu
FuelPHP’de veritabanı ayarları fuel/app/config/development/db.php
dosyasında bulunur. Kendi veritabanı bağlantınızı ayarlamak için bu dosyayı düzenleyin. Aşağıda, ServBay’in varsayılan MySQL hizmetini kullandığınızı varsayan bir örnek yapılandırma yer alıyor:
<?php
/**
* Geliştirme ortamı veritabanı ayarları. Bu ayarlar, genel ayarlarla birleştirilir.
*/
return [
'default' => [
'connection' => [
'dsn' => 'mysql:host=localhost;dbname=fuel_dev', // fuel_dev veritabanının var olduğundan emin olun
'username' => 'root', // ServBay MySQL varsayılan kullanıcısı
'password' => 'root', // ServBay MySQL varsayılan şifresi (yalnızca yerel geliştirme için!)
],
'identifier' => '`', // MySQL için ters tırnak zorunlu
],
];
2
3
4
5
6
7
8
9
10
11
12
13
14
Dikkat:
- ServBay’in sunduğu veritabanı yönetim aracında (phpMyAdmin veya Adminer)
fuel_dev
adında bir veritabanını elle oluşturmalısınız. Varsayılan MySQL kullanıcısıroot
ve şifresi deroot
tür; bu, yalnızca yerel geliştirmeler için önerilir. 'identifier' => '
'` ayarı MySQL için gereklidir, tablo ve alan adlarının doğru şekilde işlenmesini sağlar.
Önbellek Konfigürasyonu (Memcached ve Redis)
FuelPHP birden fazla önbellek sürücüsünü destekler. fuel/app/config/cache.php
dosyasıyla önbellek sürücüsü ve bağlantı bilgilerinizi yapılandırabilirsiniz. Öncelikle ServBay’de Memcached ve/veya Redis servislerinin açık olduğundan emin olun.
Memcached Ayarları (fuel/app/config/cache.php
):
Eğer varsayılan önbellek olarak Memcached’i kullanacaksanız:
<?php
return [
'driver' => 'memcached', // Varsayılan sürücüyü memcached olarak ayarlayın
'memcached' => [
'cache_id' => 'fuel', // Önbellek kimliği
'servers' => [
'default' => [
'host' => '127.0.0.1', // Memcached varsayılan adresi
'port' => 11211, // Memcached varsayılan portu
'weight' => 100,
],
],
'compression' => false, // Sıkıştırma aktif mi?
],
// ... Diğer önbellek sürücüsü ayarları
];
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ServBay ile gelen PHP sürümlerinde genellikle Memcached uzantısı yüklüdür.
Redis Ayarları (fuel/app/config/redis.php
):
Redis kullanacaksanız, bağlantı bilgilerini şu şekilde yapılandırabilirsiniz (genellikle ayrı bir redis.php
dosyası kullanılır):
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // Redis varsayılan adresi
'port' => 6379, // Redis varsayılan portu
'database' => 0, // Redis veritabanı indeksi
],
// Birden fazla Redis bağlantısı tanımlayabilirsiniz
];
2
3
4
5
6
7
8
9
ServBay’in sunduğu PHP sürümlerinde Redis uzantısı da genellikle hazır gelir.
Veritabanı ve Önbellek Servisleri İçin Örnekler
FuelPHP’nin veritabanı ve önbellek servisleriyle nasıl entegre çalıştığını göstermek için bazı örnek kodlar ekleyeceğiz.
Veritabanı Tablosu Hazırlama (FuelPHP Migrations ile)
FuelPHP, Oil adında bir araç ile veritabanı migrasyonlarını (değişikliklerini) kontrol altına almanızı sağlar. Yani veritabanı yapınızı versiyonlayabilirsiniz.
Migration Dosyası Oluşturun
Proje kök dizininde (
servbay-fuelphp-app
) Oil aracıyla users tablosunun yapısını tanımlayacak yeni bir migration dosyası oluşturun:bashphp oil generate migration create_users_table
1Bu komut,
fuel/app/migrations
klasörüne zaman damgalı bir dosya oluşturur.Migration Dosyasını Düzenleyin
Oluşan dosya (
fuel/app/migrations/xxxxxxxxxxxx_create_users_table.php
) içindekiup()
metodunu tabloyu oluşturacak,down()
metodunu ise geri alacak şekilde düzenleyin:php<?php namespace Fuel\Migrations; use Fuel\Core\DBUtil; class Create_users_table { public function up() { // users tablosunu oluştur DBUtil::create_table('users', [ 'id' => ['type' => 'int', 'constraint' => 11, 'auto_increment' => true], 'name' => ['type' => 'varchar', 'constraint' => 100], 'email' => ['type' => 'varchar', 'constraint' => 100, 'unique' => true], ], ['id'], true, 'InnoDB', 'utf8mb4_unicode_ci'); // Anahtar, indeks, motor ve karakter seti ayarları } public function down() { // users tablosunu sil (geri alma işlemi) DBUtil::drop_table('users'); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23Migration’ı Çalıştırın
Proje kök klasöründe, migration’ı çalıştırarak tabloyu oluşturun:
bashphp oil refine migrate
1Her şey yolunda ise
users
tablosufuel_dev
veritabanında oluşturulacaktır.
Örnek Kontrolcü Kodları Eklemek
fuel/app/classes/controller/welcome.php
dosyasını düzenleyin ve veritabanı ile önbellek işlemlerini gösteren metotlar ekleyin:
<?php
use Fuel\Core\Controller;
use Fuel\Core\Response;
use Fuel\Core\Cache;
use Fuel\Core\DB; // DB facade’ını dahil edin
use Fuel\Core\Redis; // Redis facade’ını dahil edin
class Controller_Welcome extends Controller
{
// Varsayılan ana sayfa Action'ı
public function action_index()
{
return Response::forge('Hello ServBay!');
}
// Memcached örnek Action'ı
public function action_memcached()
{
// Önbellekten veri çekmeyi dene
$value = Cache::get('servbay_memcached_key');
if ($value === false) {
// Önbellekte yoksa, veriyi ayarla
$value = 'Hello Memcached from ServBay!';
Cache::set('servbay_memcached_key', $value, 60); // 60 saniyelik cache
$value .= ' (from cache)';
} else {
$value .= ' (cached)';
}
return Response::forge($value);
}
// Redis örnek Action'ı
public function action_redis()
{
// Varsayılan bağlantıyı kullanarak Redis örneği al
$redis = \Redis_Db::instance(); // FuelPHP 1.x’te Redis_Db::instance() kullanılır
// Eğer birden fazla bağlantı tanımlıysa: \Redis_Db::instance('connection_name')
// Redis’e veri ekle
$redis->set('servbay_redis_key', 'Hello Redis from ServBay!');
// Redis’ten veri çek
$value = $redis->get('servbay_redis_key');
return Response::forge($value);
}
// MySQL'e yazma örneği Action'ı
public function action_mysql_add()
{
try {
// users tablosuna yeni kayıt ekle
$result = DB::insert('users')->set([
'name' => 'ServBay Demo User ' . time(), // Eşsiz yapmak için zaman damgası kullan
'email' => 'demo_user_' . time() . '@servbay.test',
])->execute(); // execute() yeni eklenen kaydın ID’sini içeren bir dizi döndürür
return Response::forge('User added with ID: ' . $result[0]);
} catch (\Database_Exception $e) {
// Tekrarlı email gibi veritabanı hatalarını yakala
return Response::forge('Error adding user: ' . $e->getMessage(), 500);
}
}
// MySQL'den okuma örneği Action'ı
public function action_mysql()
{
// users tablosundaki tüm kayıtları çek
$users = DB::select('id', 'name', 'email')->from('users')->execute()->as_array();
// Kullanıcıları JSON formatında döndür
return Response::forge(json_encode($users, JSON_PRETTY_PRINT));
}
}
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
Dikkat:
- Burada
DB
veRedis
facadeleri doğrudan kullanılabiliyor (use Fuel\Core\DB;
,use Fuel\Core\Redis;
). - Memcached ve Redis anahtar isimlerinde çakışma yaşanmaması için
servbay_
öneki kullanıldı. - MySQL yazma örneğinde zaman damgası ve hata işleme eklenmiştir; örnek metinler de gerçek senaryoya uyarlanmıştır.
- FuelPHP 1.x’te Redis örneği almak için
\Redis_Db::instance()
kullanılır.
Rota Yapılandırması
Eklediğimiz kontrolcü action’larını URL ile çağırabilmek için, fuel/app/config/routes.php
dosyasına uygun rotaları eklememiz gerekiyor. FuelPHP’de varsayılan olarak Controller_Welcome
için rota tanımlıdır fakat eklediğimiz memcached
, redis
, mysql_add
, mysql
action’ları için rotaları belirtmeliyiz.
fuel/app/config/routes.php
dosyasında aşağıdaki şekildeki diziyi döndüren bir yapı olsun:
<?php
return array(
'_root_' => 'welcome/index', // Varsayılan rota, welcome kontrolcüsünün index action’ına yönlendirir
'_404_' => 'welcome/404', // 404 hata sayfası rotası
// Eklenen örnek action’lara uygun rotalar
'memcached' => 'welcome/memcached',
'redis' => 'welcome/redis',
'mysql_add' => 'welcome/mysql_add',
'mysql' => 'welcome/mysql',
// ... diğer rota ayarları
);
2
3
4
5
6
7
8
9
10
11
12
13
Web Sitesine Erişim ve Test
Artık, ServBay’de tanımladığınız alan adı ile (https://servbay-fuelphp-test.local
) FuelPHP projenizi ve servis bağlantılarını test edebilirsiniz.
- Varsayılan Sayfa:
https://servbay-fuelphp-test.local
- Beklenen çıktı:
Hello ServBay!
- Beklenen çıktı:
- Memcached Testi:
https://servbay-fuelphp-test.local/memcached
- İlk açılışta:
Hello Memcached from ServBay! (from cache)
(önbellek servisi çalışıyorsa) - Yeniden yüklemede:
Hello Memcached from ServBay! (cached)
(önbellek süresi dolmadıysa)
- İlk açılışta:
- Redis Testi:
https://servbay-fuelphp-test.local/redis
- Beklenen çıktı:
Hello Redis from ServBay!
(Redis servisi çalışıyorsa)
- Beklenen çıktı:
- MySQL’e kullanıcı eklemek:
https://servbay-fuelphp-test.local/mysql_add
- Beklenen çıktı:
User added with ID: [Eklenen ID]
(veritabanı ve tablo varsa)
- Beklenen çıktı:
- MySQL kullanıcı listesini çekmek:
https://servbay-fuelphp-test.local/mysql
- Beklenen çıktı:
users
tablosundaki tüm kayıtları içeren bir JSON dizi (tablo ve veri varsa)
- Beklenen çıktı:
HTTPS hakkında: ServBay, yerel web siteleri için SSL sertifikasını otomatik olarak ayarlar ve ServBay User CA veya ServBay Public CA ile sistemde güvenilirlik sağlar. Eğer tarayıcınız sertifika uyarısı verirse, ServBay’in CA sertifikasını sistemde güvenli olarak tanımladığınızdan emin olun.
Dikkat Edilmesi Gerekenler
- ServBay ana arayüzünde kullandığınız PHP sürümü, Caddy (veya Nginx/Apache), MySQL (veritabanı kullanıyorsanız), Redis (Redis kullanıyorsanız), Memcached (Memcached kullanıyorsanız) gibi tüm servislerin çalışır durumda olduğundan emin olun.
- ServBay üzerindeki veritabanı yönetim aracından
fuel_dev
adlı veritabanını elle oluşturun (veyadb.php
dosyasında mevcut olan başka bir veritabanını kullanın). FuelPHP’nin migration aracı (oil refine migrate
) yalnızca tabloyu oluşturur, veritabanını oluşturmaz. - FuelPHP’nin genel giriş dosyası
public/index.php
’dir. Bu yüzden ServBay Web Sitesi yapılandırmasında Site Kök Dizini olarak projenizinpublic
alt klasörünü işaretlediğinizden emin olun.
Özet
ServBay sayesinde macOS ortamında FuelPHP projeleriniz için eksiksiz ve hazır bir yerel geliştirme ortamı kolayca kurabilirsiniz. Bu dökümanda, FuelPHP projesi oluşturma, ServBay’in Web Sitesi yapılandırmasını ayarlama, veritabanı ve önbellek bağlantılarını yapma ve örnek kodlarla tüm temel işlevleri test etme süreçlerini detaylıca açıkladık. ServBay’in önyüklü servisleri ve basitleştirilmiş kurulum aşamaları, geliştiricilerin verimliliğini ciddi ölçüde artıracaktır.
Bu rehber ile ServBay üzerinde FuelPHP geliştirme yolculuğunuza kolay ve sorunsuz bir başlangıç yapmanızı dileriz!