Welcome to Abdul Malik Ikhsan's Blog

Zend Framework Modular Application for Efficient Development Process

Posted in Tutorial PHP, Zend Framework by samsonasik on December 19, 2009

Coba perhatikan 2 gambar berikut :

Secara sekilas, gambar bagian kanan ‘seolah’ lebih sederhana daripada bagian kiri, hanya saja, ketika ruang lingkup aplikasi meluas, maka lebih menguntungkan jika kita menggunakan struktur bagian kiri. Pada gambar struktur bagian kiri, aplikasi disusun secara modularitas, seperti xaraya , sehingga ketika ada pengupdate-an suatu modul di sisi client, maka kita tidak perlu mencomot controllers, models, dan view satu-satu dari aplikasi, tapi cukup satu modul itu dicopy, dan ditimpa, just copy, and paste.

Persiapan untuk menggunakan cara ini, yang pertama, siapkan file konfigurasi (ex : application.ini ) di dalam folder config.
contoh :

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0

;Database Configuration
resources.db.adapter         = "PDO_PGSQL"
resources.db.params.host     = "localhost"
resources.db.params.username = "ikhsan"
resources.db.params.password = "ikhsan"
resources.db.params.dbname   = "zend_prj"

;resource module
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules = ""

;Bootstrap
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"

[staging : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

Kalau sudah, langkah selanjutnya adalah set master bootstrap yang ada di direktori application.

<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{

 protected function _initAutoload()
 {
 $autoloader = new Zend_Application_Module_Autoloader(array(
 'namespace' => '',
 'basePath'  => APPLICATION_PATH.'/modules/default'
 ));

 return $autoloader;
 }

 protected function _initDoctype()
 {
 $this->bootstrap('view');

 $view = $this->getResource('view');
 $view->doctype('XHTML1_STRICT');

 return $view;
 }

 protected function _initView()
 {
 $view = new Zend_View();
 $sesi = new Zend_Session_Namespace();

 $view->headTitle('Zend Project');

 //set layout directory ...
 $layout = (null!=$sesi->sesiuser) ?"layout" : "layoutlogin";

 //contoh set theme style....
 $theme = "zend_prj";

 Zend_Layout::startMvc(array(
 'layoutPath' => PUBLIC_PATH."/themes/$theme/$layout/scripts",
 'layout' => 'layout'
 ));

 return $view;
 }

}
?>

Setelah itu, kita set default bootstrap module (nama class = Namamodule_Bootstrap ) –> file Bootstrap dapat dicopy untuk tiap module 🙂

<?php
class Default_Bootstrap extends Zend_Application_Module_Bootstrap
{
 protected function _initView()
 {
 $router = new Zend_Controller_Router_Rewrite();
 $request =  new Zend_Controller_Request_Http();
 $router->route($request);

 $module = $request->getModuleName();
 $module = ($module=='default') ? 'home' : $module;

 $view = new Zend_View();
 $view->headTitle(' : '.$module);

 return $view;
 }

}
?>

Penamaan kelas dalam module dipisahkan oleh namespace masing-masing, jadi kalau kita letakkan file model di dalam module samplemodule misal, ya berarti kita bisa beri nama kelasnya,
misalnya Samplemodule_Model_Examplemodel dengan nama file Examplemodel.php

NB :
untuk PUBLIC_PATH , kita bisa define kan seperti berikut di public/index.php:

defined('PUBLIC_PATH')
 || define('PUBLIC_PATH', realpath(dirname(__FILE__)));

12 Responses

Subscribe to comments with RSS.

  1. sapatuButut said, on December 25, 2009 at 8:39 am

    hehe.. berkunjung…. 🙂

    mas ihsan… ini kejauhan buat ku…
    pengen tutorial donk..
    memuali zend framework…
    kyk dulu dirimu mengajarkan ku CI…
    klo udah ada.. kasih link blog nya dunk.. yang mana…

    thanks…

  2. samsonasik said, on December 26, 2009 at 9:42 am

    coba lihat di http://www.zftutorials.com/

  3. […] sangat membuat capek. Tentang pembandingan aplikasi modular dan tidak modular dapat di lihat di postingan saya yang sebelumnya untuk Zend Framework. Sebenarnya, kalau saya lihat, memang modular aplication membuat performa […]

  4. joshua ibrani sastrawijaya said, on November 10, 2010 at 5:21 am

    mas bisa minta tutorial zend framework ??
    dari level dasar sampai mahir..he..he..mksh

  5. cecep said, on April 18, 2011 at 5:27 pm

    Mas keuntungan file bootstrap.php berada ditiap module bagaimana. Apa ini terlalu boros. klo sistem satu file bootstrap.php kemudian menggunakan modular modul seperti cara diatas bagaimana?

    makasih

  6. samsonasik said, on April 18, 2011 at 6:21 pm

    file Bootstrap.php digunakan untuk menginisialisasi segala resource di tiap module, jika mas cecep tidak mempunyai aturan spesifik terhadap suatu modul, mas cecep bisa saja tuliskan seperti ini saja ( kosong tanpa method ) :

    //module name = blog
    class Blog_Bootstrap extends Zend_Application_Module_Bootstrap
    {
        // module specific bootstrap methods here, if no spesific func, leave empty ...
    }
    
  7. Cecep said, on April 28, 2011 at 5:14 pm

    penerapan disana terlihat lebih simple terutama ketika pemilihan layout bagi yang sudah login atau belum kemudian module. Namun saya coba dengan framework dasar bawaan Zend yang menampilkan Welcome to Zend Framework masih menimbulkan error.

    Bisa diberi contoh penerapannya

  8. samsonasik said, on April 29, 2011 at 1:02 am

    Sebagai contoh sederhana bisa didownload di sini :
    http://www.4shared.com/file/nWGP3GEf/zfmodular_sample.html

  9. elcicko said, on December 23, 2013 at 7:42 am

    waaah…keren ini ga usah pake aplikasi pihak ketiga lagi buat bikin struktur HMVC kaya gini….makasih ya mas tutorialnya 😀


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: