CodeIgniter, klasik MVC yapısı altında kullanılabildiği gibi modüler bir yapı ile değiştirilerek de kullanılabilir. Klasik kullanım, application dizini altına controller, model ve view dizinleri ile kullanım imkanı sunmaktadır.
Modüler yapıda ise her controller dosyası, kendi isimlerinde açılan dizinler altına kopylananan MVC dizinlerinden çalışmak mümkündür. Örnek applicaiton yapısı aşağıdaki şekilde görüntülenecektir:
controllers/ models/ modules/ ->login/ -->controllers/ - login.php -->models/ - login_model.php -->views/ - login_view.php views/
Bu tarz modüler kullanım bazı açılardan klasik kullanıma göre daha avantajlıdır. Bu avantajları özetlersek:
- Her modül kendi dosyalarına sahip olacağı için, kodların geri kalanı etkilenmeden sistemin değiştirilmesi mümkündür.
- Her modül, dizinler altında sadece kendi dosyaları bulunduğundan dosyaların yönetimi daha kolaydır.
- Modüller arası ortak dosyaların kullanımına izin verilmektedir. Bu nedenle kodların tekrar tekrar yazılmasına gerek yoktur.
- Url satırı değişmeden yine aynı şekilde controller/method/variable formatı ile programa erişim mümkündür.
Bu amaçla kullanılan moduler ayırma kütüphanelerinden Modular Extensions - HMVC kütüphanesini, CodeIgniter 2.0.2 üzerine kuralım.
- Öcelikle CI kurulumunu yaptığınızı ve Welcome sayfasını düzgün gördüğünüzü kabul ediyorum.
- Bu adresten HVMC dosyasını indirip bulabileceğiniz bir yere kopyalayınız.
- Zıp dosyasını applications dizini altındaki third_party dizini altına kopyalayınız.
- Applicaitons dizini altına modules/welcome/controllers dizini oluşturun ve application/controllers dizini altındaki welcome.php dosyasını yeni yerine kopyalayın.
- application/modules/welcome/views dizinini oluşturup altına applicaiton/views dizini altındaki welcome_message.php dosyasının yeni yerine kopyalayın.
- Tarayıcınızda URL /index.php/welcome yazınca "Welcome to CodeIgniter" gördüğünüzde kurulum tamamlanmıştır.
Modulleriniz içinde kullanacağınız controller örnek iskeleti aşağıdaki gibi olmalıdır.
<?php
class Xyz extends MX_Controller
{
function __construct()
{
parent::__construct();
$this->load->library('form_validation');
$this->form_validation->CI =& $this;
}
}
Yukarıdaki kodlardan da izleyeceğiniz üzere, controller dosyamız CI_Controller yerine MX_Controller dosyasından extend edilmiştir. Parent olarak ise __construct fonksiyonu gösterilmiştir. Controller içinde form_validation kütüphanesi kullanılmak istenirse, callback opsiyonlarının çalışmasını sağlamak üzere kütüphane, $this->form_validation->CI değişkenine atanır.
Daha önce başka dizinlerde yer alan kodlarınızı çağırmak isterseniz ise aşağıdaki yolu kullanmalısınız:
Modules::run('module/controller/method', $param1, $param2);
Modüler kullanım, kodlarınızı değiştirmek, yeni modüller eklemek istediğinizde sizlere kolaylık sağlaması ve yüzlerce dosya içinde ilgili dosyalarınızı kısa zamanda bulmanızı sağlamak açısından kolaylık sağlayacaktır.
Ekleme - 05.09.2011 Yukarıdaki yazıda anlatılması atlanan konu, Modular Extensions - HMVC paketi içinden çıkan core dizini altındaki dosyaların, CI kurulumunda bulunan applications/core dizini altına kopyalanması gerekliliğidir.
Ekleme - 17.04.2012 CI Versiyon 2.1.0 ile birlikte gerekli bir düzeltme: Form_validation kütüphanesini kullanmak için applicaitons/libraries dizini altına MY_Form_validation.php dosyasını açmalı ve içinde $CI değişkenini public yapmak gereklidir:
<?php
/** application/libraries/MY_Form_validation **/
class MY_Form_validation extends CI_Form_validation
{
public $CI;
}
Yazarı : Fatih BAZMAN | Yorum Ekle | Etiketler : hmvc modular CI2.0 CI2.1
Türkiye