Neden Zend Framework Kullanmalıyım?

Bir çok kişi hangi PHP framework’ünün daha iyi olduğu konusunda sorular sormaktadır. Başlangıç seviyesi için hangisi iyidir? Hangisi bir firmaya tam uyar? Bir arkadaşımızı veya patronumuzu Zend Framework kullanmaya nasıl ikna ederiz?

Bu makalede diğer frmaework’lerle kıyaslama yapmak yerine Zend Framework ile ilgili bilgi vereceğim.

Zend Framework , PHP nin kurucularından olduğundan bir kere, zaten işlerini ve ne yapacaklarını iyi bildiklerini düşünüyorum. Ki içine girdiğinizde bu daha da iyi anlaşılabiliyor. Ayrıca değinmem gereken bir nokta da Zend ile yapılmış bir çok örnek ve uygulama bulabiliyorsunuz internette.

Ayrı Kullanılabilirlik : Bu frameworkteki partiküller, sanki bir php library’siymiş gibi kullanılabiliyor. Örneğin sadece Form validator kullanmış olduğum bir uygulamam mevcut. Eğer sadece ihtiyaç Zend_Form_Validator ise bunu anında kullanım yapısına uyduran Zend Framework ile bu mümkün, çünkü bu bileşenler birbirinden imkan olduğunda çok güzel soyutlanarak ayrıştırılmış. Tabi ki yine de gereklilik duyulan bileşen olduğu zamanlar olabiliyor.

MVC Bileşenleri : Zend Framework Model-View-Controller ayrıştırmasını iyi yapmış bir frameworktür. Algoritmaları, kafa karıştırıcı şeyleri user interface meselesinden çok rahat ayırmanızı sağlar. USer interfaceini yapan kişiler de bir miktar kodlaam yetisi varsa ve Zend_Layout yapısını bilirse (şart değil)  tasarımda yazılımcı ihtiyacı devreden tamamen kalkabilir.

Dökümantasyon : 6 dilde 500 sayfadan büyük dökümantasyonu ile güzel bir arşiv oluşturulmuş durumda. Halen de eklenmektedir.

Destek: En iyi destek bir yazılımcı için tabi ki www.google.com’dur. İnanın google’ın birşeyler bulabilmesi için zend framework yazıp sonuçlara bakmanız bile yeterli olacaktır. Yaklaşık 7.440.000 sonuç bulundu (0,11 saniye))

symfony framework için bu  Yaklaşık 3.660.000 sonuç bulundu (0,18 saniye)

Zend Değerleri : Zend studio ve zend server gibi iki güçlü IDE (geliştirici araçları) Zend tarafından ücretsiz lisans ile verilebiliyor. Bu iki ürün de Zend framework ile uyumlu bir şekilde çalışıyor. Kod yazma kabiliyetinizi hızlandırıyor. (Günümüzde netbeans ile de bir çok kodsal işinizi halledebiliyorsunuz tabi ki bu ayrı. Ben her şeyi kendi özel editöründe yazmayı sevenlerdenim.. )

Ayrıca Zend google, amazon, ebay, vb gibi birçok güçlü partner ile resmi olarak çalışmaktadır. Bunları Zend framework ile de kullanabiliyorsunuz. hazır yazılmış classlar,  ve hata kontrolleri de içinde 🙂

Çokluk : Kendiniz yazmak yerine, Zend framework’te 64 bileşen zaten yazılı!. Bu sayı gitgide artıyor da. Bileşenlerden bazı önemlileri şunlar :

  • MVC – Zend_Application, Zend_Controller, Zend_View, Zend_Layout, Zend_Navigation
  • l10n and i18n – Zend_Locale, Zend_Date, Zend_Translate, Zend_Currency, Zend_Measure
  • JavaScript entegrasyonu /AJAX – Zend_Dojo, ZendX_JQuery
  • Web servisleri – Zend_Service_Yahoo, Zend_Gdata, Zend_Service_Amazon
  • Diğerleri – Zend_Acl, Zend_Auth, Zend_Mail, Zend_Pdf, Zend_Form, Zend_Search_Lucene, Zend_Validate, Zend_Tool, Zend_Test

Kalite : Zend framework kodun kalitesine odaklanır. İspatlanmış bir nesne yönelimli tasarım kalıplarını kullanır. Neredeyse tüm bileşenler extend edilebilir. (miras alınabilir)

Ne değildir? : Orta seviyeli bir yazılım olmadığından, uygulamanıza özellik eklemek için belirgin bir yol bulunmamaktadır. Bunun yerine araçlar ve yorumlar ile işi yapmanızı sağlar. İşi yapacak kişi ve kararları verecek kişi yine yazılım geliştiricidir. Bu yüzden Zend_Model diye bir bileşen yoktur. MVC deki M harfi modeli işaret eder, ve Model’i uygulamaya gömmek, sizin nasıl gömeceğiniz ile ilgilidir 🙂

 

Bu yazı bir çeviridir. Fakat okuduğumda bunları bu denli ifade edemeyeceğimi düşündüğümden, doğrudan çeviri yapmaya karar verdim.

Orjinal yazı : http://www.techchorus.net/reasons-use-zend-framework

a different php cache class : EmCache

çalıştığm bir projede 2 kişi olarak, cache mantığının nasıl çalışması üzerine araştırmalar yapıyorduk.

Derken bu php classını yazıverdim.

http://sourceforge.net/projects/emcache/

Genel olarak bu class, diğer cachelerdeki gibi herhangi bir dosyaya serialize edip yazmıyor. Bu cache’in mantığı bir php dosyası oluşturup, sanki kodu elle yazmış gibi, kodu oraya kendisinin yazması. Böylece Object olmayan tipler için serialize-unserialize maliyetinden de kurtarılmış olunuyor.

Birkaç değişkeni bir grupta toplayıp, cache dosyası sayısındaki artıştan, ve gruplamanın getirilerinden faydalanılabilir.

2-3 tane arrayiniz var ise ve bunlar çalışan kodunuzda genel olarak hep aynı anda çağrılması (oluşturulması) gerekiyorsa, burada grup özellikleri işinizi kolaylaştıracaktır. Kullanım olarak da çok bir farkı yoktur.

Genel olarak

$emc = new EmCache("path_to_my_cache_directory");

//simple caching

if(!$var = $emc->load("name_of_my_data")){

$emc->save($var,"name_of_my_data");

}

//group caching

$commit=false;

if(!$var2 = $emc->loadFromGroup("name_of_my_data")){

$emc->collect($var2,"name_of_my_data");

$commit=true;

}

if(!$var3 = $emc->loadFromGroup("another_name_of_my_data")){

$emc->collect($var3,"another_name_of_my_data");

$commit=true;

}

if($commit){

$emc->commitGroup();

}