Zend Framework Projesi Oluşturma ve Çalıştırma
Zend Framework Nedir?
Zend Framework, modern Web uygulamaları ve hizmetleri oluşturmak için bir dizi nesne yönelimli kütüphane sunan açık kaynaklı bir PHP çerçevesidir. Modüler ve yüksek performanslı olarak bilinir ve küçükten büyük ölçekli kurumsal uygulamalar için uygundur.
Zend Framework'ün Ana Özellikleri ve Avantajları
- Modüler Tasarım: Zend Framework, modüler tasarımı sayesinde geliştiricilerin ihtiyaçlarına göre bileşenleri seçip kullanmalarına olanak tanır.
- Yüksek Performans: Optimize edilmiş mimarisi ve önbellekleme mekanizması sayesinde Zend Framework mükemmel performans sunar.
- Esneklik: Çeşitli üçüncü parti kütüphane ve uzantılarla entegre edilebilir, her ölçekten proje için uygundur.
- Topluluk Desteği: Büyük bir geliştirici topluluğuna ve zengin bir ekosisteme sahiptir.
- İyi Belgelenmiş: Geliştiricilerin hızlıca işe başlamasına yardımcı olacak ayrıntılı belgeler ve eğitimler sunar.
Zend Framework, küçük uygulamalardan büyük kurumsal sistemlere kadar çeşitli projeler için yüksek kaliteli Web uygulamaları ve API'ler oluşturmak için uygundur.
ServBay Kullanarak Zend Framework Projesi Oluşturma ve Çalıştırma
Bu makalede, bir Zend Framework projesi oluşturmak ve çalıştırmak için ServBay tarafından sağlanan PHP ortamını kullanacağız. Proje erişimini basit bir konfigürasyonla sağlayarak ServBay'in 'host' özelliğini kullanarak Web sunucusunu ayarlayacağız.
Dikkat: Eğer Daha Önce NGINX veya Apache Kullanıcıysanız
ServBay varsayılan olarak Web sunucusu olarak Caddy kullanır. NGINX ve Apache'den ServBay'e göç eden kullanıcılar için, dikkat edilmesi gereken bazı önemli değişiklikler vardır:
Caddy Konfigürasyonu
ServBay, Caddy'yi zaten barındırmaktadır ve varsayılan konfigürasyonu optimize edilip test edilmiştir. Geliştiriciler, ServBay'in 'host' işlevi aracılığıyla siteleri yönetebilir, manuel olarak Caddy konfigürasyon dosyasını değiştirmeye gerek yoktur.
Rewrite Kuralları ve .htaccess
NGINX ve Apache'de, geliştiriciler genellikle URL yeniden yazma ve diğer konfigürasyonları işlemek için kendileri Rewrite kuralları ve .htaccess dosyaları hazırlarlar. Ancak, ServBay zaten Caddy kurallarını yapılandırmış olarak gelir, bu nedenle özel ihtiyaçlar olmadıkça geliştiriciler bu kuralları kendileri yazmak zorunda değildir.
Daha Fazla Bilgi Edinin
Daha fazla bilgi için Rewrite ve htaccess, Apache Web Sitesini ServBay'e Nasıl Taşırsınız, NGINX Web Sitesini ServBay'e Nasıl Taşırsınız konularına bakabilirsiniz.
Zend Framework Projesi Oluşturma
TIP
ServBay, geliştiricilerin web sitelerini /Applications/ServBay/www
dizininde saklamalarını önerir, bu yönetimi kolaylaştırır.
Composer Kurulumu
ServBay varsayılan olarak Composer ile beraber gelir, ayrı olarak kurmaya gerek yoktur.
Zend Framework Projesi Oluşturma
Composer kullanarak yeni bir Zend Framework projesi oluşturun:
bashcd /Applications/ServBay/www mkdir servbay-zend-app cd servbay-zend-app composer create-project zendframework/skeleton-application .
1
2
3
4Proje Dizine Girin
Yeni oluşturulan Zend Framework proje dizinine girin:
bashcd /Applications/ServBay/www/servbay-zend-app
1
Konfigürasyonu Başlatma
Çevre Değişkenlerini Ayarlayın
config/autoload/global.php
dosyasında veritabanı bağlantı bilgileri ve diğer çevre değişkenlerini yapılandırın. Aşağıdaki yapılandırmaların doğru ayarlandığından emin olun:phpreturn [ 'db' => [ 'driver' => 'Pdo_Mysql', 'database' => 'servbay_zend_app', 'username' => 'root', 'password' => 'password', 'hostname' => '127.0.0.1', ], ];
1
2
3
4
5
6
7
8
9
Web Sunucusunu Yapılandırma
Zend Framework projesine Web sunucusu aracılığıyla erişmek için ServBay'in 'host' özelliğini kullanın. ServBay'in 'host' ayarlarında yeni bir host ekleyin:
- Adı:
My First Zend Dev Site
- Alan Adı:
servbay-zend-test.local
- Site Türü:
PHP
- PHP Sürümü:
8.3
sürümünü seçin - Site Kök Dizin:
/Applications/ServBay/www/servbay-zend-app/public
Ayrıntılı adımlar için İlk Web Sitesini Ekleme belgesine bakın.
Örnek Kod Ekleme
module/Application/config/module.config.php
dosyasına aşağıdaki kodu ekleyin, "Hello ServBay!" çıktısını vermek için:
return [
'router' => [
'routes' => [
'home' => [
'type' => 'Literal',
'options' => [
'route' => '/',
'defaults' => [
'controller' => 'Application\Controller\Index',
'action' => 'index',
],
],
],
],
],
'controllers' => [
'factories' => [
'Application\Controller\Index' => InvokableFactory::class,
],
],
'view_manager' => [
'template_path_stack' => [
__DIR__ . '/../view',
],
],
];
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
module/Application/src/Controller/IndexController.php
dosyasına aşağıdaki kodu ekleyin:
namespace Application\Controller;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;
class IndexController extends AbstractActionController
{
public function indexAction()
{
return new ViewModel([
'message' => 'Hello ServBay!',
]);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
module/Application/view/application/index/index.phtml
dosyasına aşağıdaki kodu ekleyin:
<?php echo $this->message; ?>
Web Sitesini Ziyaret Etme
Tarayıcınızı açın ve https://servbay-zend-test.local
adresini ziyaret edin, web sayfasının Hello ServBay!
çıktısını verdiğini göreceksiniz.
NoSQL Veritabanı Örneği
Memcached Örneği
Memcached Eklentisini Kurma
ServBay'de Memcached eklentisi zaten kurulu olduğundan ekstra bir kurulum gerekmemektedir.
Memcached'i Konfigure Etme
composer.json
dosyasına Memcached bağımlılığı ekleyin:json{ "require": { "laminas/laminas-cache-storage-adapter-memcached": "^2.0" } }
1
2
3
4
5Ardından bağımlılıkları yüklemek için
composer update
komutunu çalıştırın.Rota Yapılandırması
module/Application/config/module.config.php
dosyasına aşağıdaki kodu ekleyin:phpreturn [ 'router' => [ 'routes' => [ 'memcached' => [ 'type' => 'Literal', 'options' => [ 'route' => '/memcached', 'defaults' => [ 'controller' => 'Application\Controller\Index', 'action' => 'memcached', ], ], ], ], ], ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16Memcached'i Kullanma
Kontrolörünüze cache kullanımı ekleyin:
phpnamespace Application\Controller; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; use Laminas\Cache\StorageFactory; class IndexController extends AbstractActionController { public function memcachedAction() { $cache = StorageFactory::factory([ 'adapter' => [ 'name' => 'memcached', 'options' => [ 'servers' => [ ['127.0.0.1', 11211], ], ], ], ]); $cacheKey = 'my_cache_key'; $cachedData = $cache->getItem($cacheKey, $success); if (!$success) { $cachedData = 'Hello Memcached!'; $cache->setItem($cacheKey, $cachedData); } 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
34module/Application/view/application/index/memcached.phtml
dosyasına aşağıdaki kodu ekleyin:php<?php echo $this->message; ?>
1Tarayıcınızı açın,
https://servbay-zend-test.local/memcached
adresini ziyaret edin.
Redis Örneği
Redis Eklentisini Kurma
ServBay'de Redis eklentisi zaten kurulu olduğundan ekstra bir kurulum gerekmemektedir.
Redis'i Konfigüre Etme
composer.json
dosyasına Redis bağımlılığı ekleyin:json{ "require": { "laminas/laminas-cache-storage-adapter-redis": "^2.0" } }
1
2
3
4
5Ardından bağımlılıkları yüklemek için
composer update
komutunu çalıştırın.Rota Yapılandırması
module/Application/config/module.config.php
dosyasına aşağıdaki kodu ekleyin:phpreturn [ 'router' => [ 'routes' => [ 'redis' => [ 'type' => 'Literal', 'options' => [ 'route' => '/redis', 'defaults' => [ 'controller' => 'Application\Controller\Index', 'action' => 'redis', ], ], ], ], ], ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16Redis'i Kullanma
Kontrolörünüze cache kullanımı ekleyin:
phpnamespace Application\Controller; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; use Laminas\Cache\StorageFactory; class IndexController extends AbstractActionController { public function redisAction() { $cache = StorageFactory::factory([ 'adapter' => [ 'name' => 'redis', 'options' => [ 'server' => [ 'host' => '127.0.0.1', 'port' => 6379, ], ], ], ]); $cacheKey = 'my_cache_key'; $cachedData = $cache->getItem($cacheKey, $success); if (!$success) { $cachedData = 'Hello Redis!'; $cache->setItem($cacheKey, $cachedData); } 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
35module/Application/view/application/index/redis.phtml
dosyasına aşağıdaki kodu ekleyin:php<?php echo $this->message; ?>
1Tarayıcınızı açın,
https://servbay-zend-test.local/redis
adresini ziyaret edin.
İlişkisel Veritabanı Örneği
Veritabanı Yapısı ve Göç Dosyası Oluşturma
Göç Dosyası Oluşturma
Laminas'ın Migrations aracını kullanarak bir göç dosyası oluşturun:
bashcomposer require laminas/laminas-db
1Göç Dosyasını Düzenleme
data/migrations
dizininde yeni bir göç dosyası oluşturun ve veritabanı tablo yapısını tanımlamak için düzenleyin:phpuse Laminas\Db\Adapter\Adapter; use Laminas\Db\Sql\Sql; class CreateUsersTable { public function up(Adapter $adapter) { $sql = new Sql($adapter); $create = $sql->createTable('users') ->addColumn('id', 'integer', ['auto_increment' => true]) ->addColumn('name', 'varchar', ['length' => 255]) ->addColumn('email', 'varchar', ['length' => 255, 'unique' => true]) ->addPrimaryKey('id'); $adapter->query( $sql->buildSqlString($create), Adapter::QUERY_MODE_EXECUTE ); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20Göçü Çalıştırma
El ile göçü çalıştırarak veritabanı tablolarını oluşturun:
php$adapter = new Adapter([ 'driver' => 'Pdo_Mysql', 'database' => 'servbay_zend_app', 'username' => 'root', 'password' => 'password', 'hostname' => '127.0.0.1', ]); $migration = new CreateUsersTable(); $migration->up($adapter);
1
2
3
4
5
6
7
8
9
10
MySQL Örneği
MySQL'i Konfigüre Etme
config/autoload/global.php
dosyasında MySQL bağlantı bilgilerini yapılandırın:phpreturn [ 'db' => [ 'driver' => 'Pdo_Mysql', 'database' => 'servbay_zend_app', 'username' => 'root', 'password' => 'password', 'hostname' => '127.0.0.1', ], ];
1
2
3
4
5
6
7
8
9Rota Yapılandırması
module/Application/config/module.config.php
dosyasına aşağıdaki kodu ekleyin:phpreturn [ 'router' => [ 'routes' => [ 'mysql-add' => [ 'type' => 'Literal', 'options' => [ 'route' => '/mysql-add', 'defaults' => [ 'controller' => 'Application\Controller\Index', 'action' => 'mysqlAdd', ], ], ], 'mysql' => [ 'type' => 'Literal', 'options' => [ 'route' => '/mysql', 'defaults' => [ 'controller' => 'Application\Controller\Index', 'action' => 'mysql', ], ], ], ], ], ];
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
26Kullanıcı Verilerini Yazma
Kontrolörün içine kullanıcı verilerini yazma ekleyin:
phpnamespace Application\Controller; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; use Laminas\Db\Adapter\Adapter; use Laminas\Db\Sql\Sql; class IndexController extends AbstractActionController { protected $adapter; public function __construct(Adapter $adapter) { $this->adapter = $adapter; } public function mysqlAddAction() { $sql = new Sql($this->adapter); $insert = $sql->insert('users') ->values([ 'name' => 'ServBay', 'email' => '[email protected]', ]); $this->adapter->query( $sql->buildSqlString($insert), Adapter::QUERY_MODE_EXECUTE ); return new ViewModel([ 'message' => 'User added', ]); } public function mysqlAction() { $sql = new Sql($this->adapter); $select = $sql->select('users'); $result = $this->adapter->query( $sql->buildSqlString($select), Adapter::QUERY_MODE_EXECUTE ); $users = []; foreach ($result as $row) { $users[] = $row; } return new ViewModel([ 'users' => 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
55module/Application/view/application/index/mysql-add.phtml
dosyasına aşağıdaki kodu ekleyin:php<?php echo $this->message; ?>
1module/Application/view/application/index/mysql.phtml
dosyasına aşağıdaki kodu ekleyin:php<?php echo $this->users; ?>
1Tarayıcınızı açın ve
https://servbay-zend-test.local/mysql-add
vehttps://servbay-zend-test.local/mysql
adreslerine gidin.
PostgreSQL Örneği
PostgreSQL'i Konfigüre Etme
config/autoload/global.php
dosyasında PostgreSQL bağlantı bilgilerini yapılandırın:phpreturn [ 'db' => [ 'driver' => 'Pdo_Pgsql', 'database' => 'servbay_zend_app', 'username' => 'root', 'password' => 'password', 'hostname' => '127.0.0.1', ], ];
1
2
3
4
5
6
7
8
9Rota Yapılandırması
module/Application/config/module.config.php
dosyasına aşağıdaki kodu ekleyin:phpreturn [ 'router' => [ 'routes' => [ 'pgsql-add' => [ 'type' => 'Literal', 'options' => [ 'route' => '/pgsql-add', 'defaults' => [ 'controller' => 'Application\Controller\Index', 'action' => 'pgsqlAdd', ], ], ], 'pgsql' => [ 'type' => 'Literal', 'options' => [ 'route' => '/pgsql', 'defaults' => [ 'controller
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19