Zend Framework Başlangıç – MVC

1 Haziran 2009 | Kategoriler: PHP | Anahtar Kelimeler: , , , ,

Zend Framework, MVC yapısını oturtmak için ön tanımlı bir dizin yapısı kurmuştur. Dizin ve dosya isimleri belli kurallara göre belirlenmektedir.

Bu konuya başlamadan önce MVC ve PHP’nin Class yapısını bilmeniz gerekmektedir. Eğer henüz bu kavramlarla ilgili sıkıntılarınız varsa incelemeniz gereken bazı linkleri belirteyim:
MVC :
http://siriyev.net/php/mvc-nedir
http://sevalunver.blogspot.com/2009/04/model-view-controller.html
PHP Class :
http://php.net/class
AutoLoad :
http://tr.php.net/manual/tr/function.spl-autoload-register.php

Yukarıdakı kavramları anladıktan sonra işe bir önceki yazımızda oluşturduğumuz ZF projesindeki bölümleri açıklamakla başlayalım:

Proje konfigurasyon dosyası (application.ini)
dosyadakı ‘development’ bölümü ‘production’ bölümünden türemiş ve bazı ayarları değiştirmiştir. ZF, index.php dosyasında tanımlanan APPLICATION_ENV sabitini (burada ‘development’ [geliştirme]) temel alarak ‘ini’ ayarlarını işlemektedir. Proje bitirildiğinde index.php dosyasından bu değer ‘production’ [üretim] olarak değiştirilecek [development : production] bölümündeki ayarlar geçerliliğini kaybedecektir. Ayrıntılı bilgi için bakınız : parse_ini_file

Dosyanın ilgili birimlerinin açıklamaları satırların hemen altında yer almaktadır.

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
# ini_set fonksiyonu ile tanımlanabilecek ayarlar burada belirtiliyor
includePaths.library = APPLICATION_PATH "/../library"
# set_include_path fonksiyonu. Buradaki APPLICATION_PATH index.php dosyasında tanımlanmıştır.
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
# Bootstrap dosyasının yolu ve nesne ismi
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
# Controller dosyalarının yolu

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
# test aşamasındayken php konfigurasyonları

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
# geliştirme aşamasındayken php konfigurasyonları

.htaccess dosyası
Bu dosyanın yaptığı iş kısaca şöyle: Eğer belirtlien dosya public dizini içerisinde var ise onu çalıştır / çağır yoksa index.php dosyasını çalıştır.
ZF Projelerinde tüm işlemler index.php dosyası üzerinden yapılır. Bunu da apache sayesinde .htaccess dosyası yönlendirir.

Controller ve View dosyaları
Bu dosyalar birbirileriyle tam ilişkili olduğu için birlikte anlatmayı uygun gördüm.
ZF projesinde uygulama http://example.com, http://example.com/index veya http://example.com/index/index şeklinde çağırıldığında çalışan IndexController.php dosyasındaki aynı adlı nesne ve onun indexAction methodur. Bu method öntanımlı olarak views/scripts/index/index.phtml view dosyası ile çalışır.
Başka bir örnek verirsek: Kullanıcı http://example.com/user/signin adresini çağırdığında ZF UserController.php dosyasını include eder UserController nesnesinin siginAction methodunu çalıştırır. Çalışan method views/scripts/user/signin.phtml view dosyasına ihtiyaç duyar. Dosyaları oluşturmanız ve uygun yerlerine koymanız ZF’nin bunları çağırıp çalıştırması için yeterlidir. Öntanımlı action ve controller index’tir. Yani http://example.com/user ile http://example.com/user/index aynı işi görür.

library Dizini
bu dizin Zend Framework dosyalarını içerebileceği gibi yazılan uygulamanın da işlem nesnelerini içerir. Genel olarak bir ZF uygulamasının tüm Model’leri bu dizinde bulunur ve aşağıdaki şekilde yerleştirilir:

App/
- uygulamanın ana dizini
App/DbTable/
- uygulamanın ihtiyacı olan veri tabanı tabloların ZF modeli
App/Form/
- uygulamanın ihtiyacı olan form nesneleri
App/View/Helpers/
- uygulamanın ihtiyacı olan view helper'lar (Bu kavramlar daha sonra anlatılacaktır.)
vs.

yukarıda belirtilen dizin yapısını library içerisinde oluşturmanız ileriki aşamalarda kolaylık sağlayacaktır.

Örnek Çalışma:

Bu konuda görülenleri daha iyi anlamak için http://example.com/index/wellcome adresi çağırıldığında kullanıcılara hoş geldin mesajı veren çalışmayı birlikte yapalım.
1. IndexController.php dosyasını açıp

function wellcomeAction() {
}

kodlarını indexAction methodundan sonra ekliyoruz.
2. views/scripts/index dizini içerisine wellcome.phtml adında bir dosya oluşturuyoruz.
3. oluşturduğumuz dosyaya ‘Hoş geldiniz’ mesajımızı ekliyor, http://example.com/index/wellcome adresini çağırıyoruz.
yazdığımız mesajı görebiliyorsak işlemimiz başarılı olmuştur.

yukarıda belirtilen 1 ve 2. işlemi linux uçbirimden proje ana dizinine girerek (Örn: cd /var/www/zfprojem)

zf create action wellcome index

komut satrını çalıştırarak ta gerçekleştirebilirdiniz.

Bir sonraki konuda ZF uygulamasına şablon eklemeyi, veri tabanına bilgi ekleyip, düzenlemeyi öğreneceğiz.

  1. Haziran 1st, 2009 21:34

    İşte buna ihtiyacım vardı. Yazılarını dört gözle takip edeceğim :)

  2. Ahmet Erdem
    Temmuz 13th, 2010 01:05

    Emeğiniz için teşekkür ederim. Aynı içerikte bir görsel ders hazırlanmış. Google’dan bu siteyi ve diğer siteyi buldum. http://www.webteders.com/dersler/ders/Php-Zend-Framework-Kurulumu/249 buradan videolu dersi izleyebilirsiniz. Her ikinizden de Allah Razı Olsun. :)

  3. 1Geri İzlemeler
*