CodeIgniter, PHP üzerine yazılmış ve MVC (Model-View-Controller) kalıbı kullanan bir çatıdır (framework). Eşdeğer PHP çatıları arasından hızlı oluşu, elastikliği ve öğrenim kolaylığı açısından diğerlerinden öne çıkmaktadır. Ancak, CodeIgniter küçük çaplı internet sitelerinde uygulanması dezavantajı nedeniyle, MVC yapılarına ilk başlayan programcılar için tercih edilir.
CodeIgniter, paket kütüphanelerinin yanı sıra kullanıcının yazacağı kendi kütüphanelerini de kabul etmektedir. Bu yazıda CodeIgniter ile Java uygulama çatısı MooTools'un birlikte çalışması için kendimize ait bir kütüphane yazacağız.
Kendi yazdığımız kütüphanelerimizi applicaiton/libraries dizini altına yükleyeceğimiz için önce bu dizin altına mootools.php isimli bir dosya açıyoruz. Dosyayı düzenlemek için bir editör programda açıp ilk satırına aşağıdaki cümleyi ekliyoruz :
|
|
Bu cümle ile birlikte dışarıdan gelecek bir saldırıda kütüphanemizin çalışmasını engellemiş oluruz. Kendi yazacağımız her türlü CodeIgniter kütüphanesi için ilk iş bu satırı eklemek olmalıdır. Ancak, bu satır model, view ve controller dosyalarında olmamalıdır.
Daha sonra kütüphanemizin adının olduğu sınıfı yaratıp, içinde kullanacağımız sabitleri birer değişken ismini atıyoruz:
|
|
Burada $mootools_file değişkeninde mootools'un kullandığımız versiyonunun bulunduğu dizini tanımlıyoruz. Diğer değişkenler de sırasıyla, yeni satır ve tab değişkenleridir.
Mootools kütüphanesi çalıştırıldığında CodeIgniter tarafından kontrol edilecek ilk sınıf kütüphanenin kendi adı ile olan sınıfı, yani Mootools metodudur. Bu metodta, Mootools sınıfı çalıştırılarak kayıtlara (log) sınıf ile ilgili mesajlar gönderilir. Eğer tanımlanan dizinde Mootools dosyası bulunamadıysa hata mesajı olarak ekrana ve kayıtlara bilgi verilir.
|
|
Kütüphanemizi başlatmak için başlangıç metoduna ihtiyacımız olduğu için init() metodunu tanımlıyoruz:
|
|
Kütüphanemizde son olarak yapacağımız iş, kullanacağımız değişik scriptler için amaca uygun kod parçaları yazmak olacak. Örneğin Mootools içinde kullanacağınız yazı editörü MooEditable için yazacağınız metod aşağıdaki gibidir. Bu metodta yer alan değişkenler sizin dosya kurulumunuza göre değişecektir:
|
|
Kütüphanemiz ihtiyacınıza göre zenginleştireceğiniz metodlar ile gelişebilir. Ancak şimdilik bu kadar olduğunu düşündüğümüz kütüphanemizi nasıl yükleyip çağıracağımızı anlatalım. Kütüphanemizi çalıştırmak istediğimiz controller dosyasının içinde, ilgili metoda aşağıdaki kod parçasını yazmamız, kütüphaneyi çağırmamız için yeterlidir:
|
|
Benzer şekilde MooTools için yazılmış bu kütüphaneyi diğer Java uygulama çatıları için de kendiniz geliştirebilirsiniz.
önceki yazı PHP ile Basit Bir Message Board |
sonraki yazı Javascriptin ilginç özelliği |
Güzel bir makale ellerinize sağlık
Codeigniter i çok sevdim ama neden bunu bi şirket geliştiriyor nerde kaldi özgür yazilim ruhu diyenler için sizi şöyle alalım
Bu MVC ve Framework piyasada çok dile dolandığından Zend Framework kullanmıştım yaptığım bir web uygulamasında. Aman Allah'ım neydi o yavaşlık ve çözmek için harcadığım zaman! PHP'de Framework ise kalsın ben almayayım. Tıpkı Rasmus abi gibi...
Bir de şöyle diyor Lerdorf;
He continues on by stating that PHP developers really need to think about performance for not only scalability reasons but for green reasons. If programs were more efficient it would cut the number of data centres and would reduce energy needs as a result.
@CeRBbeR: Ben neden bir şirketin geliştirdiği konusunu fazla önemsemiyorum açıkcası. Çünkü kodlar zaten açık, kullanım kılavuzu da herkesçe malum. Bu işi yapan insanlar da CodeIgniter üzerinden para kazanmak yerine ExpressionEngine isimli bir CMS yazmışlar oradan para kazanıyorlar. Şirket olmasının dezavantajı ileride desteği ve kodları kesmek olabilir. Ancak onda da Kohana gibi kendimiz de kendi MVC çatımızı geliştirebiliriz. Kaldı ki, CodeIgniter'ın da yeni versiyonlarında yeni kütüphaneler ve bir kaç düzenleme dışında çok kaydadeğer bir değişiklik görülmemesi sebebiyle, mevcut haliyle bile bu çatının uzun süre ihtiyaçlarımızı karşılayacak gibi duruyor.
Yine de tabii ki seçim programcının, herkes istediği çatıyı kullanmakta özgür.
@Alpharabius :
PHP'de Framework ise kalsın ben almayayım.
Bana kalırsa çatı kullanımının, seçilen dil ile fazla bir ilgisi yok. Kullanım zorluğu varsa hepsinde var. Bildiğiniz üzere programlamada kalıp (pattern) kullanımı, dörtlü çetenin hazırladığı "Design Patterns" isimli kitapta anlatılmaktadır. MVC kullanımı da teorisi 1970'lere dayanmakla birlikte bu kitapta güzel özetlenmiştir. Orada da bahsedildiği gibi tasarım kalıpları herhangi bir dilde yazılabilir. Bunda amaç daha az efor ile daha kullanışlı kodlar yazmaktır.
Eğer ilgilenirseniz, bu kalıplar ile ilgili olarak IBM'in web sitesinde anlatımlı ve PHP üzerine uygulamalı kod betikleri bulabilirsiniz.
Görüşleriniz için teşekkür ederim. Bir de yazdığım yazı da düzeltme olacak (gerçi düzelt butonu ile yaptım ancak, onay gerekiyor sanırım): Son grupta yer alan kod şöyle olmalıydı:
|
|
Framework lerin yavaslıgı bılınmeyen bir sorun degil. Ancak aşılmıcak bir sorunda degil. O Çatıyı kuran yazılımcı yeterlı bılgı ve deneyim sahıpse ve dogru configurasyonu uygularsa hız sorunu sorun olmaktan çıkıyor. Bununla birlikte tonlarca satır koddan sıyrılmıs oluyor ve sitenıze eklıyegınız yenı ozelıklere dogru yelken acabiliyorsunuz.
MVC çatıları, uygun yerlerde kullanılırsa çok hızlı çalışırlar. Nesne tabanlı uygulamalar olması (Object Oriented Programs) sebebiyle, küresel değişkenlerin (global variables) tüm uygulamalarda taşınmasını ve böylelikle hafızanın aşırı kullanımını, veritabanı sorgularını -eğer düzgün yazılmışlarsa- çalışma hızlarını arttırırlar.
Kısacası MVC çatılarını dopru yerde uyguluyorsanız, yavaşlık değil aksine hız kazandırırlar. Bu nedenle, MVC çatılarını öğrenmekte mutlaka fayda vardır.
pillinetwork sitelerine yorum ekleyebilmek ve daha fazlası için, üye olun ya da giriş yapın.
Nokta ve pilli ortak yapımı olan kodaman.org hep birlikte içerik üretip gelirini yazarları ile paylaştığımız kolektif bir kod yazarları blogudur. Siz de katılabilirsiniz.