ServBay'de Zend Framework (Laminas) Projesi Oluşturma ve Çalıştırma
Genel Bakış
Zend Framework (günümüzde Laminas Project'in bir parçası), modern web uygulamaları ve servisler inşa etmek için yüksek kaliteli, nesne yönelimli bileşenler sunan güçlü bir açık kaynaklı PHP çerçevesidir. Esnekliği, modüler yapısı ve yüksek performansı ile tanınır; basit sitelerden büyük kurumsal uygulamalara kadar farklı ölçeklerde projelerde idealdir.
ServBay, macOS ve Windows için geliştirilen bir yerel web geliştirme ortamıdır. PHP, farklı web sunucuları (Caddy, Nginx gibi), veritabanları (MySQL, PostgreSQL, MongoDB), önbellek servisleri (Redis, Memcached) ve diğer geliştirme araçlarıyla birlikte gelir. ServBay, bu paketlerin kurulum ve yönetimini kolaylaştırarak çeşitli PHP çerçevelerinde projeleri yerel olarak başlatmak ve çalıştırmak için pratik bir çözüm sunar.
Bu doküman, ServBay ortamında Zend Framework (Laminas) projesinin nasıl oluşturulacağı, konfigüre edileceği ve çalıştırılacağını, ayrıca ServBay’in sunduğu veritabanı ve önbellek servisleriyle entegrasyonun nasıl yapılacağını adım adım gösterir.
Ön Gereksinimler
Başlamadan önce aşağıdaki adımların tamamlandığından emin olun:
- ServBay'in Kurulumu: macOS veya Windows sisteminizde ServBay'i başarıyla kurup çalıştırdınız. Henüz kurmadıysanız, ServBay resmi web sitesini ziyaret ederek yükleme rehberlerine ulaşabilirsiniz.
- ServBay Paketleri: ServBay’de aşağıdaki gerekli paketlerin kurulu ve çalışıyor olmasını sağlayın:
- En az bir PHP sürümü (Zend Framework / Laminas'ın son sürümleri için genellikle PHP 8.x ya da üzeri önerilir).
- Bir web sunucusu (Caddy veya Nginx).
- Composer (ServBay genellikle önceden kurulu gelir).
- Kullanmak istediğiniz veritabanı servisleri (örneğin MySQL, PostgreSQL) ile önbellek servisleri (örneğin Memcached, Redis). Bu servisler ServBay kontrol panelinden kolayca başlatılabilir.
Zend Framework Projesi Oluşturma
ServBay, site projelerinizi belirli dizinlerde toplamanızı önerir. Böylece site yönetimi ve otomatik konfigürasyon kolaylaşır:
- macOS:
/Applications/ServBay/www
- Windows:
C:\ServBay\www
Site Kök Dizinine Geçin
Terminal uygulamanızda, ServBay’in önerdiği site dizinine gidin:
macOS:
bashcd /Applications/ServBay/www
1Windows:
cmdcd C:\ServBay\www
1Composer ile Proje Oluşturma
ServBay varsayılan olarak Composer ile gelir. Yeni bir Zend Framework (Laminas skeleton application) projesi oluşturmak için aşağıdaki komutu kullanın ve projeyi
servbay-zend-app
adlı alt klasöre yerleştirin:bashcomposer create-project laminas/laminas-skeleton-application servbay-zend-app
1Bu komut,
servbay-zend-app
dizinine Zend Framework (Laminas) iskelet uygulamasını indirip tüm gerekli bağımlılıkları kurar.Proje Dizinine Geçin
Yeni oluşturduğunuz proje dizinine gidin:
bashcd servbay-zend-app
1
Web Sunucu Konfigürasyonu
Projenize tarayıcıdan erişebilmek için ServBay’de bir site tanımlaması yapmanız gereklidir.
- ServBay Kontrol Panelini Açın: ServBay uygulamasını başlatın.
- Site Ayarlarına Girin: Kontrol panelinde Websites (Siteler) sekmesini bulun ve tıklayın.
- Yeni Site Ekle: Sol alt köşedeki
+
butonuna tıklayarak yeni site eklemesi başlatın. - Site Bilgilerini Doldurun:
- Ad (Name): Örneğin
My Zend Dev Site
gibi tanımlayıcı bir isim verin. - Alan Adı (Domain): Projenize tarayıcıdan erişmek için kullanacağınız alan adını yazın. Gerçek alan adlarıyla çakışmaması için
.local
veya.test
uzantısı önerilir, örneğinservbay-zend-test.local
. ServBay, yerel DNS yönlendirmesini otomatik olarak yapar. - Site Tipi (Website Type):
PHP
seçin. - PHP Sürümü (PHP Version): Projeye uygun bir PHP sürümünü (ör.
8.3
) seçin ve kurulu olduğundan emin olun. - Ana Dizin (Document Root): Web sunucusunun dışarıya hizmet verdiği dizin. Zend Framework’ün giriş dosyası
index.php
projeninpublic
klasöründedir. Bu nedenle ana dizin:/Applications/ServBay/www/servbay-zend-app/public
olmalıdır.
- Ad (Name): Örneğin
- Kaydet ve Yeniden Başlat: Save (Kaydet) butonuna tıklayın. Değişiklikler için onay verildiğinde web sunucusu yapılandırması güncellenir ve siteniz aktif olur.
Detaylı site ekleme adımları için ServBay dokümantasyonundaki ilk site ekleme bölümüne bakabilirsiniz.
Temel "Hello ServBay!" Örneği
Şimdi kök URL (/
) ziyaret edildiğinde "Hello ServBay!" mesajını gösterecek şekilde proje kodunuzu düzenleyelim.
Rota ve Controller Ayarı (module.config.php)
Proje dizininizdeki
module/Application/config/module.config.php
dosyasını düzenleyin ve aşağıdaki temel rota/controller ayarlarını ekleyin:php<?php declare(strict_types=1); namespace Application; use Laminas\Router\Http\Literal; use Laminas\Router\Http\Segment; use Laminas\ServiceManager\Factory\InvokableFactory; return [ 'router' => [ 'routes' => [ 'home' => [ 'type' => Literal::class, 'options' => [ 'route' => '/', 'defaults' => [ 'controller' => Controller\IndexController::class, 'action' => 'index', ], ], ], // ... Diğer rota ayarları ], ], 'controllers' => [ 'factories' => [ Controller\IndexController::class => InvokableFactory::class, ], ], 'view_manager' => [ 'display_not_found_reason' => true, 'display_exceptions' => true, 'doctype' => 'HTML5', 'not_found_template' => 'error/404', 'exception_template' => 'error/index', 'template_map' => [ 'layout/layout' => __DIR__ . '/../view/layout/layout.phtml', 'application/index/index' => __DIR__ . '/../view/application/index/index.phtml', 'error/404' => __DIR__ . '/../view/error/404.phtml', 'error/index' => __DIR__ . '/../view/error/index.phtml', ], 'template_path_stack' => [ __DIR__ . '/../view', ], ], // ... Diğer ayarlar ];
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
49Not: Bu kod parçası,
module.config.php
içeriğinin bir kısmıdır.'home'
rotası veController\IndexController::class
için factory tanımlamalarının dosyada mevcut olduğundan emin olun.Controller Oluştur veya Düzenle (IndexController.php)
module/Application/src/Controller/IndexController.php
dosyasını oluşturun veya düzenleyin.indexAction
metodu aşağıdaki gibi olmalı:php<?php declare(strict_types=1); namespace Application\Controller; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; class IndexController extends AbstractActionController { /** * Karşılama sayfası için varsayılan action. */ public function indexAction() { // Bir ViewModel döndürülür ve 'message' değişkeni görünüme iletilir return new ViewModel([ 'message' => 'Hello ServBay!', ]); } // ... Diğer action metotları }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24View Dosyasını Oluştur/Düzenle (index.phtml)
module/Application/view/application/index/index.phtml
dosyasını oluşturun veya düzenleyin:php<h1><?php echo $this->message; ?></h1>
1Burada Zend Framework (Laminas) view helper’ı
$this->message
ile controller’dan gelen veri kullanılır.
Siteye Erişim
Web tarayıcınızda, ServBay’de tanımladığınız alan adını ziyaret edin, örneğin https://servbay-zend-test.local
.
Her şey doğru yapılandırıldıysa "Hello ServBay!" mesajı gözükecektir. Bu, Zend Framework projenizin ServBay’de başarıyla çalıştığını gösterir.
Veritabanı ve Önbellek Entegrasyon Örnekleri
ServBay birden fazla veritabanı ve önbellek servisi sunar. Aşağıdaki örnekler, Zend Framework projesinde Memcached, Redis, MySQL ve PostgreSQL kullanımı için adım adım gösterimler sunar.
Önemli Not: Verilen veritabanı ve önbellek örnekleri bağımsız demo amaçlıdır. Gerçek projelerde gereksinimlere uygun şekilde seçim yapıp, bağlantıları dependency injection gibi yöntemlerle yönetmelisiniz. Bunları çalıştırmadan önce ServBay’de ilgili servislerin aktif olduğundan emin olun.
Veritabanı İşlemi Örneği - Tablo Oluşturma
Öncelikle Laminas DB bileşeni ile bir tablo nasıl oluşturulur onu gösterelim. Kod parçaları ile tablo oluşturma işlemini manuel şekilde örneklendirdik.
Laminas DB Bileşeni Kurulumu
Proje kök dizininde Composer ile kurulumu yapın:
bashcomposer require laminas/laminas-db
1Veritabanını Manuel Oluşturun
Demo işlemlerden önce ServBay’in veritabanı yönetim aracı (phpMyAdmin, pgAdmin, MongoDB Compass vb.) üzerinden
servbay_zend_app
isimli veritabanını oluşturun. ServBay’de MySQL/MariaDB için varsayılan kullanıcı adıroot
, parola isepassword
’dır. PostgreSQL’de de aynı şekilde.Tablo Oluşturma Script'i Tanımlayın ve Çalıştırın (Örnek)
Proje kökünde veya uygun bir yerde
create_users_table.php
adlı bir PHP dosyası oluşturun:php<?php // create_users_table.php use Laminas\Db\Adapter\Adapter; use Laminas\Db\Sql\Sql; // MySQL veya MariaDB kullandığınızı varsayıyoruz $adapter = new Adapter([ 'driver' => 'Pdo_Mysql', // veya 'Pdo_Pgsql' 'database' => 'servbay_zend_app', 'username' => 'root', 'password' => 'password', // ServBay varsayılan parolası 'hostname' => '127.0.0.1', // 'port' => 3306, // MySQL varsayılan portu // 'port' => 5432, // PostgreSQL varsayılan portu ]); $sql = new Sql($adapter); // users tablosu için SQL tanımı $create = $sql->createTable('users') ->addColumn(new \Laminas\Db\Sql\Ddl\Column\Integer('id', false, null, ['AUTO_INCREMENT' => true])) ->addColumn(new \Laminas\Db\Sql\Ddl\Column\Varchar('name', 255)) ->addColumn(new \Laminas\Db\Sql\Ddl\Column\Varchar('email', 255, ['UNIQUE' => true])) ->addConstraint(new \Laminas\Db\Sql\Ddl\Constraint\PrimaryKey('id')); echo "SQL yürütülüyor:\n"; echo $sql->buildSqlString($create, $adapter->getPlatform()) . "\n"; try { // SQL'i yürütün $adapter->query( $sql->buildSqlString($create, $adapter->getPlatform()), Adapter::QUERY_MODE_EXECUTE ); echo "users tablosu başarıyla oluşturuldu.\n"; } catch (\Exception $e) { echo "Tablo oluşturma hatası: " . $e->getMessage() . "\n"; }
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
38Not: Bu yalnızca manuel bir demo script’idir. Gerçek projede Laminas Migrations gibi araçlar ile şema yönetimi önerilir.
Terminalde, PHP CLI ile script’i çalıştırın:
bashphp create_users_table.php
1
MySQL Entegrasyon Örneği
Zend Framework controller'ı ile MySQL veritabanına bağlanıp veri ekleme ve sorgulama adımları:
Veritabanı Bağlantı Ayarı
config/autoload/global.php
dosyasını düzenleyin ve MySQL bağlantı bilgilerini ekleyin:php<?php // config/autoload/global.php return [ 'db' => [ 'driver' => 'Pdo_Mysql', 'database' => 'servbay_zend_app', // Veritabanı mevcut olmalı 'username' => 'root', // ServBay varsayılan 'password' => 'password', // ServBay varsayılan 'hostname' => '127.0.0.1', 'port' => 3306, // MySQL varsayılan portu 'charset' => 'utf8mb4', ], // ... Diğer global ayarlar ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14Controller Factory Ayarı (module.config.php)
Controller’da
Laminas\Db\Adapter\Adapter
kullanılabilmesi içinIndexController
için bir factory tanımı ekleyin. Eğer InvokableFactory mevcutsa, aşağıdaki şekilde değiştirin:php<?php // module/Application/config/module.config.php namespace Application; use Laminas\ServiceManager\Factory\InvokableFactory; use Laminas\Db\Adapter\AdapterInterface; return [ // ... Diğer ayarlar 'controllers' => [ 'factories' => [ Controller\IndexController::class => function($container) { $adapter = $container->get(AdapterInterface::class); return new Controller\IndexController($adapter); }, ], ], 'service_manager' => [ 'aliases' => [ AdapterInterface::class => 'Laminas\Db\Adapter\Adapter', ], 'factories' => [ 'Laminas\Db\Adapter\Adapter' => \Laminas\Db\Adapter\AdapterServiceFactory::class, ], ], // ... Diğer ayarlar ];
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
27Not: Yukarıdaki kod, dosyadaki diğer ayarlara eklenmeli; özellikle
service_manager
kısmı eksiksiz olmalıdır.Rota Tanımı (module.config.php)
MySQL için aşağıdaki rotaları ekleyin:
php<?php // module/Application/config/module.config.php namespace Application; use Laminas\Router\Http\Literal; return [ 'router' => [ 'routes' => [ // ... mevcut rotalar 'mysql-add' => [ 'type' => Literal::class, 'options' => [ 'route' => '/mysql-add', 'defaults' => [ 'controller' => Controller\IndexController::class, 'action' => 'mysqlAdd', ], ], ], 'mysql' => [ 'type' => Literal::class, 'options' => [ 'route' => '/mysql', 'defaults' => [ 'controller' => Controller\IndexController::class, 'action' => 'mysql', ], ], ], ], ], // ... diğer ayarlar ];
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
34Controller Metotları (IndexController.php)
IndexController.php
dosyasına aşağıdaki metotları ekleyin ve constructor ile Adapter alın:php<?php declare(strict_types=1); namespace Application\Controller; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; use Laminas\Db\Adapter\AdapterInterface; use Laminas\Db\Sql\Sql; class IndexController extends AbstractActionController { private $adapter; public function __construct(AdapterInterface $adapter) { $this->adapter = $adapter; } public function indexAction() { return new ViewModel([ 'message' => 'Hello ServBay!', ]); } public function mysqlAddAction() { $sql = new Sql($this->adapter); $insert = $sql->insert('users') ->values([ 'name' => 'ServBay Demo User', 'email' => 'demo-mysql@servbay.test', ]); $statement = $sql->prepareStatementForSqlObject($insert); $result = $statement->execute(); $message = $result->getAffectedRows() > 0 ? 'MySQL Kullanıcısı başarıyla eklendi.' : 'MySQL kullanıcısı eklenemedi.'; return new ViewModel([ 'message' => $message, ]); } public function mysqlAction() { $sql = new Sql($this->adapter); $select = $sql->select('users'); $statement = $sql->prepareStatementForSqlObject($select); $result = $statement->execute(); $users = []; foreach ($result as $row) { $users[] = $row; } return new ViewModel([ 'users' => json_encode($users, JSON_PRETTY_PRINT), ]); } // ... diğer action metotları }
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
66View Dosyalarını Oluşturun
module/Application/view/application/index/mysql-add.phtml
:php<h1><?php echo $this->message; ?></h1>
1module/Application/view/application/index/mysql.phtml
:php<h1>MySQL Kullanıcıları</h1> <pre><?php echo $this->users; ?></pre>
1
2MySQL Demo'yu Test Edin
ServBay'de MySQL servisi çalışmalı. Önce
https://servbay-zend-test.local/mysql-add
adresine gidin ve "MySQL Kullanıcısı başarıyla eklendi." mesajını görün. Ardındanhttps://servbay-zend-test.local/mysql
ile tablo verisini (JSON olarak) görüntüleyin.
PostgreSQL Entegrasyon Örneği
Zend Framework controller'ı ile PostgreSQL veritabanına bağlanıp veri ekleme ve sorgulama adımları:
Veritabanı Bağlantı Ayarı
config/autoload/global.php
dosyasını aşağıdaki gibi PostgreSQL için düzenleyin:php<?php // config/autoload/global.php return [ 'db' => [ 'driver' => 'Pdo_Pgsql', 'database' => 'servbay_zend_app', 'username' => 'root', 'password' => 'password', 'hostname' => '127.0.0.1', 'port' => 5432, ], // ... diğer ayarlar ];
1
2
3
4
5
6
7
8
9
10
11
12
13Controller Factory Ayarı (module.config.php)
MySQL ile aynı şekilde,
module/Application/config/module.config.php
'daki factory ayarlarının doğru olduğundan emin olun.Rota Tanımı (module.config.php)
PostgreSQL için yeni rotaları ekleyin:
php<?php // module/Application/config/module.config.php namespace Application; use Laminas\Router\Http\Literal; return [ 'router' => [ 'routes' => [ // ... mevcut rotalar 'pgsql-add' => [ 'type' => Literal::class, 'options' => [ 'route' => '/pgsql-add', 'defaults' => [ 'controller' => Controller\IndexController::class, 'action' => 'pgsqlAdd', ], ], ], 'pgsql' => [ 'type' => Literal::class, 'options' => [ 'route' => '/pgsql', 'defaults' => [ 'controller' => Controller\IndexController::class, 'action' => 'pgsql', ], ], ], ], ], // ... diğer ayarlar ];
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
34Controller Metotları (IndexController.php)
Aşağıdaki iki metodu ekleyin:
php<?php declare(strict_types=1); namespace Application\Controller; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; use Laminas\Db\Adapter\AdapterInterface; use Laminas\Db\Sql\Sql; class IndexController extends AbstractActionController { private $adapter; public function __construct(AdapterInterface $adapter) { $this->adapter = $adapter; } // ... mevcut action metotları public function pgsqlAddAction() { $sql = new Sql($this->adapter); $insert = $sql->insert('users') ->values([ 'name' => 'ServBay Demo User', 'email' => 'demo-pgsql@servbay.test', ]); $statement = $sql->prepareStatementForSqlObject($insert); $result = $statement->execute(); $message = $result->getAffectedRows() > 0 ? 'PostgreSQL Kullanıcısı başarıyla eklendi.' : 'PostgreSQL kullanıcısı eklenemedi.'; return new ViewModel([ 'message' => $message, ]); } public function pgsqlAction() { $sql = new Sql($this->adapter); $select = $sql->select('users'); $statement = $sql->prepareStatementForSqlObject($select); $result = $statement->execute(); $users = []; foreach ($result as $row) { $users[] = $row; } return new ViewModel([ 'users' => 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
59View Dosyalarını Oluşturun
module/Application/view/application/index/pgsql-add.phtml
:php<h1><?php echo $this->message; ?></h1>
1module/Application/view/application/index/pgsql.phtml
:php<h1>PostgreSQL Kullanıcıları</h1> <pre><?php echo $this->users; ?></pre>
1
2PostgreSQL Demo'yu Test Edin
ServBay'de PostgreSQL servisi çalışmalı. Önce
https://servbay-zend-test.local/pgsql-add
adresinde başarı mesajı, ardındanhttps://servbay-zend-test.local/pgsql
ile tablo verisini (JSON olarak) görüntüleyin.
Memcached Entegrasyon Örneği
Zend Framework controller'ı ile Memcached önbelleğinin kullanımı:
Memcached Adaptörü Kurulumu
Proje kökünde Composer ile aşağıdaki bağımlılıkları ekleyin:
json// composer.json { "require": { "laminas/laminas-skeleton-application": "^1.0", "laminas/laminas-cache-storage-adapter-memcached": "^2.0" // ... diğer bağımlılıklar }, // ... diğer yapılandırma }
1
2
3
4
5
6
7
8
9Ardından aşağıdaki komutu çalıştırın:
bashcomposer update
1ServBay'de PHP için
memcached
uzantısı önceden kurulu gelir.Rota Tanımı (module.config.php)
Memcached örneği için rota ekleyin:
php<?php // module/Application/config/module.config.php namespace Application; use Laminas\Router\Http\Literal; return [ 'router' => [ 'routes' => [ // ... mevcut rotalar 'memcached' => [ 'type' => Literal::class, 'options' => [ 'route' => '/memcached', 'defaults' => [ 'controller' => Controller\IndexController::class, 'action' => 'memcached', ], ], ], ], ], // ... diğer ayarlar ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24Controller Metodu (IndexController.php)
memcachedAction()
metodu:php<?php declare(strict_types=1); namespace Application\Controller; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; use Laminas\Cache\StorageFactory; use Laminas\Cache\Storage\StorageInterface; class IndexController extends AbstractActionController { // ... diğer action/metotlar public function memcachedAction() { // Memcached'nin ServBay'de standart adresi 127.0.0.1:11211 $cache = StorageFactory::factory([ 'adapter' => [ 'name' => 'memcached', 'options' => [ 'servers' => [ ['127.0.0.1', 11211], ], 'ttl' => 300, ], ], 'plugins' => [ 'serializer', 'exception_handler' => ['throw_exceptions' => false], ], ]); $cacheKey = 'my_memcached_data'; $cachedData = $cache->getItem($cacheKey, $success); if (!$success) { $cachedData = 'Hello Memcached! (Veri kaynakta oluşturuldu, önbelleklenme zamanı: ' . date('Y-m-d H:i:s') . ')'; $cache->setItem($cacheKey, $cachedData); $cachedData .= ' - CACHE MISS'; } else { $cachedData .= ' - CACHE HIT'; } return new ViewModel([ 'message' => $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
50View Dosyası
module/Application/view/application/index/memcached.phtml
:php<h1>Memcached Örneği</h1> <p><?php echo $this->message; ?></p>
1
2Memcached Demo'yu Test Edin
ServBay’de Memcached servisi çalışmalı.
https://servbay-zend-test.local/memcached
adresini ilk ziyaretinizde "CACHE MISS" mesajı gelecektir; sonraki ziyaretlerde ve önbellek süresi boyunca "CACHE HIT" görülecektir.
Redis Entegrasyon Örneği
Zend Framework controller'ı ile Redis önbellek kullanımı:
Redis Adaptörü Kurulumu
Proje kökünde Composer ile aşağıdaki bağımlılıkları ekleyin:
json// composer.json { "require": { "laminas/laminas-skeleton-application": "^1.0", "laminas/laminas-cache-storage-adapter-redis": "^2.0", "ext-redis": "*" }, // ... diğer ayarlar }
1
2
3
4
5
6
7
8
9Ardından:
bashcomposer update
1ServBay, PHP için
redis
uzantısını önceden kurulu sunar.Rota Tanımı (module.config.php)
Redis örneği için rota ekleyin:
php<?php // module/Application/config/module.config.php namespace Application; use Laminas\Router\Http\Literal; return [ 'router' => [ 'routes' => [ // ... mevcut rotalar 'redis' => [ 'type' => Literal::class, 'options' => [ 'route' => '/redis', 'defaults' => [ 'controller' => Controller\IndexController::class, 'action' => 'redis', ], ], ], ], ], // ... diğer ayarlar ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24Controller Metodu (IndexController.php)
redisAction()
metodu:php<?php declare(strict_types=1); namespace Application\Controller; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; use Laminas\Cache\StorageFactory; use Laminas\Cache\Storage\StorageInterface; class IndexController extends AbstractActionController { // ... diğer action/metotlar public function redisAction() { // Redis ServBay'de genellikle 127.0.0.1:6379 adresinde çalışır $cache = StorageFactory::factory([ 'adapter' => [ 'name' => 'redis', 'options' => [ 'server' => [ 'host' => '127.0.0.1', 'port' => 6379, ], 'ttl' => 300, ], ], 'plugins' => [ 'serializer', 'exception_handler' => ['throw_exceptions' => false], ], ]); $cacheKey = 'my_redis_data'; $cachedData = $cache->getItem($cacheKey, $success); if (!$success) { $cachedData = 'Hello Redis! (Veri kaynakta oluşturuldu, önbelleklenme zamanı: ' . date('Y-m-d H:i:s') . ')'; $cache->setItem($cacheKey, $cachedData); $cachedData .= ' - CACHE MISS'; } else { $cachedData .= ' - CACHE HIT'; } return new ViewModel([ 'message' => $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
51View Dosyası
module/Application/view/application/index/redis.phtml
:php<h1>Redis Örneği</h1> <p><?php echo $this->message; ?></p>
1
2Redis Demo'yu Test Edin
ServBay’de Redis servisi çalışmalı.
https://servbay-zend-test.local/redis
adresini ilk ziyaretinizde "CACHE MISS" mesajı gelir; önbellek süresi boyunca tekrar ziyaretlerde "CACHE HIT" görülür.
Özet
Bu adımlarla ServBay yerel geliştirme ortamında Zend Framework (Laminas) projesi oluşturup çalıştırdınız. ServBay’in site özelliği ile web sunucusunu kolayca yapılandırdınız, MySQL ve PostgreSQL gibi veritabanlarını, Memcached ve Redis gibi önbellek servislerini projeye entegre ettiniz.
ServBay, yerel geliştirme ortamınızı sadeleştirir, kod yazmaya ve projelerinizi daha verimli ilerletmenize olanak tanır. Zengin paketleri ve esnek ayarları sayesinde, gerçek ortamı yerel ortamınızda kolayca simüle edebilir ve üretkenliğinizi artırabilirsiniz.