ServBay ile macOS'ta PHPixie Projesi Oluşturma ve Çalıştırma
PHPixie; hafif, yüksek performanslı bir PHP çerçevesidir ve hızlı web uygulama geliştirme için tasarlanmıştır. HMVC (Hierarchical Model-View-Controller) tasarım desenini benimseyerek sade bir kod yapısı ve verimli işlem gücü sunar. Basitliği, esnekliği ve performansı sayesinde birçok geliştirici tarafından tercih edilmektedir.
PHPixie'nin Öne Çıkan Özellikleri ve Avantajları
- Hafiflik: PHPixie'nin çekirdek sistemi oldukça minimaldir, yalnızca gerekli bileşenleri içerir ve hızlı başlatma ile çalıştırma imkanı sunar.
- Yüksek performans: Çerçeve, verimliliğe odaklanmıştır ve yoğun eşzamanlı istekleri etkin şekilde işler, yüksek performans gerektiren uygulamalar için uygundur.
- Kolay öğrenim: Temiz ve sade API ile kapsamlı dokümantasyon sunar, geliştiriciler çerçeveyi kısa sürede kavrayabilir.
- Esneklik: Zayıf bağlı yapı sayesinde projeye özel ihtiyaçlara göre bileşen ve üçüncü parti kütüphaneler kolayca entegre edilebilir.
- Aktif topluluk desteği: Canlı bir geliştirici topluluğu vardır; bolca üçüncü taraf eklenti ve destek kaynağı bulunur.
PHPixie, geliştiricilerin verimli ve yüksek kaliteli web uygulamaları oluşturmasına yardımcı olur; küçük projelerden büyük kurumsal işlere kadar çok sayıda senaryoda kullanılabilir.
ServBay Kullanarak PHPixie Projesi Oluşturma ve Çalıştırma
Bu yazıda, ServBay'in sağladığı yerel web geliştirme ortamında PHPixie projesi oluşturup çalıştırmayı adım adım öğreneceksiniz. ServBay ile sunulan tümleşik PHP ortamı, Composer bağımlılık yöneticisi ve "Web Sitesi" özelliğiyle web sunucusu konfigürasyonu yapacak ve hızlıca projeyi çalıştırıp veri tabanı/önbellek entegrasyonu sağlayacaksınız.
Ön Gereksinimler
- macOS üzerinde ServBay kurulmuş ve çalışıyor olmalı. ServBay; PHP, Composer, çeşitli veri tabanlarını (MySQL, PostgreSQL, MongoDB, Redis vb.) ve Caddy Web Sunucusu'nu bir arada sunar.
- Temel komut satırı kullanım bilgisi.
PHPixie Projesi Oluşturma
Önerilen Site Dizini
ServBay, yerel site projelerinizin /Applications/ServBay/www
dizininde saklanmasını önerir. Böylece yönetimi kolaylaşır ve ServBay'in erişim izinleri ile uyumlu çalışır.
- Composer'ın Kurulu Olduğundan Emin Olun: ServBay, Composer ile birlikte gelir; ek kurulum gerekmez. Terminalde
composer --version
yazarak kontrol edebilirsiniz. - Proje Dizini Oluşturun: ServBay'in önerdiği kök dizinde yeni bir klasör oluşturun ve içine geçin:bash
cd /Applications/ServBay/www mkdir servbay-phpixie-app cd servbay-phpixie-app
1
2
3 - Composer ile PHPixie Projesi Başlatın: Proje dizinindeyken, PHPixie proje şablonunu indirmek için şunu çalıştırın:bashComposer, PHPixie ve tüm bağımlılıklarını ilgili klasöre indirecek.
composer create-project phpixie/project .
1
Web Sunucusu Konfigürasyonu
ServBay'in "Web Sitesi" özelliği ile Caddy Web Sunucusu'nu projenize yönlendirmek ve çalıştırmak için ayarlayın.
ServBay uygulamasını açın.
Web Sitesi (Websites) listesini görüntüleyin.
Yeni bir web sitesi eklemek için tıklayın.
Site yapılandırmasını doldurun:
- Ad: Örneğin
My First PHPixie Dev Site
(ServBay panelinde kullanılır). - Alan Adı: Örneğin
servbay-phpixie-test.local
(tarayıcıdan erişilecek yerel geliştirme alanı). - Site Tipi:
PHP
seçin. - PHP Sürümü: İstediğiniz sürümü seçin, örn.
8.3
. - Site Kök Dizini (Document Root): Projenizin
web
dizinine yönlendirin:/Applications/ServBay/www/servbay-phpixie-app/web
.
Neden
/web
Dizini?PHPixie'nin giriş dosyası
web/index.php
konumundadır. Güvenlik ve iyi uygulamalar için web sunucusunun kök dizini doğrudan bu dosyanın bulunduğuweb
dizinine yönlendirilmelidir; aksi halde proje ana dizini üzerinden hassas dosyalara (ör. yapılandırma, vendor klasörü) erişim riski oluşur.- Ad: Örneğin
Ayarları kaydedin. ServBay, Caddy yapılandırmasını ve gerekirse hosts dosyanızı otomatik günceller; böylece
servbay-phpixie-test.local
alan adınız yerel ServBay sunucunuza yönlendirilir.
Ayrıntılı ayarlar için İlk Web Sitesini Ekleme rehberine bakabilirsiniz.
Örnek Kod Ekleme
Projeyi doğrulamak ve veri tabanı/önbellek entegrasyonunu göstermek için örnek kod ekleyeceğiz.
Örnek Kontrolcü Oluşturun:
src/App/HTTP/Controller/Home.php
dosyasına aşağıdaki kodu ekleyin. Klasör veya dosya yoksa manuel oluşturun.php<?php namespace App\HTTP\Controller; use PHPixie\HTTP\Request; use PHPixie\Template; use PHPixie\Database\Query; // Query sınıfını dahil edin class Home extends \PHPixie\Controller { protected $template; public function __construct(Template $template) { $this->template = $template; } // Varsayılan ana sayfa action public function action_index(Request $request) { // assets/templates/app/home.php şablonunu render et return $this->template->render('app:home'); } // Memcached örneği action public function action_memcached(Request $request) { $cache = $this->components->cache(); $cache->set('key', 'ServBay ile Memcached üzerinden Merhaba!', 60); // 60 saniye geçerli veri kaydet $value = $cache->get('key'); // Veriyi al return $this->response()->string($value); // Dize olarak yanıt döndür } // Redis örneği action public function action_redis(Request $request) { $redis = $this->components->redis(); $redis->set('key', 'ServBay ile Redis üzerinden Merhaba!'); // Veri kaydet $value = $redis->get('key'); // Veriyi al return $this->response()->string($value); // Dize olarak yanıt döndür } // MySQL/PostgreSQL ile kullanıcı ekleme action public function action_add_user(Request $request) { // Veritabanı sorgu oluşturucu ile işlem yap $query = $this->components->database()->query(); // 'users' tablosuna yeni kullanıcı ekle $query->insert('users')->data([ 'name' => 'ServBay Demo Kullanıcı', 'email' => 'demo-' . uniqid() . '@servbay.test', // Benzersiz e-posta kullan ])->execute(); // İşlemi çalıştır return $this->response()->string('Kullanıcı başarıyla eklendi.'); // Başarı mesajı döndür } // MySQL/PostgreSQL ile kullanıcı listeleme action public function action_list_users(Request $request) { // Veritabanı sorgu oluşturucu ile işlem yap $query = $this->components->database()->query(); // 'users' tablosundaki tüm kullanıcıları al $users = $query->select('*')->from('users')->execute()->fetchAll(); // Sonuçları al return $this->response()->json($users); // Kullanıcı listesini JSON olarak döndür } }
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Örnek Şablon Oluşturun:
assets/templates/app/home.php
dosyasına aşağıdaki kodu ekleyin. Klasör veya dosya yoksa oluşturun.php<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>ServBay'de PHPixie'ye Hoşgeldiniz</title> <style> body { font-family: sans-serif; line-height: 1.6; margin: 20px; } h1 { color: #333; } p { margin-bottom: 15px; } code { background-color: #f4f4f4; padding: 2px 5px; border-radius: 4px; } ul { list-style: none; padding: 0; } li { margin-bottom: 10px; } li a { text-decoration: none; color: #007bff; } li a:hover { text-decoration: underline; } </style> </head> <body> <h1>ServBay'de PHPixie'ye Hoşgeldiniz</h1> <p>Bu sayfa, ServBay üzerinde çalışan PHPixie uygulamanız tarafından dinamik olarak oluşturulmaktadır.</p> <h2>Örnek İşlev Bağlantıları:</h2> <ul> <li><a href="/home/memcached">Memcached'i Test Et</a></li> <li><a href="/home/redis">Redis'i Test Et</a></li> <li><a href="/home/add_user">Veritabanına Kullanıcı Ekle</a></li> <li><a href="/home/list_users">Veritabanındaki Kullanıcıları Listele</a></li> </ul> <p>İlgili veri tabanı ve önbellek yapılandırma adımlarını tamamladığınızdan emin olun.</p> </body> </html>
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
Temel Siteyi Ziyaret Etme
ServBay üzerinden site ayarlarını tamamladıktan ve örnek kodu ekledikten sonra, oluşturduğunuz alan adından tarayıcı ile projeyi görüntüleyebilirsiniz:
- Tarayıcıda
https://servbay-phpixie-test.local
adresine gidin. - "ServBay'de PHPixie'ye Hoşgeldiniz" mesajını ve örnek işlev bağlantılarını görmelisiniz.
Erişemiyorsanız şu noktaları kontrol edin:
- ServBay çalışıyor mu?
- Sitenin ServBay içindeki ayarları (alan adı, site tipi, kök dizin) doğru mu?
- Yerel hosts dosyanızda
servbay-phpixie-test.local
doğru şekilde atanmış mı? (ServBay bunu otomatik halleder.) - ServBay'de seçtiğiniz PHP sürümü etkin mi?
Veri Tabanı ve Önbellek Entegrasyonu Örneği
PHPixie, birden fazla veri tabanı ve önbellek sistemine dahili destek sunar. ServBay; MySQL, PostgreSQL, Redis, Memcached gibi paketlerle bunları kolayca projenize eklemenizi sağlar.
Önemli: Veri tabanı işlemleri öncesinde, ServBay üzerinden ilgili veri tabanı servisini (ör. MySQL veya PostgreSQL) başlattığınızdan ve projeye özel bir veri tabanı oluşturduğunuzdan emin olun. Örneğin, bu rehberde kullanılan veri tabanı ismi servbay_phpixie_app
'tir. ServBay'in sunduğu veri tabanı yönetim araçları (Sequel Ace, Postico, TablePlus vb.) veya terminal istemcisini kullanabilirsiniz. ServBay'in varsayılan veri tabanı kullanıcısı genellikle root
ve şifresi password
'dür (kendi ayarlarınıza göre kontrol edin).
Veri Tabanı Bağlantısı Yapılandırması
Kullandığınız veri tabanı türüne göre (MySQL
veya PostgreSQL
), projenin kök dizinindeki assets/config/database.php
dosyasını düzenleyin. ServBay'de genellikle veri tabanı adresi 127.0.0.1
olur.
MySQL için örnek yapılandırma (assets/config/database.php
):
php
<?php
return [
'default' => [
'driver' => 'pdo',
// connection dizesi veri tabanı türü ve ServBay ayarlarınıza göre düzenlenir
'connection' => 'mysql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // ServBay varsayılan kullanıcı
'password' => 'password', // ServBay varsayılan şifre (kendi ayarınıza göre değiştirin)
'options' => []
]
];
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
PostgreSQL için örnek yapılandırma (assets/config/database.php
):
php
<?php
return [
'default' => [
'driver' => 'pdo',
// connection dizesi veri tabanı türü ve ServBay ayarlarınıza göre düzenlenir
'connection' => 'pgsql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // ServBay varsayılan kullanıcı
'password' => 'password', // ServBay varsayılan şifre (kendi ayarınıza göre değiştirin)
'options' => []
]
];
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Veri Tabanı Tablosu Oluşturma (Migration ile)
PHPixie, veri tabanı yapısını sürümlemek için migration (göç) sisteminin yönetimini kolaylaştıran komut satırı aracı sunar.
- Terminali açın: Proje kök dizinine geçin:bash
cd /Applications/ServBay/www/servbay-phpixie-app
1 - Migration dosyası oluşturun: PHPixie CLI aracı ile yeni bir migration dosyası oluşturun.
users
tablosu eklemek için:bashBu komut,php pixie generate:migration create_users_table
1assets/migrations
dizininde zaman damgası içeren bir migration dosyası oluşturur. - Migration dosyasını düzenleyin:
assets/migrations
klasöründe oluşan yeni migration dosyasını (örn:YYYY_MM_DD_HHMMSS_create_users_table.php
) açıpup()
vedown()
metodlarını aşağıdaki gibi tanımlayın:php<?php use PHPixie\Database\Migration; use PHPixie\Database\Schema\Table; class CreateUsersTable extends Migration { public function up() { // Schema builder ile 'users' tablosu oluştur $this->schema->create('users', function(Table $table) { $table->increments('id'); // Otomatik artan anahtar $table->string('name'); // İsim sütunu $table->string('email')->unique(); // Email sütunu, benzersiz $table->timestamps(); // created_at ve updated_at zaman damgaları }); } public function down() { // Schema builder ile 'users' tablosunu sil $this->schema->drop('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 - Migration'ı çalıştırın: Proje kök dizininde terminalden şu komutu çalıştırarak
users
tablosunu oluşturun:bashHer şey doğruysa terminalde işlem başarı mesajı görürsünüz. Dilerseniz veri tabanı yönetim aracınızdaphp pixie migrate
1servbay_phpixie_app
veri tabanındausers
tablosunu doğrulayabilirsiniz.
İlişkisel Veri Tabanı Kullanımı (MySQL/PostgreSQL)
Yukarıdaki örnek kontrolcü (src/App/HTTP/Controller/Home.php
) dosyasında, MySQL veya PostgreSQL ile etkileşim için action_add_user
ve action_list_users
metodları yer almaktadır.
- Kullanıcı ekleme:
https://servbay-phpixie-test.local/home/add_user
adresini ziyaret ettiğinizdeusers
tablosuna yeni bir kullanıcı kaydı eklenir. - Kullanıcıları listeleme:
https://servbay-phpixie-test.local/home/list_users
ile tüm kullanıcılar JSON formatında görüntülenir.
NoSQL Veri Tabanı (Memcached/Redis) Yapılandırma ve Kullanımı
ServBay ile Memcached ve Redis paketlerinin yanı sıra ilgili PHP eklentileri yüklü gelir. Proje yapılandırması ile kolayca kullanabilirsiniz.
Memcached ayarları (assets/config/cache.php
):
assets/config/cache.php
dosyasını oluşturup şu ayarları ekleyin:
php
<?php
return [
'default' => [
'driver' => 'memcached',
'servers' => [
[
'host' => '127.0.0.1', // ServBay Memcached varsayılan adresi
'port' => 11211, // ServBay Memcached varsayılan portu
'weight' => 100,
],
],
],
];
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
Redis ayarları (assets/config/redis.php
):
assets/config/redis.php
dosyasını oluşturup şu ayarları ekleyin:
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // ServBay Redis varsayılan adresi
'port' => 6379, // ServBay Redis varsayılan portu
'timeout' => 0,
'database' => 0, // Redis veri tabanı indeksi
],
];
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Memcached/Redis kullanımı:
Yukarıdaki kontrolcüdeki action_memcached
ve action_redis
metodları ile PHPixie üzerinde Memcached veya Redis entegrasyonunu test edebilirsiniz.
- Memcached testi:
https://servbay-phpixie-test.local/home/memcached
adresini ziyaret ederek bir anahtar kaydedip okursunuz. - Redis testi:
https://servbay-phpixie-test.local/home/redis
adresini ziyaret ederek bir anahtar kaydedip okursunuz.
ServBay'de ilgili paketlerin (Memcached ve Redis) çalışır durumda olduğundan emin olun.
Sonuç
Bu rehberde, ServBay ile macOS üzerinde PHPixie projesi oluşturup çalıştırmayı, Composer ile proje başlatmayı, ServBay Web Sitesi özelliğiyle sunucu ayarlarını yapıp, veri tabanı ve önbellek entegrasyonunu test etmeyi adım adım öğrendiniz.
ServBay'in sağladığı entegre ortam sayesinde PHP geliştirme süreci oldukça kolaylaşır ve kod yazmaya daha çok odaklanabilirsiniz. Umarız bu rehber, PHPixie ile yeni web projelerinize hızlı bir başlangıç yapmanız için faydalı olmuştur!