Showing posts with label Zend Framework. Show all posts
Showing posts with label Zend Framework. Show all posts

Tuesday, April 12, 2011

Zend Framework : Konfigurasi dengan Zend_Config (Article #3)

firman.efendi@gmail.com

Sebelum membaca artikel ini, sebaiknya rekan-rekan PHPer membaca kembali pembahasan kita sebelumnya tentang Zend Framework, yaitu artikel yang berjudul Zend Framework : Mari membuat aplikasi web sederhana (Article #2) 

Pada file index.php kita akan menemui baris kode seperti berikut :

$application = new Zend_Application(
                   APPLICATION_ENV,
                   CONFIG_PATH . DS . 'config.ini'
               );

Pertama kali yang dilakukan adalah membuat sebuah Class Object yang diberi label $application. Class Object $application merupakan Class Object Zend_Application yang telah di-create dengan sintaks new.

Untuk inisialisasi, Zend_Application mengambil nilai APPLICATION_ENV dan path file konfigurasi sebagai parameternya. Apa saja yang dikerjakan oleh Class Constructor Zend_Application pada saat inisialisasi ? Berikut ini adalah kode programnya. FYI, versi Zend Framework yang saya gunakan dalam contoh ini adalah 1.10.0


(Klik screenshot untuk Zooming)

Class Constructor diatas menerima 2 parameter, yaitu $environment dan $option, dimana nilai default $option adalah null. Dengan demikian, sebuah aplikasi tidak mesti/kudu/harus memiliki konfigurasi. Saya akan coba jelaskan baris kode diatas dengan sederhana.

Line 78 :
Parameter APPLICATION_ENV akan di simpan dalam object property $_environment. Nilai APPLICATION_ENV untuk contoh aplikasi ini adalah 'production'. Anggap saja aplikasi yang kita bahas sekarang telah berada pada fase 'production'. Object property $_environment memiliki peranan yang besar dalam menentukan konfigurasi seperti apakah yang akan dipakai pada saat aplikasi sedang running. Silahkan merujuk ke subtitle Inheritance in Configuration untuk penjelasan yang lebih rinci.

Line 80-81 :
Autoloader diaktifkan. Autoloader merupakan komponen dasar dalam praktek OOP (Object Oriented Programming) di Zend Framework.
Setelah membahas Zend Config kita akan membahas Zend Loader untuk menjelaskan fungsi dan peran Autoloader.

Line 83-92 :
Pada baris kode ini akan terjadi proses pengolahan data konfigurasi yang pertama kali. Catatan : parameter $option harus berbentuk string, atau object Zend_Config, atau array. Jika parameter berbentuk string, maka nilai dari parameter tersebut adalah path dari file konfigurasi. File konfigurasi yang diizinkan adalah yang berekstensi .ini, .xml, .php, .inc !
Pada aplikasi web yang sedang kita jadikan contoh saat ini, file konfigurasinya adalah config.ini dan pathnya adalah 'C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\application\etc' (lihat artikel #2). So, nilai dari parameter $option (pada contoh ini) adalah 'C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\application\etc\config.ini'

Inheritance in Configuration

Monday, January 17, 2011

Zend Framework : Mari membuat aplikasi web sederhana (Article #2)

firman.efendi@gmail.com

Untuk lebih mempermudah kita dalam memahami cara kerja Zend Framework saya ingin mengajak anda untuk mencoba membuat sebuah aplikasi web sederhana. Pola atau Pattern dalam membuat sebuah aplikasi berbeda-beda antara tiap-tiap developer. Pola atau Pattern dari aplikasi web yang saya jadikan contoh di sini belum tentu efektif bagi developer lain. Namun paling tidak, aplikasi sederhana ini bisa memberikan kemudahan bagi kita untuk mengenal Zend Framework lebih mendalam lagi.

Baiklah, kita akan memulainya dari menjabarkan struktur folder dan file. Pada contoh ini aplikasi web diletakan pada folder root. Agar lebih fokus, tiap sub folder tidak akan dijabarkan selengkap-lengkapnya, seperlunya saja sesuai dengan tema dan judul pembahasan.

Sekarang mari kita cermati susunan folder dan sub folder dibawah ini ! Struktur ini akan membantu kita dalam memahami source code pada file index.php

--- htdocs
      --- application
            --- core
            --- design
            --- etc
                  --- config.ini
            --- locale
      --- cache
      --- images
      --- library
            --- Zend
                  --- Application.php
      --- js
      --- css

      --- index.php

Folder application memiliki 4 (empat) sub folder yaitu core, design, etc, dan locale. Sub folder core menampung file-file Model dan Controller dari tiap-tiap modul. Sub folder design menampung file-file html dari tiap-tiap modul. Sub folder etc menampung file-file konfigurasi global. Sub folder locale menampung file-file localization. Data cache akan ditempatkan pada folder cache. File gambar pada folder images. File javascript pada folder js. File css pada folder css. Zend Framework dan library pendukung akan ditempatkan pada folder library.

Selanjutnya, kita akan membuat file index.php dengan source code berikut ini :

<?php

define('DS', DIRECTORY_SEPARATOR);
define('BASE_PATH', realpath(dirname(__FILE__)));
define('APPLICATION_PATH', BASE_PATH . DS . 'application');
define('CONFIG_PATH', APPLICATION_PATH . DS . 'etc');
define('APPLICATION_ENV', 'production');

require_once 'library/Zend/Application.php';

$application = new Zend_Application(
                    APPLICATION_ENV,
                    CONFIG_PATH . DS . 'config.ini'
               );

$application->bootstrap()
            ->run();

?>

Pertama-tama kita harus mendefinisikan beberapa variable dan path. Agar fleksibel dalam menetapkan sebuah path, sebaiknya kita menggunakan konstanta DIRECTORY_SEPARATOR sebagai format pemisah direktori. Setelah itu kita definisikan sebagai DS agar lebih singkat. Kemudian mendefinisikan BASE_PATH, APPLICATION_PATH, CONFIG_PATH dan APPLICATION_ENV. Untuk aplikasi contoh ini, APPLICATION_ENV langsung saya set menjadi "production". Bisa anda set menjadi "development" manakala aplikasi ini masih dalam tahap Pengembangan. Bisa juga di-set menjadi "testing" manakala aplikasi ini masih dalam tahap Pengujian. APPLICATION_ENV akan saya coba diskusikan lebih detail dengan teman-teman pada pembahasan Zend_Application.

Logika untuk mendapatkan value dari definisi BASE_PATH, APPLICATION_PATH, dan CONFIG_PATH saya yakin teman-teman sudah pada mengerti konsepnya. Jika disimulasikan dari komputer saya, maka :

DS = ‘\’
BASE_PATH = ‘C:\Program Files\Apache Software Foundation\Apache2.2\htdocs’
APPLICATION_PATH = ‘C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\application’
CONFIG_PATH = ‘C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\application\etc’

Kita memerlukan file 'library/Zend/Application.php' agar bisa menggunakan class Zend_Application. Pertama-tama file tersebut harus di-load oleh sistem, maka pada index.php kita harus secara eksplisit menyertakannya dengan sintaks require_once. Zend_Application adalah central class dari setiap aplikasi web yang dibangun dengan Zend Framework.

Selanjutnya yang harus kita lakukan adalah membuat sebuah Class Object yang diberi label $application. Class Object $application merupakan Class Object Zend_Application yang telah di-create dengan sintaks new.

$application = new Zend_Application(
                   APPLICATION_ENV,
                   CONFIG_PATH . DS . 'config.ini'
               );

Untuk inisialisasi, Zend_Application memerlukan parameter APPLICATION_ENV dan path dari file konfigurasi global. Apa saja yang dikerjakan oleh Class Object Zend_Application pada saat inisialisasi ? Akan saya coba share di pembahasan Zend_Application.

Kemudian Class Object $application melakukan bootstrap dan setelah itu aplikasi dijalankan (run). Apa saja yang terjadi pada saat Bootstrap dan pada saat aplikasi dijalankan? Akan saya coba share di pembahasan berikutnya. Pokoknya step by step.

Tiada gading yang tak retak, Tiada manusia yang tak punya khilaf.

To be continued

Thursday, January 6, 2011

Zend Framework : Pendahuluan (Article #1)

firman.efendi@gmail.com

Zend Framework adalah sebuah framework open source yang digunakan untuk pengembangan aplikasi berbasis web. Zend Framework menggunakan PHP versi 5. Bagi anda yang terbiasa menggunakan metode Object Oriented Programming, maka Zend Framework bisa menjadi salah satu alternatif. Disamping itu Zend Framework juga menerapkan MVC (Model/View/Controller).

Tiap komponen Zend Framework dibuat agar satu dengan yang lainnya tidak saling bergantung atau paling tidak memiliki ketergantungan yang minimum satu dengan yang lainnya. Anda bisa menggunakan sebuah komponen tanpa harus memanggil komponen yang lain. Meskipun antar komponen dapat digunakan terpisah dan berdiri sendiri, tetapi ketika mereka digabungkan tiap komponen tersebut akan mampu membentuk sebuah aplikasi berbasis web yang solid.

Apakah anda tipikal programer PHP yang selalu menggunakan pola coding from scratch dan antipati dengan Framework? Sebaiknya anda pertimbangkan kembali untuk menggunakan Framework. Kenapa? Menurut pengalaman orang dan pengalaman saya sendiri didapati bahwa coding from scratch akan banyak menghabiskan waktu anda. Jika anda berkecimpung dalam software development, maka jangan heran seandainya keuangan anda tersendat-sendat. Loh kok bisa begitu ? iya dong, untuk mengajukan tagihan ke klien anda harus bisa memperlihatkan progress (deliverables) yang telah anda capai. Seharusnya progress yang direncanakan akan tercapai dalam sebulan, eh ternyata molor selama 3 bulan gara-gara anda masih berkutat dengan kode-kode program. Masih harus bikin library ini, library itu, function ini, function itu, yang sesungguhnya telah tersedia di sebuah Framework.

Apa saja fitur yang bisa kita manfaatkan dari Zend Framework ? Nah nanti akan kita bahas satu per satu. Apapun kebutuhan aplikasi anda, maka anda akan dengan mudah menemukannya pada Zend Framework.

To be continued