• Menggunakan Pola HMVC di dalam Codeigniter

    Level: MEDIUM
    Karena banyak komentar dari temen2 tentang tutorial ini ada error, maka saya update postingan ini dengan menambahkan sedikit catatan ini. Perlu diperhatikan bahwa ini adalah tutorial CI untuk versi 1.7.x, bukan CI versi 2.x.. karena banyak perbedaan yang ada pada CI sekarang, maka mungkin nanti saya akan buat tutorial CI untuk versi 2.x.. Salah satu perbedaannya yaitu folder ‘applications’ yang ada di luar folder ‘system’ (CI 2.0), sedangkan CI versi 1.7.x masih di dalam folder system.. Jadi ketika mengalami error, silakan download versi 1.7.x (misal: 1.7.2/1.7.3).

    HMVC singkatan dari Hierarchical-Model-View-Controller, yang artinya pola MVC tetapi berupa Hirarki.
    Hampir sama dengan MVC, hanya saja di sini MVC tersebut disimpan di dalam banyak modul, jadi setiap modul terdapat Model, View, dan Controller.

    Nah, selain framework lain seperti Kohana, Zend, dan lain-lain, kita juga dapat menerapkan pola seperti ini di dalam Framework Codeigniter, caranya yaitu dengan menggunakan Modular Extensions, yang dapat Anda load di sini

    Instalasi

    1. Download modular extensions CI di sini.
    2. Di dalamnya, terdapat 3 buah file, yaitu:
      • MY_Router.php
      • Modules.php
      • Controller.php
    3. Simpan ketiga file itu di dalam folder library di CI Anda, yaitu /system/application/libraries/
    4. Buatlah folder modules di dalam /system/application, sehingga terdapat folder baru dengan path: /system/application/modules

    Setelah diinstall, berikut adalah cara penggunaan modular extensions.

    Cara Menggunakan

    Controller disimpan di dalam folder modules/nama_controller. Jadi, buatlah folder baru sebagai nama modul di dalam modules, misalnya bukutamu. Kemudian, buatlah folder baru bernama controllers dan simpan di dalam folder /system/application/modules/bukutamu/.

    Buatlah nama controller yang akan Anda buat, misalnya bukutamu.php dan simpan di dalam folder controllers yang ada di dalam folder bukutamu.

    Kita tidak akan menggunakan folder controllers bawaan dari CI yang ada di folder /system/application/controllers, tetapi kita menggunakan controllers yg ada di dalam masing-masing modul yang ada di dalam folder modules, untuk kasus ini, controller bernama bukutamu.php disimpan di dalam path: /system/application/modules/bukutamu/controllers/

    Begitu juga untuk model dan view, bahkan untuk modul yg berbeda, Anda simpan semua file di dalam masing2 folder dengan nama modul Anda, dan disimpan di dalam folder modules…. sehingga setiap modul mempunyai MVC (Model, View, dan Controller)

    Contoh

    Untuk contoh, kita bisa ambil studi kasus untuk controller User.

    Controller: user.php

    <?php
    class User extends Controller
    {
     
        function __construct()
        {
            parent::Controller();
        }
     
        function index()
        {
            $this->load->view('user/user_view');
        }
     
        // ...
        //............. Kode program Anda
        // ...
     
    }
    ?>

    Controller user.php disimpan di: /system/application/modules/user/controllers/user.php

    Model: user_model.php

    <?php
    class User_model extends Model
    {
     
        function __construct()
        {
            parent::Model();
        }
     
        // ...
        //............. Kode program Anda
        // ...
     
    }
    ?>

    Model user_model.php disimpan di: /system/application/modules/user/models/user_model.php

    View: user_view.php

    Ini adalah view untuk user

    View user_view.php harus disimpan di: /system/application/modules/user/views/user_view.php

    Catatan:
    Untuk penamaan file model dan view, tidak harus user_model.php atau user_view.php, itu sesuai dengan style programming Anda, Anda dapat juga menggunakan nama ini misalnya model: m_user.php dengan view: index.php. Itu tergantung style coding Anda

    Berikut ini contoh struktur path dengan menggunakan modules:

    /system/application/modules/user/controllers/user.php
    /system/application/modules/user/models/user_model.php
    /system/application/modules/user/views/user_view.php
    /system/application/modules/content/controllers/content.php
    /system/application/modules/content/models/content_model.php
    /system/application/modules/content/views/content_view.php
    /system/application/modules/bukutamu/controllers/bukutamu.php
    /system/application/modules/bukutamu/models/bukutamu_model.php
    /system/application/modules/bukutamu/views/bukutamu_view.php

    dst…..

    Catatan:
    Untuk Model, Anda direkomendasikan menyimpannya di luar modular, kenapa? karena pengalaman saya, 1 model itu bisa dipake beberapa modul, jadi untuk memudahkan pencarian, model mending disimpan di struktur default CI, yaitu /system/application/models

    Jika model berada di luar module, maka strukturnya adalah sperti berikut:

    hmvc.JPG

    Apa Kelebihan Menggunakan Pola HMVC?

    Kelebihan dari HMVC yaitu program menjadi modular, yang artinya programmer dapat mengerjakan masing2 module tanpa mengganggu direktori yang sedang orang lain kerjakan. Kedua, jika misalnya kita ingin menggabungkan hasil kerjaan kita dengan orang lain maka sangat mudah, karena kita tinggal mengkopi modul kita ke direktori modules di komputer master, sehingga dengan cara seperti ini kita tidak kesulitan dalam menangani konflik file yang sedang sama-sama diedit (misalnya mengedit folder controller secara bersamaan). Banyak kasus yang dapat dipermudah dengan menggunakan HMVC…

    Salam sukses..
    go Developer Indonesia!

    - Cheyuz

    This entry was posted on Saturday, November 6th, 2010 at 11:58 and is filed under Code Igniter, Tutorial. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
  • 23 Comments

    Take a look at some of the responses we have had to this article.

    1. Nov 6th

      mantaps kang!
      ane juga mulai nyobain dari bawaannya BackEndPro http://www.kaydoo.co.uk/projects/backendpro yang udah modular, tapi folder modulenya disimpen di root. agak bingung pkenya hehehe..
      klo yg ini keliatannya lebih simpel.
      hatur tengkiw.

    2. Nov 6th

      @Toni: yoo sama2 Ton… :) yup, mnurut sy sih mnding yg ini, jangan yg BackEndPro… yg ini lebih simpel tapi berguna.. ;)

    3. Nov 7th

      all the best for you……this is not only other technical in code, BUT your sharing knowledge about it is more important too…. I like IT…:-)

    4. Nov 16th

      @mas doni: hehe iya mas. thanks.. :)

    5. Dec 9th

      Mas…ane newbie mau tanya nie..
      Keuntungan yang menonjol dari HMVC apa ??

    6. Dec 14th

      @fandi: bisa lebih tertstruktur untuk saling berbagi modul antar programmer, jadi setiap programmer bisa mengerjakan masing-masing modul, cukup membuat modulnya dan gabungkan..

    7. Dec 30th

      kayak komponen di joomla yach……

    8. Jan 10th

      @yudo: hehe mungkin gan :)

    9. pinem
      Feb 2nd

      Thanks gan tutornya…

    10. Feb 3rd

      @pinem: sama2 gan ;)

    11. Joey
      Feb 16th

      Thanks buat tutorialnya, gan..mantabzzz!

    12. Feb 24th

      @joey: sip, sama2 gan :D

    13. andy
      Feb 26th

      cara manggil di browsernya gimana a’ …..

      hierarcy folder sayah ….

      root\system\application\modules\user\controllers\user.php

    14. andy
      Feb 26th

      kalau saya panggil di browser

      http://localhost/root

      keluarnya : Welcome to CodeIgniter! …. default.

    15. Mar 2nd

      Kalo cara kases di browsernya sama aza khan bos?
      maklum ane masih newbie neh..

    16. Mar 8th

      @andy: sama kayak manggil MVC biasa kok ;) http://localhost/nama_aplikasi/controller/function

    17. Mar 8th

      @andy: itu belum disetting di route-nya… coba config dulu default_controller di route, ganti dengan controller agan…

    18. Mar 8th

      @noel: sama aja gan… ;)

    19. Mar 9th

      Gan, saya sudah setting di default controller tapi masih error 404.

      Path controller saya di
      system/application/modules/buku/controllers/guestbook.php

      setting di routesnya gmna Gan?
      sudah saya isi path lengkap tpi masih error 404.

      Mohon bantuannya ,thanks

    20. Mar 9th

      @Fandi: oia btw versi CI nya versi brp?? soalnya kalo versi terbaru (2.0) itu ga bisa..

    21. May 16th

      Trims gan, info nya sangat bermanfaat\
      klo untuk CI versi 2 ada ga?

    22. May 18th

      @deddy: ok sip gan… CI 2 blm dibuat gan… soalnya ane masih sibuk skripsi.. :D

    23. denis
      Sep 20th

      Thanks man, sangat membantu saya lg nyari nih, semangat terus post artikel IT nya

      Hidup IT Indonesia…

  • Leave a Reply

    Let us know what you thought.

  • Name(required):

    Email(required):

    Website:

    Message:

    Spam Protection by WP-SpamFree