Framework, Elma Dersem Çık. Armut Dersem Çıkma !
Web geliştirme ile ilgileniyorsanız, belli bir aşamadan sonra işinizi daha hızlı ve kolay biçimde yapmanızı sağlayacak araçlara ihtiyaç duymaya başlıyorsunuz. Daha iyi bir editör/IDE kullanayım, debug olsun şu olsun derken, kod yazma biçimizde de değişiklik yapmanız gerektiğini farkediyorsunuz.
Ondan sonra bu konuda size yardımcı olacak araçlara bakmaya başlıyorsunuz. Arayüz ile ilgileniyorsanız css / javascript ( yaml css, jquery vb.) kütüphanelerine, dinamik içerik üretimi ile ilgileniyorsanız veritabanı arayüzlerine (phpadodb), bunların hepsini ve daha fazlasını bir arada bulmak istiyorsanız web application frameworklere bakmanız gerekiyor.
Bir yerden sonra, kullanıcının yapacağı her aksiyon için karar kontrol yapıları hazırlamak, dış kullanıcıdan gelen veriyi nasıl güvenli hale getirip, veritabanı etkileşiminde kullanacağınızı düşünmek acı veren bir hal alıyor.
İşte burada application frameworkler imdadımıza yetişiyor. İlk başlarda oldukça önyargı ile yaklamış olsamda framework, mvc, orm gibi kavramlar artık iş hayatımı işgal etmiş hatta bir alışkanlık haline gelmiş durumda. Yapmak için uzun süreler harcadığım uygulamaları frameworkler yardımı ile geliştirmeye başlayınca aslında önyargımın bana ne kadar kötülük yapmış olduğunu farketmiş bulunuyorum.
Lafı uzatmadan php frameworklerinden bahsetmek istiyorum özellikle de iki tanesinden, CodeIgniter ve Symfony.
Aslında php ile hazırlanmış pek çok framework var ancak, pek çoğu ile zaman geçirdikten sonra bu iki framework ile daha fazla zaman geçirmem gerektiğini anladım ya da bu ikisi benim işime geldi dersem daha doğru bir tanımlama yaparım, çünkü herkesin bildiği yol en iyi yoldur diye düşünüyorum.
İlk olarak CodeIgniter.
“PHP programs simple as apple pie” sloganına yakışır bir şekilde hiç bir bağımlılığa ihtiyaç duymadan size istediğinizi veriyor. Asıl çıkış noktası daha kapsamlı frameworkler gibi konsol vb. araçlara ihtiyaç duymadan isteyen herkesin kendi hosting imkanları ile CodeIgniter‘ı kullanabilmesi. Herkesin kendi özel sunucusu olmayabilir, herkesin sisteme ssh vb. konsol erişimi olmayabilir. Bu bakımdan baktığımızda aslında CodeIgniter tamda freelance çalışan php geliştiriciler için biçilmiş bir kaftan. Kurulumu, konfigürasyonu, geliştirilmesi çok basit ve hızlı.
Çok basit bir örnek vererek olayı özetleyeyim, daha ayrıntılı bilgi için CodeIgniter kullanıcı rehberinden yararlanabilirsiniz.
controller: blog.php
class Blog extends Controller
{
function Blog ()
{
parent::Controller();
}
function index ()
{
$blog['query'] = $this->db->get('posts');
$data['content'] = $this->load->view('blog/posts', $blog, TRUE);
$this->load->view('index', $data);
}
}
view: blog/posts.php
<?php if( $query->num_rows() > 0 ): ?>
<?php foreach( $query->result() as $row ): ?>
<div class="blog-item">
<h2><?=anchor('blog/detail/'.$row->url_title, $row->title)?></h2>
<div class="blog-info">
<span class="date">
<?=mdate("%d.%m.%Y - %h:%i", $row->add_date)?>
</span>
</div>
<div class="blog_body">
<?=$row->summary?>
</div>
<?php endforeach; ?>
<?php else: ?>
<div class="blog-item">
<div class="blog_body">
<p>Görüntülemeye çalıştığınız içeriğe ulaşılamıyor!!!</p>
</div>
</div>
<?php endif;?>
view: index.php
<h2>blog anasayfa</h2> <?=$content?>
CodeIgniter içerisinde pek çok güzel özellik ile birlikte geliyor ve bununla beraber yeni ek özellikler kazandırmanıza imkan veriyor. Özellikle dosya yükleme, resim işleme ve form validasyonu CodeIgniter‘ın çok güzel ve başarılı bir şekilde işleyen özellikleri. Güzel bir wiki sayfaları var, forumlarında da oldukça iyi destek bulabiliyorsunuz. Çok büyük uygulamalar değilde daha basit, ufak uygulamalar için ideal olduğunu düşündüğüm bir framework CodeIgniter. Eklektiler içinden özellikle FreakAuth‘u denemenizi tavsiye ederim.
Gelelim Symfony‘ye. Symfony gördüğüm en ama en özelleştirilebilir framework. Uygulamanız içerisinde o kadar çok *.yml dosyası kullanıyorsunuz ki, ve herbiri kendi içinde süper, kafa karışıtırıcı ama pek çok işe yarar özelliği size beraberinde sunuyor. Symfony komut satırından verdiğiniz komutlar ile çalışıyor. Veritabanı iletişimi için PhpPropel‘i kullanıyor. İlk başlarda karışık gelse bile söz dizimine alıştığınızda PhpPropel‘in sorgularımı oldukça kolaylaştırdığını farkettim. Özellikle ilişkili tablolarda çalışıyorsanız ORM gücünü hissettiriyor size PhpPropel.
Symfony CodeIgniter ‘a nazaran biraz daha profesyonel ve karmaşık. ORM, Ajax, Otomatik Admin Paneli geliştirme gibi güzel özellikleri var ki, özellikle Admin paneli hazırlamak büyük uygulamalar için tam bir karın ağrısına benim için. Bunun yanında Symfony ile çok gelişmiş bir eklenti sistemi de kullanılabilir oluyor. Pek çok yararlı aracı eklenti olarak kurarak kullanmamız mümkün oluyor.
Yukarıda verdiğimiz örneğin bir benzerini Symfony üzerinde deneyelim
apps/blog/modules/post/actions/action.class.php
class postActions extends sfActions
{
public function executeList()
{
$this->posts = PostPeer::doSelect(new Criteria());
}
}
apps/blog/modules/post/templates/listSuccess.php
<h2>Blog anasayfa</h2>
<?php foreach ($posts as $post): ?>
<div class="blog-item">
<h2><?=link_to($post->getTitle(), '@post_detail?stripped_title='.$post->getStrippedTitle())?></h2>
<div class="blog-info">
<span class="date">
<?=$post->getCreatedAt()?>
</span>
</div>
<div class="blog_body">
<?=$post->getBody()?>
</div>
</div>
<?php endforeach; ?>
Tabii ki Symfony ile içeriği göstermeniz için yapmanız gerekenler sadece bu kadar değil. @post_detail olarak çağırdığımız routing parametremizi de ayarlamamız gerekiyor
apps/blog/config/routing.yml
# default rules
post_detail:
url: /post/detail/:stripped_title
param: { module: post, action: show }
gibi, gibi.
Bunun yanında Symfony ile hazırlanmış ve size adım, adım Symfony’yi nasıl kurup, yapılandırıp kullanabileceğinizi anlatan bir örnek uygulama da Symfony web sayfasında bulunuyor.
Dökümantasyon bakımından Symfony daha zengin durumda. Hatta framework‘ü anlatan basılmış bir kitap bile var.
Sadede gelirsek.
Php ile hazırlanmış pek çok framework mevcut. Akıllıca olan, deneyip iyi ve doğru yanlarını kavramak ve size en uygun olanını seçmek. Gerçekten framework kullanmak gerekiyor mu? Bence evet, belki ilk başlarda zorlayıcı gelebilir ancak işler büyüdükçe frameworklerin size ne kadar fayda sağladığını görüyorsunuz.






Yorumlar