ServBay Yerel Geliştirme Ortamında FuelPHP Projesi Oluşturma ve Çalıştırma
FuelPHP Nedir?
FuelPHP, modern web uygulamaları oluşturmak için tasarlanmış esnek ve modüler bir PHP çerçevesidir. Hiyerarşik Model-Görünüm-Kontrolcü (HMVC - Hierarchical Model-View-Controller) tasarım modelini benimser ve geliştiricilere hızlı, verimli ve yüksek kaliteli web uygulamaları oluşturmak için güçlü araçlar sunar. FuelPHP, sağladığı üstün esneklik, yüksek performans ve kolay genişletilebilirlik özellikleriyle birçok PHP geliştirici tarafından tercih edilmektedir.
FuelPHP'nin Temel Özellikleri ve Avantajları
- HMVC Mimari: Hiyerarşik MVC tasarımını destekler. Kodun düzenli, yeniden kullanılabilir ve modüler geliştirilmesini sağlar. Büyük ve karmaşık projeler için idealdir.
- Yüksek Performans: FuelPHP performans odaklı olarak tasarlanmıştır. Kaynak verimliliği ve hızlı yanıt süresi ile yüksek trafikli uygulamalarda bile etkin bir şekilde çalışır.
- Kolay Genişletilebilirlik: Güçlü bir genişletme sistemi sayesinde, geliştiriciler projeye kolayca üçüncü parti kütüphaneler veya özel fonksiyonlar ekleyebilirler.
- Güvenlik: Otomatik girdi doğrulama, çıktı filtreleme (XSS koruması), CSRF koruması, SQL enjeksiyon önleme gibi bir dizi yerleşik güvenlik özelliği sunar. Daha güvenli uygulamalar inşa etmenize yardımcı olur.
- Geniş Topluluk Desteği: FuelPHP'nin aktif bir geliştirici topluluğu vardır. Hızlı destek ve zengin üçüncü parti kaynaklardan faydalanabilirsiniz.
Bu özellikler sayesinde FuelPHP, küçük projelerden kurumsal ölçekli uygulamalara kadar her türlü projenin hızlı, güvenli ve kolay bakımı için sağlam bir temel sunar.
ServBay ile FuelPHP Geliştirme Ortamı Kurulumu
ServBay, geliştiriciler için özel olarak tasarlanmış yerel bir web geliştirme ortamıdır. PHP, Caddy/Nginx/Apache, MySQL/PostgreSQL/MongoDB, Redis gibi çeşitli hizmet ve araçları önceden kurulu olarak sunar. ServBay sayesinde, FuelPHP projeleriniz için ihtiyaç duyulan çalışma ortamını, manuel kurulum ve yapılandırma olmadan kolayca oluşturabilirsiniz.
Bu rehberde, ServBay'in sunduğu PHP ortamı, web sunucusu (Caddy) ve veritabanı ile önbellek hizmetlerini kullanarak bir FuelPHP projesini kurma ve çalıştırma adımlarını detaylandırıyoruz. ServBay’in Web Sitesi özelliğini kullanarak web sunucu yapılandırmasını adım adım gerçekleştireceğiz ve projenizi kolayca erişilebilir hale getireceğiz.
Ön Koşullar
Başlamadan önce aşağıdaki hazırlıkları tamamlayın:
- MacOS üzerinde ServBay’i başarıyla kurup çalıştırdınız.
- ServBay’deki PHP ortamı etkin durumda (varsayılan olarak etkin gelir).
- Kullanmak istediğiniz ServBay veritabanı hizmeti (örneğin MySQL) ve önbellek hizmetleri (Redis, Memcached) başlatılmış ve düzgün şekilde çalışıyor.
- ServBay, Composer’ı önceden entegre olarak sunar; ekstra yükleme gerekmez.
FuelPHP Projesi Oluşturma
Önerilen Proje Klasör Yolu
ServBay, web sitesi projeleri için tüm dosyaların /Applications/ServBay/www
dizininde toplanmasını önerir. Bu ServBay’in daha kolay yönetim ve yapılandırma sağlamasına yardımcı olur. Bu rehberde örnek olarak bu klasörü kullanıyoruz.
Web Sitesi Kök Dizinine Geçiş
Terminal uygulamasını açıp, ServBay’in önerdiği kök dizine geçin:
bashcd /Applications/ServBay/www
1Proje Klasörü Oluşturma
FuelPHP projeniz için yeni bir klasör oluşturun ve içerisine girin:
bashmkdir servbay-fuelphp-app cd servbay-fuelphp-app
1
2Composer ile FuelPHP Projesini Oluşturma
Proje dizinindeyken, Composer ile FuelPHP çerçevesini indirin ve başlatın.
.
mevcut klasörü ifade eder:bashcomposer create-project fuel/fuel .
1Composer, FuelPHP çekirdeğini ve bağımlılıklarını
servbay-fuelphp-app
klasörüne otomatik olarak indirir.
Web Sunucusunu Yapılandırma (ServBay Web Sitesi Özelliği ile)
FuelPHP projenize tarayıcı üzerinden erişebilmek için ServBay’in Web Sitesi özelliği ile sanal bir alan adı ayarlamanız gerekir.
- ServBay ana ekranını açın.
- Sol menüden Web Sitesi seçeneğine tıklayın.
- Sağ üstteki Web Sitesi Ekle butonuna tıklayın.
- Açılan pencerede aşağıdaki bilgileri doldurun:
- Ad: Web siteniz için kolay bir isim verin, örneğin
İlk FuelPHP Geliştirme Sitem
. - Alan Adı: Yerel geliştirme için bir alan adı girin, örnek:
servbay-fuelphp-test.local
. ServBay, bu alan adını otomatik olarak yerelde çözer. - Site Türü:
PHP
olarak seçin. - PHP Versiyonu: Kullanmak istediğiniz PHP sürümünü seçin, örneğin
8.3
. - Site Kök Dizin: FuelPHP’nin giriş dosyası
public/index.php
olduğundan, site kök dizini şu şekilde olmalı:/Applications/ServBay/www/servbay-fuelphp-app/public
.
- Ad: Web siteniz için kolay bir isim verin, örneğin
- Ekle butonuyla yapılandırmayı kaydedin.
ServBay, Caddy yapılandırmasını otomatik olarak günceller ve sunucuyu yeniden başlatarak alan adını aktif hale getirir.
Ayrıntılı site ekleme adımları için ServBay dokümanındaki İlk Siteyi Ekleme bölümüne bakabilirsiniz.
FuelPHP Proje Servis Bağlantılarını Yapılandırma
FuelPHP projelerinde genellikle veritabanı ve önbellek hizmetlerini bağlamak için yapılandırma gereklidir.
Veritabanı Yapılandırması
FuelPHP’nin veritabanı ayarları fuel/app/config/development/db.php
dosyasındadır. Bu dosyada, kullandığınız veritabanı bağlantı bilgilerini girin. Varsayılan ServBay MySQL hizmetini kullandığınızı varsayalım:
php
<?php
/**
* Geliştirme veritabanı ayarları. Global ayarlarla birleştirilecektir.
*/
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 (sadece yerelde kullanılmalı!)
],
'identifier' => '`', // MySQL için ters tırnak karakteri gereklidir
],
];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
Dikkat:
- ServBay’in sunmuş olduğu veritabanı yönetim aracı (phpMyAdmin veya Adminer) ile
fuel_dev
isimli bir veritabanı oluşturmanız gerekir. ServBay’in varsayılan MySQL kullanıcısı ve şifresiroot
’tur; bu yalnızca yerel geliştirme için önerilir. 'identifier' => '
'` MySQL için gereklidir; tablo ve alan isimlerinin doğru şekilde tanımlanmasını sağlar.
Önbellek Yapılandırması (Memcached ve Redis)
FuelPHP çeşitli önbellek sürücülerini destekler. Bağlantı ayarları fuel/app/config/cache.php
dosyasında yapılır. ServBay’de Memcached ve/veya Redis hizmetlerinin başlatıldığından emin olun.
Memcached Ayarı (fuel/app/config/cache.php
):
Varsayılan önbellek olarak Memcached kullanmak istiyorsanız:
php
<?php
return [
'driver' => 'memcached', // Varsayılan sürücü memcached olarak ayarlanır
'memcached' => [
'cache_id' => 'fuel', // Önbellek kimliği
'servers' => [
'default' => [
'host' => '127.0.0.1', // Memcached varsayılan dinleme adresi
'port' => 11211, // Memcached varsayılan portu
'weight' => 100,
],
],
'compression' => false, // Sıkıştırma aktif/pasif
],
// ... Diğer önbellek sürücüsü ayarları
];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ServBay'de gelen PHP sürümleri genellikle Memcached uzantısı önceden kurulmuş olarak gelir.
Redis Ayarı (fuel/app/config/redis.php
):
Redis kullanacaksanız, redis.php
dosyasında bağlantı bilgilerini tanımlayın:
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // Redis varsayılan adresi
'port' => 6379, // Redis varsayılan portu
'database' => 0, // Redis veritabanı numarası
],
// Birden fazla Redis bağlantısı tanımlayabilirsiniz
];
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
ServBay ile gelen PHP sürümleri genellikle Redis uzantısını önceden içermektedir.
Veritabanı ve Önbellek Hizmeti Örnekleri
FuelPHP’nin veritabanı ve önbellek hizmetleriyle nasıl etkileşime geçtiğini göstermek için örnekler ekleyeceğiz.
Veritabanı Tablosu Hazırlama (FuelPHP Migrations Kullanarak)
FuelPHP, veritabanı değişikliklerini yönetmek için Oil adlı bir göç aracına (Migration) sahiptir. Bu araç veritabanı yapısının versiyon kontrolünü sağlar.
Göç Dosyası Oluşturma
Proje kökünde (
servbay-fuelphp-app
) aşağıdaki komut ile yeni bir göç dosyası oluşturupusers
tablosunu tanımlayın:bashphp oil generate migration create_users_table
1Bu, yeni dosyayı
fuel/app/migrations
klasöründe, zaman damgası içeren bir adla oluşturacaktır.Göç Dosyasını Düzenleme
Oluşturulan dosyada (
fuel/app/migrations/xxxxxxxxxxxx_create_users_table.php
)up()
fonksiyonuna tablo yapısını,down()
fonksiyonuna ise geri alma işlemini ekleyin: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'); // Birincil anahtar, indeks, motor ve karakter seti } public function down() { // users tablosunu sil (geri alma) 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
23Göçü Çalıştırma
Kök dizinde (
servbay-fuelphp-app
) aşağıdaki komut ile göçü çalıştırın ve tabloyu oluşturun:bashphp oil refine migrate
1Her şey sorunsuz ilerlerse
users
tablosufuel_dev
veritabanında oluşacaktır.
Örnek Kontrolcü Kodu Ekleme
fuel/app/classes/controller/welcome.php
dosyasını açıp veritabanı ve önbellek işlemleri için örnek action fonksiyonları ekleyin:
php
<?php
use Fuel\Core\Controller;
use Fuel\Core\Response;
use Fuel\Core\Cache;
use Fuel\Core\DB; // DB facade dahil edildi
use Fuel\Core\Redis; // Redis facade dahil edildi
class Controller_Welcome extends Controller
{
// Varsayılan ana sayfa
public function action_index()
{
return Response::forge('Hello ServBay!');
}
// Memcached örnek action
public function action_memcached()
{
// Cache'den veri almayı dene
$value = Cache::get('servbay_memcached_key');
if ($value === false) {
// Cache'de yoksa veri yaz
$value = 'Hello Memcached from ServBay!';
Cache::set('servbay_memcached_key', $value, 60); // 60 saniye cache'le
$value .= ' (from cache)';
} else {
$value .= ' (cached)';
}
return Response::forge($value);
}
// Redis örnek action
public function action_redis()
{
// Default bağlantı ile Redis nesnesi al
$redis = \Redis_Db::instance(); // FuelPHP 1.x 'te Redis_Db::instance()
// Birden fazla bağlantıyı \Redis_Db::instance('connection_name') ile kullanabilirsiniz
// Veriyi Redis'e yaz
$redis->set('servbay_redis_key', 'Hello Redis from ServBay!');
// Redis'ten veri oku
$value = $redis->get('servbay_redis_key');
return Response::forge($value);
}
// MySQL yazma örneği
public function action_mysql_add()
{
try {
// users tablosuna kayıt ekle
$result = DB::insert('users')->set([
'name' => 'ServBay Demo User ' . time(), // Zaman damgası ile eşsiz isim
'email' => 'demo_user_' . time() . '@servbay.test',
])->execute(); // execute() ile yeni eklenen ID döner
return Response::forge('User added with ID: ' . $result[0]);
} catch (\Database_Exception $e) {
// Örneğin benzersiz e-mail hatasını yakala
return Response::forge('User eklenemedi: ' . $e->getMessage(), 500);
}
}
// MySQL okuma örneği
public function action_mysql()
{
// users tablosundaki tüm kayıtları getir
$users = DB::select('id', 'name', 'email')->from('users')->execute()->as_array();
// JSON olarak dön
return Response::forge(json_encode($users, JSON_PRETTY_PRINT));
}
}
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
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
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
Notlar:
DB
veRedis
facade’leri doğrudan kullanıyoruz (use Fuel\Core\DB;
,use Fuel\Core\Redis;
).- Memcached ve Redis anahtar adlarında
servbay_
ön eki olası çakışmalardan kaçınmak için kullanıldı. - MySQL örneğinde zaman damgası ve hata yönetimi ile daha gerçekçi bir uygulama gösteriliyor.
- FuelPHP 1.x için Redis bağlantısı
\Redis_Db::instance()
ile alınır.
Route (Yönlendirme) Ayarları
Eklediğiniz action fonksiyonlarına URL ile ulaşabilmek için fuel/app/config/routes.php
dosyasını uygun şekilde düzenleyin. FuelPHP varsayılan olarak Controller_Welcome
'a yönlendirme içerir, fakat memcached
, redis
, mysql_add
ve mysql
action’ları için ekleme yapmak gerekir.
fuel/app/config/routes.php
dosyasında dönen diziye ekleyin/düzenleyin:
php
<?php
return array(
'_root_' => 'welcome/index', // Varsayılan route (ana sayfa)
'_404_' => 'welcome/404', // 404 hata sayfası
// Yeni örnek action route'ları
'memcached' => 'welcome/memcached',
'redis' => 'welcome/redis',
'mysql_add' => 'welcome/mysql_add',
'mysql' => 'welcome/mysql',
// ... Diğer yönlendirme ayarları
);
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
Siteyi Ziyaret Etme ve Test Etme
Artık ServBay’de yapılandırdığınız alan adı (örn: https://servbay-fuelphp-test.local
) ile tarayıcıdan FuelPHP projenize ve örnek servislere erişebilirsiniz.
- Varsayılan ana sayfa ziyareti:
https://servbay-fuelphp-test.local
- Beklenen çıktı:
Hello ServBay!
- Beklenen çıktı:
- Memcached testi:
https://servbay-fuelphp-test.local/memcached
- İlk ziyaret:
Hello Memcached from ServBay! (from cache)
(önbellek sağlıklıysa) - Sonraki ziyaretler:
Hello Memcached from ServBay! (cached)
- İlk ziyaret:
- Redis testi:
https://servbay-fuelphp-test.local/redis
- Beklenen çıktı:
Hello Redis from ServBay!
- Beklenen çıktı:
- MySQL’e kullanıcı ekleme:
https://servbay-fuelphp-test.local/mysql_add
- Beklenen çıktı:
User added with ID: [yeni eklenen ID]
- Beklenen çıktı:
- MySQL kullanıcı listesini okuma:
https://servbay-fuelphp-test.local/mysql
- Beklenen çıktı:
users
tablosundaki tüm kayıtları içeren bir JSON dizi
- Beklenen çıktı:
HTTPS Hakkında: ServBay yerel web siteleri için otomatik olarak SSL sertifikası ayarlar. ServBay User CA veya ServBay Public CA üzerinden güvenilirlik sağlar. Tarayıcınızda sertifika güvenlik uyarısı görürseniz, ServBay’in CA sertifikasını işletim sisteminize güvenilir olarak eklediğinizden emin olun.
Dikkat Edilecekler
- ServBay ana ekranında kullandığınız PHP versiyonunun, Caddy (veya alternatif olarak Nginx/Apache), MySQL, Redis ve Memcached gibi servislerin çalışır durumda olduğundan emin olun.
- ServBay’in veritabanı yönetim aracı ile
fuel_dev
adlı veritabanını manuel olarak oluşturduğunuzu kontrol edin (veyadb.php
’de var olan bir veritabanı kullandınız). FuelPHP’nin göç aracı (oil refine migrate
) tabloları oluşturur, veritabanını oluşturmaz. - FuelPHP’nin giriş dosyası
public/index.php
’dir; ServBay’de Web Sitesi yapısında mutlaka kök dizini projenizinpublic
alt klasörüne işaret etmeli.
Özet
ServBay ile macOS üzerinde FuelPHP projeleriniz için eksiksiz bir yerel geliştirme ortamı kurmak son derece kolaydır. Bu rehber, FuelPHP projesi oluşturmayı, ServBay’in Web Sitesi özelliğini ayarlamayı, veritabanı ve önbellek yapılandırmalarını ve işlev testlerini örnek kodlarla adım adım gösterdi. ServBay’in entegre servisleri ve sadeleştirilmiş yapılandırması, verimliliğinizi önemli ölçüde artıracaktır.
Umarız bu rehber, ServBay ortamında FuelPHP projelerine başlamanızı kolaylaştırır!