Phalcon Projesi Oluşturma ve Çalıştırma
Phalcon Nedir?
Phalcon, C eklentisi olarak geliştirilmiş açık kaynaklı, yüksek performanslı bir PHP web framework’üdür. Bu benzersiz geliştirme yöntemi, Phalcon’un kaynak tüketimini minimuma indirirken, son derece hızlı çalışmasını sağlar – böylece çoğu geleneksel PHP framework’üne kıyasla çok daha üstündür. Phalcon, MVC (Model-View-Controller) mimarisini takip eder ve geliştiricilere ORM (Nesne-İlişkilendirme Modellemesi), şablon motoru, yönlendirme, önbellekleme, olay yöneticisi gibi zengin fonksiyonel bileşenler sunar. Bu bileşenler, hızlı ve güçlü web uygulamaları ile API’ler geliştirmenize yardımcı olmak amacıyla tasarlanmıştır.
Phalcon’un Temel Özellikleri ve Avantajları
- Üstün Performans: C eklentisi olarak çalıştığı için, Phalcon PHP betiklerinin ayrıştırılması ve yüklenmesi sırasında oluşan ek yükü ortadan kaldırır, böylece yerel (native) düzeyde performans elde edilir.
- Kaynak Verimliliği: Bellek kullanımı çok düşüktür ve bu nedenle performans ve ölçeklenebilirlik talepleri yüksek olan projeler için idealdir.
- Kapsamlı Fonksiyonalite: Web uygulama geliştirmek için gereken çekirdek bileşenlerin çoğunu doğrudan dahil eder, böylece üçüncü parti paketlere olan bağımlılık azalır.
- Kullanım Kolaylığı: Açık, tutarlı API ve kapsamlı belgeler sayesinde, Phalcon’a yeni olanlar dahi hızlıca ustalaşabilir.
- Yüksek Ayrışma (Decoupling): Bileşenler bağımsız şekilde tasarlanmıştır; proje ihtiyaçlarınıza göre istediğiniz modülleri kullanabilir veya değiştirebilirsiniz.
- Güvenlik: Girdi filtreleme veya CSRF koruması gibi güvenlikle ilgili birçok bileşen sunar.
Phalcon; yüksek performans, esneklik ve kaynak verimliliği gerektiren projeler için, modern web uygulamaları ve API’ler geliştirmek adına ideal bir seçenektir.
ServBay ile Phalcon Projesi Oluşturma ve Çalıştırma
ServBay, macOS için geliştirilmiş bir yerel web geliştirme ortamıdır. Birden çok sürümde PHP, çeşitli veritabanları (MySQL, PostgreSQL, MongoDB, Redis) ve web sunucularını (Caddy, Nginx, Apache) yanında diğer araçları da entegre olarak sunar. ServBay sayesinde; Phalcon projeniz için gereken çalışma ortamını kolayca kurup yönetebilirsiniz.
Bu rehber; ServBay’in PHP ortamını kullanarak temel bir Phalcon projesinin nasıl oluşturulacağını, web sunucusunun nasıl yapılandırılacağını ve ilişkisel (MySQL) ile NoSQL (Redis) veritabanlarının nasıl entegre edileceğini adım adım göstermektedir.
Önkoşullar
Başlamadan önce aşağıdaki gereksinimleri karşıladığınızdan emin olun:
- ServBay Yüklü ve Çalışıyor: macOS sisteminizde ServBay’in kurulu ve başlatılmış olması gerekir.
- Gerekli PHP Sürümü Aktif: Kullanmak istediğiniz PHP sürümünün ServBay içinden etkinleştirildiğinden emin olun.
- Phalcon Modülü Aktif: ServBay, Phalcon modülünü dahili olarak sunar fakat varsayılan olarak etkin olmayabilir. İlgili PHP sürümünüzde Phalcon eklentisini aktifleştirip PHP servisinin yeniden başlatılması için ServBay’e Dahili Phalcon Modülünü Nasıl Aktif Edebilirim dokümantasyonunu takip edin.
- Composer Hazır: ServBay, Composer’ı dahili olarak içerir; ayrıca kurmanıza gerek yoktur. Terminalde
composer
komutunu doğrudan kullanabiliyor olmanız gerekir.
Farklı Phalcon ve DevTools Sürümleri
Kullandığınız PHP sürümüyle uyumlu olacak şekilde Phalcon framework ve ona ait geliştirme araçları (Phalcon DevTools) sürümlerini seçmeniz gerekir. Aşağıda, yaygın PHP sürümlerine uygun önerilen Phalcon ve DevTools sürümlerinin bir tablosu yer almaktadır:
PHP Sürümü | Önerilen Phalcon Sürümü | Önerilen Phalcon DevTools Sürümü | Dikkat Edilecekler |
---|---|---|---|
PHP 5.6, 7.0, 7.1 | Phalcon 3.4.5 | 3.4.x | |
PHP 7.2, 7.3, 7.4 | Phalcon 4.1.2 | ~4.1 (veya 4.3.x ) | |
PHP 8.0, 8.1, 8.2 | Phalcon 5.x | 5.0.x (resmi) | Resmi DevTools, PHP 8.x üzerinde uyumsuzluk gösterebilir. |
PHP 8.3, 8.4 | Phalcon 5.x | dev-master (düzeltilmiş depo kullanılır) | Daha iyi uyumluluk için topluluk tarafından düzeltilmiş sürümü önerilir. |
Önemli Not: PHP 8.x ve üstü için, resmi Phalcon DevTools yeterince uyumlu olmayabilir. Topluluk tarafından sağlanan, düzeltilmiş sürümü kullanmanız tavsiye edilir. Proje oluşturma adımlarında, Composer ile bu düzeltmeli sürümü kurmanın yöntemi ayrıca gösterilecektir.
Phalcon Projesi Oluşturma
Önerilen Web Sitesi Dizini
Yönetimi kolaylaştırmak için, ServBay, tüm web projelerinizi varsayılan web sitesi kök dizini olan /Applications/ServBay/www
içinde saklamanızı önerir. Bu örnekte de proje bu dizin altında oluşturulacaktır.
Web Kök Dizini’ne Girin ve Proje Klasörü Oluşturun
Terminali açıp ServBay’in web kök dizinine gidin, ardından Phalcon projeniz için yeni bir klasör oluşturun (örneğin
servbay-phalcon-app
):bashcd /Applications/ServBay/www mkdir servbay-phalcon-app cd servbay-phalcon-app
1
2
3Phalcon DevTools’u Kurun
Phalcon DevTools, komut satırı araç setidir; geliştiricilere kod oluşturma, proje iskeleti oluşturma ve veritabanı göç yönetimi gibi işlemlerde yardımcı olur. Kurulumu Composer ile yapıyoruz. Kullandığınız PHP sürümüne göre kurulum komutu değişir:
PHP 5.6, 7.0, 7.1 (Phalcon DevTools
^3.4
) için:bashcomposer require phalcon/devtools:"^3.4"
1PHP 7.2, 7.3, 7.4 (Phalcon DevTools
~4.1
) için:bashcomposer require phalcon/devtools:"~4.1"
1PHP 8.0, 8.1, 8.2, 8.3, 8.4 (
dev-master
düzeltilmiş sürüm için): Resmi DevTools, PHP 8.x için uyumsuz olabileceği için topluluk tarafından düzeltilmiş sürümü Composer ile kuracağız. Öncelikle proje kök dizini (/Applications/ServBay/www/servbay-phalcon-app
) altında bircomposer.json
dosyası oluşturup veya güncelleyip, aşağıdaki şekilde düzeltilmiş depo bilgisini ekleyin:json{ "repositories": [ { "url": "https://github.com/daleffe/phalcon-devtools-5.x-fixed.git", "type": "git" } ], "require": { "phalcon/devtools": "dev-master" }, "minimum-stability": "dev", "prefer-stable": true }
1
2
3
4
5
6
7
8
9
10
11
12
13Ardından Composer güncelleme komutunu çalıştırın:
bashcomposer update
1
Composer, proje kök dizini (
servbay-phalcon-app
) altında birvendor
dizini ve DevTools çalıştırılabilirinivendor/bin/phalcon
olarak oluşturacaktır.Phalcon DevTools ile Proje İskeleti Oluşturun
Şimdi, yeni yüklediğimiz DevTools ile Phalcon projesinin temel dosya yapısını oluşturacağız. Projenin gerçek kodunu bir alt dizine (örneğin yine
servbay-phalcon-app
) oluşturacağız; bu DevTools’un varsayılan davranışıdır:bashvendor/bin/phalcon project servbay-phalcon-app
1Bu komut,
/Applications/ServBay/www/servbay-phalcon-app
altında/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app
adında yeni bir alt dizin ve içinde tam teşekküllü bir Phalcon proje iskeleti oluşturur.Proje Kodu Dizini’ne Girin
Oluşturulan proje kodu dizinine geçin, bundan sonraki tüm işlemler bu dizinde yürütülecek:
bashcd servbay-phalcon-app
1Artık
/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app
dizinindesiniz.
Proje Ortamını Yapılandırın
Phalcon projelerinde yapılandırmalar genellikle app/config/config.php
dosyasında toplanır. Veritabanı bağlantı bilgileri ve uygulama yolları gibi temel ayarları burada yaparsınız.
Yapılandırma Dosyasını Düzenleyin
İstediğiniz bir editörle
/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app/app/config/config.php
dosyasını açın. Veritabanı yapılandırma kısmını bulun veya ekleyin. ServBay’in MySQL/MariaDB için varsayılan kullanıcı adıroot
, şifresi ise boştur; fakat güvenlik için şifrenizi mutlaka belirlemeniz önerilir. Aşağıdaki örnektepassword
bir yer tutucudur; kendi şifrenizle değiştirin.servbay_phalcon_app
ise bu proje için oluşturduğumuz örnek veritabanı adıdır (bu veritabanını el ile oluşturmanız gerekir).phpreturn new \Phalcon\Config([ // ... diğer ayarlar ... 'database' => [ 'adapter' => 'Mysql', // veya 'Postgres' vb. 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', // <-- Lütfen veritabanı şifrenizi girin 'dbname' => 'servbay_phalcon_app', // <-- Lütfen veritabanı adınızı girin ], // ... diğer ayarlar ... ]);
1
2
3
4
5
6
7
8
9
10
11Önemli: Kullanacağınız veritabanı servisini (ör. MySQL veya MariaDB) ServBay içinde başlatmış olmanız, kullanıcı adı ve şifrenizin bu yapılandırmayla eşleşmesi gerekir.
servbay_phalcon_app
veritabanını manuel olarak oluşturmanız da gerekir. ServBay’in sunduğu phpMyAdmin veya Adminer gibi araçlarla veritabanı ve kullanıcı oluşturabilirsiniz.
Web Sunucusu Yapılandırması (ServBay Websitesi Özelliğiyle)
Phalcon projenize web tarayıcısı üzerinden erişebilmek için, ServBay’in Websitesi bölümünden yeni bir sanal sunucu tanımlayıp, web’e açılacak klasörü belirtmeniz gerekir.
- ServBay Uygulamasını Açın
- ‘Websitesi’ Ayarlarına Girin: ServBay ana ekranında ‘Websitesi’ seçeneğine tıklayın.
- Yeni Web Sitesi Ekleyin: Yeni site ekleme düğmesine tıklayın.
- İsim: Kolay tanıyacağınız bir ad örneğin
My First Phalcon Dev Site
. - Alan Adı: Tarayıcıda erişmek isteyeceğiniz alan adını girin, örneğin
servbay-phalcon-test.local
. ServBay,.local
uzantılı domainleri otomatik olarak yerel sisteme yönlendirir. - Web Sitesi Türü:
PHP
seçin. - PHP Sürümü: Projenizde Phalcon modülünü aktif ettiğiniz PHP sürümünü seçin.
- Web Sitesi Kök Dizin: Burası kritik. Phalcon projelerinde giriş noktası olan
index.php
genelliklepublic
klasöründe yer alır. Bu yüzden web kök dizinini şu dizine ayarlayın:/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app/public
- İsim: Kolay tanıyacağınız bir ad örneğin
- Ayarları Kaydedin: Yeni web sitesi konfigürasyonunu kaydedin. ServBay, değişiklikleri otomatik olarak uygular ve gerekirse web sunucularını (Caddy veya Nginx) yeniden başlatır.
Detaylı adımlar için İlk Web Sitenizi Ekleme başlığına danışabilirsiniz. Kurulumdan sonra, alan adının yerel olarak çözülmesi ve gerekli web sunucusu konfigürasyonları ServBay tarafından otomatik olarak yapılır.
Örnek Kod Ekleyin
Şimdi, projenizin düzgün çalışıp çalışmadığını test etmek için basit bir kod ekleyelim.
Yönlendirme (Router) Tanımlayın
/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app/app/config/routes.php
dosyasını açıp, ana yol/
taleplerini karşılayacak bir yönlendirme kuralı ekleyin:php<?php use Phalcon\Mvc\Router; $router = new Router(false); // Ana yolu '/' IndexController - indexAction'a yönlendir $router->add( '/', [ 'controller' => 'index', 'action' => 'index', ] ); // ... Diğer yönlendirmeler eklenebilir ... $router->handle($_SERVER['REQUEST_URI']); return $router;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19Controller Oluşturun
/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app/app/controllers/IndexController.php
dosyasını açın (veya yoksa oluşturun); içine aşağıdaki gibi birindexAction
metodu ekleyin:php<?php namespace App\Controllers; // Namespace'in doğru olduğundan emin olun use Phalcon\Mvc\Controller; class IndexController extends Controller { // Ana yol '/' taleplerini karşıla public function indexAction() { // Yanıt olarak basit bir yazı döndür return 'Hello ServBay!'; } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Web Sitenizi Ziyaret Edin
Tüm dosyalarınızı kaydettikten sonra ServBay’in açık ve aktif olduğuna emin olun. Tarayıcınızı açıp, ServBay’de yapılandırdığınız alan adını ziyaret edin:
https://servbay-phalcon-test.local
Her şey doğru ayarlanmışsa tarayıcıda Hello ServBay!
mesajı görünecektir.
Veritabanı Entegrasyonu
Phalcon güçlü bir veritabanı soyutlama katmanı ve ORM sunar. ServBay, birçok veritabanıyla entegredir; Phalcon projenizde bunları kolayca kullanabilirsiniz. Aşağıda MySQL ve Redis entegrasyonu örneklerini bulacaksınız.
İlişkisel Veritabanı Örneği: MySQL
Phalcon’un veritabanı adaptörüyle ServBay’in MySQL servisinde nasıl bağlantı kurulacağını ve temel ekleme/sorgulama işlemlerinin nasıl yapılacağını görelim.
Veritabanı Yapısını Oluşturun (Migration ile)
Phalcon DevTools, veritabanı migration (göç) desteği sunar; bu da şemayı sürümleyerek yönetmek için yaygın bir yöntemdir.
Migration Dosyası Oluşturun: Proje kodu dizininde (
/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app
) aşağıdaki komutla boş bir migration dosyası oluşturun:bashvendor/bin/phalcon migration generate
1Bu,
migrations
klasöründe, ismiYYYYMMDDHHMMSS_MigrationName.php
formatında bir dosya oluşturur.Migration Dosyasını Düzenleyin: Oluşan migration dosyasını açıp, aşağıdaki
morph
fonksiyonunu kullanarak örnek birusers
tablo yapısı tanımlayın:php<?php use Phalcon\Db\Column; use Phalcon\Db\Index; use Phalcon\Migrations\Mvc\Model\Migration; /** * Class UsersMigration_100 */ class UsersMigration_100 extends Migration // Dosya adındaki sınıf ismiyle uyumlu olmalı { /** * Migration işlemini çalıştır * * @return void */ public function morph() { $this->morphTable('users', [ 'columns' => [ new Column( 'id', [ 'type' => Column::TYPE_INTEGER, 'autoIncrement' => true, 'notNull' => true, 'primary' => true, ] ), new Column( 'name', [ 'type' => Column::TYPE_VARCHAR, 'size' => 255, 'notNull' => true, ] ), new Column( 'email', [ 'type' => Column::TYPE_VARCHAR, 'size' => 255, 'notNull' => true, 'unique' => true, ] ), ], 'indexes' => [ new Index('PRIMARY', ['id'], 'PRIMARY'), new Index('email_UNIQUE', ['email'], 'UNIQUE'), ], 'options' => [ 'TABLE_ENGINE' => 'InnoDB', 'CHARACTER SET' => 'utf8mb4', 'COLLATE' => 'utf8mb4_unicode_ci', ], ]); } /** * Migration’ı geri al * * @return void */ public function down() { // Opsiyonel: Geri alma mantığı, ör. tabloyu silme // $this->getConnection()->dropTable('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
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
70Dikkat: Sınıf adının (
UsersMigration_100
) migration dosya adınızla eşleştiğinden emin olun.Migration Çalıştırın: Proje kodu dizininde aşağıdaki komut ile migration’ı çalıştırın; bu, veritabanında
users
tablosunu oluşturur:bashvendor/bin/phalcon migration run
1Bağlantı hatası alırsanız,
app/config/config.php
dosyasındaki veritabanı ayarları ve ServBay’de MySQL/MariaDB servisinin açık olup olmadığını kontrol edin.
Veritabanı Bağlantısını Ayarlayın (Önceden Yapıldı)
app/config/config.php
’de'database'
bölümü ayarlarınız, ServBay’deki MySQL/MariaDB hizmetine (varsayılanhost
127.0.0.1, port 3306, kullanıcıroot
, şifre kendi ayarınıza göre) doğru şekilde ayarlandığından emin olun.Örnek Router Ekleyin
app/config/routes.php
dosyasını açın; kullanıcı ekleme ve sorgulama işlemleri için yeni yönlendirmeleri ekleyin:php<?php use Phalcon\Mvc\Router; $router = new Router(false); $router->add('/', [ 'controller' => 'index', 'action' => 'index', ]); // Kullanıcı ekleme için router $router->add( '/mysql-add', [ 'controller' => 'index', 'action' => 'mysqlAdd', ] ); // Kullanıcı sorgulama için router $router->add( '/mysql', [ 'controller' => 'index', 'action' => 'mysql', ] ); $router->handle($_SERVER['REQUEST_URI']); return $router;
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
31Controller’da Veritabanı İşlemlerini Gerçekleştirin
app/controllers/IndexController.php
dosyasını açıp, aşağıdakileri ekleyin – Phalcon’un veritabanı bağlantısını doğrudan kullanıyoruz:php<?php namespace App\Controllers; use Phalcon\Mvc\Controller; use Phalcon\Db\Adapter\Pdo\Mysql; // MySQL veritabanı adaptörü use Phalcon\Db\Enum; // fetchAll için mod sabitleri class IndexController extends Controller { public function indexAction() { return 'Hello ServBay!'; } // Kullanıcı ekleme örneği public function mysqlAddAction() { // Servis konteynerinden bağlantı alabilir, // ya da burada elle bağlantı oluşturabilirsiniz (gerçek uygulama için önerilmez) $connection = new Mysql([ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', // <-- Veritabanı şifrenizle değiştirin 'dbname' => 'servbay_phalcon_app', 'charset' => 'utf8mb4', ]); // Örnek kullanıcı ekle $success = $connection->insert( 'users', ['ServBay Demo User', '[email protected]'], ['name', 'email'] ); // Sonuç çıktısı echo $success ? 'User added successfully.' : 'Failed to add user.'; } // Kullanıcı sorgulama örneği public function mysqlAction() { $connection = new Mysql([ 'host' => '127.0.0.1', 'username' => 'root', 'password' => 'password', // <-- Veritabanı şifrenizle değiştirin 'dbname' => 'servbay_phalcon_app', 'charset' => 'utf8mb4', ]); // Tüm kullanıcıları getir $users = $connection->fetchAll('SELECT * FROM users', Enum::FETCH_ASSOC); // Sonucu JSON olarak döndür header('Content-Type: application/json'); echo 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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57Dikkat: Gerçek projede veritabanı bağlantısını servis konteynerine tanımlayıp controller’a bağımlılık olarak vermek en iyi uygulamadır; her action’da tekrar tekrar bağlantı oluşturmak iyi bir pratik değildir.
Örnekleri Deneyin
- Tarayıcıda
https://servbay-phalcon-test.local/mysql-add
adresini açın. Başarılıysa “User added successfully.” mesajı göreceksiniz. - Ardından
https://servbay-phalcon-test.local/mysql
adresine gidin. JSON formatında kullanıcı listesini içeren bir çıktı göreceksiniz.
- Tarayıcıda
NoSQL Veritabanı Örneği: Redis
Şimdi de, ServBay’deki Redis servisini önbellekleme için Phalcon içinde nasıl kullanabileceğimize bakalım.
Redis Eklentisinin Kurulu Olduğundan Emin Olun
ServBay’in PHP paketlerinde genellikle Redis eklentisi dahili olarak gelir.
pecl
veya elle derleyerek kurmanıza gerek yoktur; sadece kullandığınız PHP sürümünde Redis eklentisinin işaretli ve etkin olduğuna emin olun.Redis Bağlantısını Yapılandırın
app/config/config.php
dosyanızda Redis bağlantı detaylarını ekleyin. ServBay’in Redis servisi, varsayılan olarak127.0.0.1
, port6379
üzerinde çalışır.phpreturn new \Phalcon\Config([ // ... diğer ayarlar ... 'cache' => [ 'adapter' => 'Redis', 'host' => '127.0.0.1', 'port' => 6379, 'index' => 0, // Varsayılan Redis veritabanı 'persistent' => false, 'auth' => null, // Redis’e şifre verdiyseniz buraya yazın ], // ... diğer ayarlar ... ]);
1
2
3
4
5
6
7
8
9
10
11
12Örnek Router Ekleyin
app/config/routes.php
dosyasını açın; Redis önbellek örneği için yeni bir yönlendirme ekleyin:php<?php use Phalcon\Mvc\Router; $router = new Router(false); $router->add('/', [ 'controller' => 'index', 'action' => 'index', ]); $router->add('/mysql-add', [ 'controller' => 'index', 'action' => 'mysqlAdd', ]); $router->add('/mysql', [ 'controller' => 'index', 'action' => 'mysql', ]); // Redis cache için örnek yönlendirme $router->add( '/redis', [ 'controller' => 'index', 'action' => 'redis', ] ); $router->handle($_SERVER['REQUEST_URI']); return $router;
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
32Controller’da Redis Ön Bellek Kullanın
app/controllers/IndexController.php
dosyasını açın; Redis önbellekleme için birredisAction
metodu ekleyin:php<?php namespace App\Controllers; use Phalcon\Mvc\Controller; use Phalcon\Db\Adapter\Pdo\Mysql; use Phalcon\Db\Enum; use Phalcon\Cache\Adapter\Redis; // Redis adaptörü use Phalcon\Storage\SerializerFactory; // Serializer class IndexController extends Controller { public function indexAction() { return 'Hello ServBay!'; } public function mysqlAddAction() { $connection = new Mysql([/* ... */]); $success = $connection->insert(/* ... */); echo $success ? 'User added successfully.' : 'Failed to add user.'; } public function mysqlAction() { $connection = new Mysql([/* ... */]); $users = $connection->fetchAll('SELECT * FROM users', Enum::FETCH_ASSOC); header('Content-Type: application/json'); echo json_encode($users); } // Redis önbellek örneği public function redisAction() { // SerializerFactory örneği oluşturun $serializerFactory = new SerializerFactory(); // Redis önbellek ayarları – config.php’dekiyle uyumlu olmalı $options = [ 'defaultSerializer' => 'Json', 'lifetime' => 3600, // Önbellek süresi (saniye) 'host' => '127.0.0.1', 'port' => 6379, 'index' => 0, // 'auth' => 'redis_şifreniz', // Varsayılan yok ]; // Redis adaptörü nesnesi oluştur $cache = new Redis($serializerFactory, $options); $cacheKey = 'my_servbay_redis_cache_key'; $cachedData = $cache->get($cacheKey); // Önbellekten oku if ($cachedData === null) { // Önbellekte veri yoksa echo "Data not found in cache, fetching from source..."; $cachedData = 'Data fetched from source: Hello Redis from ServBay!'; $cache->set($cacheKey, $cachedData); echo "Data stored in cache."; } else { // Önbellekte veri varsa echo "Data found in cache: "; } // Veriyi döndür return $cachedData; } }
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
68Dikkat: Gerçek uygulamalarda, cache servisini de DI konteynerde tanımlamanız ve uygulama genelinde bu şekilde erişmeniz önerilir.
Örneği Deneyin
Tarayıcıda
https://servbay-phalcon-test.local/redis
adresini ziyaret edin.- İlk ziyarette “Data not found in cache, fetching from source...Data stored in cache.” ve “Data fetched from source: Hello Redis from ServBay!” çıktısı göreceksiniz.
- Aynı adrese tekrar gittiğinizde, önbellek süresi bitmeden “Data found in cache: ” ve “Data fetched from source: Hello Redis from ServBay!” mesajlarını göreceksiniz; veri Redis’ten okunmuş olur.
Sıkça Sorulan Sorular (SSS)
- S: Siteye girerken 404 Not Found hatası alıyorum, ne yapmalıyım?
- C: ServBay’deki web sitesi ayarlarında, “Web Sitesi Kök Dizin” olarak gerçekten projenizin
public
dizini (/Applications/ServBay/www/servbay-phalcon-app/servbay-phalcon-app/public
) seçili mi kontrol edin. Web sunucularının (Caddy/Nginx) açık ve alan adının doğru yönlendirildiğinden emin olun.
- C: ServBay’deki web sitesi ayarlarında, “Web Sitesi Kök Dizin” olarak gerçekten projenizin
- S: Phalcon modülü bulunamadı (Class 'Phalcon\Mvc\Application' not found vs.)
- C: Genellikle bu hata; kullandığınız PHP sürümünde Phalcon eklentisi etkin olmadığı anlamına gelir. ServBay arayüzüne dönüp, kullandığınız PHP sürümünde Phalcon’un aktif olduğundan ve PHP servisinin yeniden başlatıldığından emin olun. Ayrıntılar için ServBay’e Dahili Phalcon Modülünü Nasıl Aktif Edebilirim dokümanına bakın.
- S: Veritabanı bağlantısı başarısız oldu, neden?
- C:
app/config/config.php
’deki bağlantı ayarlarını (host, kullanıcı adı, şifre, veri tabanı adı) doğru yaptığınızdan ve ServBay’de ilgili veritabanı servisinin çalışır durumda olduğundan emin olun. Veritabanı kullanıcısının gerekli yetkilere sahip olması ve veritabanının oluşturulmuş olması gerekir.
- C:
Özet
ServBay ile, Phalcon framework için yüksek performanslı yerel geliştirme ortamını hızlıca kurabilirsiniz. Bu rehberde; proje iskeleti oluşturmadan web sunucusu kurulumuna, MySQL ve Redis entegrasyonuna kadar temel akış detaylıca anlatıldı. ServBay’in entegre yazılım paketleri ve pratik yönetim arayüzü, yerel geliştirme ortamının kurulumunu ve bakımını son derece kolaylaştırır – böylece siz de Phalcon üzerinde uygulamanıza odaklanabilirsiniz. Umarız bu rehber, ServBay ve Phalcon ile modern web geliştirme yolculuğunuza verimli bir başlangıç yapmanızı sağlar!