Merhaba arkadaşlar;
Bu yazımızda php geliştirenlerin oldukça aşina olduğu bir mvc ürünü olan Codeigniter frameworkünün kullanımını anlatacağım. 2006 yılından beri geliştirilmesine devam edilen CI (Codeigniter), an itibari ile 3.1 sürümünde. Codeigniter 4.0 sürümünün ise yakın bir süre içerisinde çıkmasını bekliyoruz.
Codeigniterın startup tarihinin oldukça eskiye dayanması ve geliştirme sürecinin halen devam ediyor olması nedeniyle php yazılım uzmanları için doğru bir mvc frameworkü olduğunu düşünüyorum.
MVC yapıısının ne olduğu konusunda internet üzerinde bir çok makale okuyabilirsiniz. Ancak ben düz php yazanların hızlı bir şekilde geçişini sağlayacak basit bir makale yazmak istiyorum.
Not : Yazımın devamına sözkonusu frameworkün adını CI şeklinde ifade ederek devam edeceğim.
Not : Makaleyi okumaya başlamadan önce php programlama dilinde sınıf ve fonksiyon oluşturmak, başka sınıflardandan miras almak gibi temel konular hakkında bilgi sahibi olmanız gerekiyor. Bu konuda kendinizi pekiştirmek için linki tıklayınız.
Sayfadaki konu anlatımı ve php örnekleri sizin için yeterli gelecektir.
Aşağıdaki videoda kurulum işlemini hızlı bir şekilde gerçekleştirmiş. Aslında yapılan işlem çok basit. CI'nin orjinal web sitesinden dosyaları alıp local veya hosting sunucunuza olduğu gibi kopyalayın.
Eğer CI'yi bilgisayarınıza nasıl kopyalacağınızı biliyorsanız bu adımı geçebilirsiniz. Video'daki eğitmen dosyaları kopyaladıktan sonra welcome view'i üzerinde değişiklikler yaparak ekrana basmış.
Geliştirdiğiniz web sitelerinde sistem yapısını GET yöntemi ile belirliyordunuz. MVC frameworklerin hepsinde bu işleri yapabilmeniz için controllers tanımlamak zorundasınız.
Örnek olarak;
Aşağıdaki kodu kopyalayıp, bilgisayarınızda oluşturduğunuz /application/controllers/Urun.php dosyasını açıp php taglarının arasına dikkatlice yapıştırın.
Adres çubuğunuza, http://demoadres.com/urun/id/14 şeklinde adres yazdığınız taktirde;
Not : Oluşturduğumuz Urun.php ile tanımladığımız Urun sınıfının isimleirnde U harfinin büyük olduğu dikkatinizi çekmiştir. Başka dosya veya controller sınıfı oluşturuken bu hususu dikkate alınız.
a) defined('BASEPATH') : Sitemizin include bazlı hacking ataklarını engellemek amacıyla yazılmış satırdır. Bu satırı bütün oluşturduğumuz dosyalara yazıyoruz. Tabi bununla birlikte CI bir çok güvenlik önlemini ve metodu hazır bir şekilde ayağınıza getiriyor. Ancak bu konulara daha sonra değineceğiz.
b) class Urun extends CI_Controller : Şayet bir controller oluşturmak istiyorsanız zaruri olarak CI_Controller class'ından miras almanız gerekiyor. MVC yapılarının hemen hemen hepsi bu şekilde çalışıyor. Yani, CI_Contoroller sınıfından türemiş controller türünde Urun sınıfımız var artık. Tabi buna benzer ilişki model oluştururken de karşımıza çıkacak . Örnek olarak Urun isminde tanımlayacağımız bir model sınıfını CI_Model sınıfından miras alarak oluşturacağız. Bu konuya daha sonra models bölümünde detaylandıracağız.
c) public function index() : Bu bir MVC standardı desek yanlış olmaz sanırım. Controller'ın varsayılan olarak çalışacak fonksiyonudur.
Örnek olarak projenizde ürünler anasayfası olduğunu düşünün.
http://demosite.com/urun şeklinde tarayıcıdan erişim yaptığnız zaman urun controlleri içerisinde varsayılan olarak önce index() fonskiyonu çalışır akabinde içeriğini ekrana getirir.
Yukarıda tanımladığımız controllerdaki index() fonksiyonu
d) public function id($id) : GET yöntemiyle geliştirdiğimz sayfalardaki gibi yapısnı kendi belirlediğimiz fonksiyondur.
Senaryomuz gereği Urun controller içerisinde tek bir ürün verisi çekilecek. Bunun için id şeklinde bir fonksiyon oluşturduk. GET yönteminde aşina olduğumuz ürün id'sini belirleyen anahtar değşkeni fonksiyon içerisinde argüman olarak tanımladık.
Şimdi tarayıcımızı http://demosite.com/urun/id/12 şeklinde yazdığımız taktirde bizim id fonksiyonumuzu çağıracak ve içeriğini görüntüleyecek.
e) Controller kısmı hakkında farklı bir senaryo düşünelim.
Şimdi böyle bir yapıyı CI üzerinde nasıl gerçekleştirebiliriz küçük bir örnek ile açıklayalım.
yazdığınızda aşağıdaki mesaj ekrana gelecektir.
Bu makalede sadece controllerdan bahsettik. Sistemi kullanmaya başlamak için en azından models ve views yöntemleri konusunda da bilgimizin olması gerekiyor. Controllers tanımlamayı anladıysanız diğer yöntemleri öğrenmekte zorluk çekmeyeceksiniz. Bir sonraki makalelerde Model'e controllerdan istek gönderip verileri oluşturmayı, daha sonra elimizdeki verileri view 'e ulaştırıp istediğimiz html şablonunda bilgilerimiz ekrana basmayı öğreneceğiz.
Bu yazımızda php geliştirenlerin oldukça aşina olduğu bir mvc ürünü olan Codeigniter frameworkünün kullanımını anlatacağım. 2006 yılından beri geliştirilmesine devam edilen CI (Codeigniter), an itibari ile 3.1 sürümünde. Codeigniter 4.0 sürümünün ise yakın bir süre içerisinde çıkmasını bekliyoruz.
Codeigniterın startup tarihinin oldukça eskiye dayanması ve geliştirme sürecinin halen devam ediyor olması nedeniyle php yazılım uzmanları için doğru bir mvc frameworkü olduğunu düşünüyorum.
MVC yapıısının ne olduğu konusunda internet üzerinde bir çok makale okuyabilirsiniz. Ancak ben düz php yazanların hızlı bir şekilde geçişini sağlayacak basit bir makale yazmak istiyorum.
Not : Yazımın devamına sözkonusu frameworkün adını CI şeklinde ifade ederek devam edeceğim.
Not : Makaleyi okumaya başlamadan önce php programlama dilinde sınıf ve fonksiyon oluşturmak, başka sınıflardandan miras almak gibi temel konular hakkında bilgi sahibi olmanız gerekiyor. Bu konuda kendinizi pekiştirmek için linki tıklayınız.
Sayfadaki konu anlatımı ve php örnekleri sizin için yeterli gelecektir.
1) CI Kurulumunu Nasıl Yapacağım?
Aşağıdaki videoda kurulum işlemini hızlı bir şekilde gerçekleştirmiş. Aslında yapılan işlem çok basit. CI'nin orjinal web sitesinden dosyaları alıp local veya hosting sunucunuza olduğu gibi kopyalayın.
Eğer CI'yi bilgisayarınıza nasıl kopyalacağınızı biliyorsanız bu adımı geçebilirsiniz. Video'daki eğitmen dosyaları kopyaladıktan sonra welcome view'i üzerinde değişiklikler yaparak ekrana basmış.
2) Kodlarımı nereye yazacağım?
application klasörü altında dosyalar oluşturup kodlar yazacağız. İlk başta controllers, models ve views klasörlerine odaklanalım. İlerleyen makalelerimizde diğer klasörlere de değineceğiz.
3) Controllerın amacı nedir?
Geliştirdiğiniz web sitelerinde sistem yapısını GET yöntemi ile belirliyordunuz. MVC frameworklerin hepsinde bu işleri yapabilmeniz için controllers tanımlamak zorundasınız.
Örnek olarak;
http://demosite.com/urun.php?id=14şeklinde url yapısına sahip bir web siteniz var. Bu yapıda bir senaryoyu CI üzerinde gerçekleştirmek için controller klasörü altında Urun.php şeklinde dosya oluşturup örnekteki gibi bir controller tanımlamamız gerekiyor.
Aşağıdaki kodu kopyalayıp, bilgisayarınızda oluşturduğunuz /application/controllers/Urun.php dosyasını açıp php taglarının arasına dikkatlice yapıştırın.
defined('BASEPATH') OR exit('No direct script access allowed');
class Urun extends CI_Controller{
public function index(){
echo "Ürun ana sayfasına hoşgeldiniz.";
}
public function id($id){
echo $id . " numaralı ürunu getir";
}
}
Adres çubuğunuza, http://demoadres.com/urun/id/14 şeklinde adres yazdığınız taktirde;
14 numaralı ürunu getirmesajı ile karşılaşacaksınız. Şimdi ilk yazdığımız kodu biraz inceleyelim.
Not : Oluşturduğumuz Urun.php ile tanımladığımız Urun sınıfının isimleirnde U harfinin büyük olduğu dikkatinizi çekmiştir. Başka dosya veya controller sınıfı oluşturuken bu hususu dikkate alınız.
a) defined('BASEPATH') : Sitemizin include bazlı hacking ataklarını engellemek amacıyla yazılmış satırdır. Bu satırı bütün oluşturduğumuz dosyalara yazıyoruz. Tabi bununla birlikte CI bir çok güvenlik önlemini ve metodu hazır bir şekilde ayağınıza getiriyor. Ancak bu konulara daha sonra değineceğiz.
b) class Urun extends CI_Controller : Şayet bir controller oluşturmak istiyorsanız zaruri olarak CI_Controller class'ından miras almanız gerekiyor. MVC yapılarının hemen hemen hepsi bu şekilde çalışıyor. Yani, CI_Contoroller sınıfından türemiş controller türünde Urun sınıfımız var artık. Tabi buna benzer ilişki model oluştururken de karşımıza çıkacak . Örnek olarak Urun isminde tanımlayacağımız bir model sınıfını CI_Model sınıfından miras alarak oluşturacağız. Bu konuya daha sonra models bölümünde detaylandıracağız.
c) public function index() : Bu bir MVC standardı desek yanlış olmaz sanırım. Controller'ın varsayılan olarak çalışacak fonksiyonudur.
Örnek olarak projenizde ürünler anasayfası olduğunu düşünün.
http://demosite.com/urun şeklinde tarayıcıdan erişim yaptığnız zaman urun controlleri içerisinde varsayılan olarak önce index() fonskiyonu çalışır akabinde içeriğini ekrana getirir.
Yukarıda tanımladığımız controllerdaki index() fonksiyonu
Ürun ana sayfasına hoşgeldiniz.şeklindeki içeriği ekrana basar.
d) public function id($id) : GET yöntemiyle geliştirdiğimz sayfalardaki gibi yapısnı kendi belirlediğimiz fonksiyondur.
Senaryomuz gereği Urun controller içerisinde tek bir ürün verisi çekilecek. Bunun için id şeklinde bir fonksiyon oluşturduk. GET yönteminde aşina olduğumuz ürün id'sini belirleyen anahtar değşkeni fonksiyon içerisinde argüman olarak tanımladık.
Şimdi tarayıcımızı http://demosite.com/urun/id/12 şeklinde yazdığımız taktirde bizim id fonksiyonumuzu çağıracak ve içeriğini görüntüleyecek.
e) Controller kısmı hakkında farklı bir senaryo düşünelim.
http://demosite.com/urunler.php?stok=mevcut&siralama=coksatilan
Şimdi böyle bir yapıyı CI üzerinde nasıl gerçekleştirebiliriz küçük bir örnek ile açıklayalım.
defined('BASEPATH') OR exit('No direct script access allowed');
class Urun extends CI_Controller{
public function index(){
echo "ana sayfa";
}
public function hepsi($stok = '', $siralama = ''){
echo $stok . 'olanlar ' . $siralama . ' şeklinde listelenecek';
}
public function id($id){
echo $id . " numaralı ürunu getir";
}
}hepsi($stok = '', $siralama = '') yapısında bir fonksiyon tanımladık. $stok ve $sirailama değerlerinin boş gelebileceğini öngörerek "" şeklinde boş bir string ifade set ettik. Adres çubuğunahttp://demosite.com/urun/hepsi/mevcut/coksatilan
yazdığınızda aşağıdaki mesaj ekrana gelecektir.
mevcut olanlar coksatilan şeklinde listelenecek
Makale Sonu
Bu makalede sadece controllerdan bahsettik. Sistemi kullanmaya başlamak için en azından models ve views yöntemleri konusunda da bilgimizin olması gerekiyor. Controllers tanımlamayı anladıysanız diğer yöntemleri öğrenmekte zorluk çekmeyeceksiniz. Bir sonraki makalelerde Model'e controllerdan istek gönderip verileri oluşturmayı, daha sonra elimizdeki verileri view 'e ulaştırıp istediğimiz html şablonunda bilgilerimiz ekrana basmayı öğreneceğiz.
Yorumlar