Selasa, 13 September 2011

Zend Framework

Arsitektur Model-View-Controller
Pada pemrograman PHP tradisional, pembuatan suatu aplikasi adalah seperti berikut ini :
<?php
include "common-libs.php";
include "config.php";
mysql_connect($hostname, $username, $password);
mysql_select_db($database);
?>
<?php include "header.php"; ?>
<h1>Home Page</h1>
<?php
$sql = "SELECT * FROM news";
$result = mysql_query($sql);
?>
<table>
<?php
while ($row = mysql_fetch_assoc($result)) {
?>
<tr>
<td><?php echo $row['date_created']; ?></td>
<td><?php echo $row['title']; ?></td>
</tr>
<?php
}
?>
</table>
<?php include "footer.php"; ?>
Sejalan dengan perkembangan waktu, aplikasi seperti diatas menjadi susah untuk dipelihara dan klien terus meminta tambahan – tambahan lain yang mengharuskan kita merubah banyak kode dilokasi file yang berbeda – beda.
Salah satu metode untuk mempermudah pemeliharaan suatu aplikasi adalah dengan cara memisahkan kode-kode menjadi tiga bagian yang terpisah (and biasanya dipecah menjadi beberapa file) :
  • Model
    Bagian dari aplikasi yang berhubungan dengan data spesifik yang akan ditampilkan. Pada kode diatas, konsepnya adalah modul “news”.Pada model ini, semua transaksi masuk kedalam modul “business” sebagai bagian dari aplikasi yang fungsinya untuk mengambil atau menyimpan ke database.
  • View
    Bagian ini merupakan modul yang berhubungan dengan tampilan untuk pengguna. Biasanya berbentuk HTML.
  • Controller
    Modul Controller mengatur dan menggabungkan modul Model dan modul. View untuk memastikan bahwa data yang benar tampil pada halaman web.
     
    Zend Framework menggunakan arsitektur Model-View-Controller (MVC). Cara tersebut digunakan untuk memisahkan suatu aplikasi menjadi beberapa bagian sehingga aplikasi tersebut menjadi mudah ketika dibuat dan mudah dalam pemeliharaan. Kebutuhan Zend Framework membutuhkan syarat – syarat seperti dibawah ini: 

    • PHP 5.1.4 (atau versi diatasnya) 
    • Sebuah web server yang mendukung fungsi mod_rewrite. Tutorial disini menggunakan Apache.

    Memperoleh Framework

    Zend Framework dapat diperoleh di http://framework.zend.com/download dalam format .zip atau format .tar.gz. Sewaktu tulisan ini dibuat, versi 0.7 adalah versi yang terakhir. Anda harus menggunakan versi 0.7 untuk tutorial ini agar bisa berjalan.

    Struktur Direktori
    Dalam pembuatan aplikasi, Zend Framework tidak mengharuskan struktur direktori yang baku, tetapi dalam buku manual merekomendasikan struktur direktori yang standar. Direktori tersebut berasumsi bahwa anda mempunyai kontrol penuh terhadap konfigurasi Apache, tetapi untuk mempermudah hidup, kita akan menggunakan beberapa modifkasi. Mulailah dengan membuat direktori dibawah direktori utama web server yang bernama zf-tutorial . Ini berarti bahwa URL untuk mengakses direktori tersebut adalah http://localhost/zf-tutorial. Buatlah beberapa direktori sesuai struktur dibawah ini untuk menyimpan file – file aplikasi :
    zf-tutorial/
    /application
    /controllers
    /models
    /views
    /library
    /public
    /images
    /scripts
    /styles

    Seperti yang anda lihat, kita mempunyai direktori yang terpisah untuk penyimpanan file seperti model, view dan controller. Gambar – gambar tambahan, script dan file CSS disimpan pada direktori yang terpisah dibawah direktori publik. File Zend Framework akan disimpan pada direktori library. Jika anda menggunakan library yang lain, anda juga dapat menempatkannya disini.

    Ekstrak file arsip yang sudah didownload (dalam contoh disini bernama ZendFramework- 0.6.zip) ke dalam direktori sementara. Semua file dalam arsip akan ditempatkan dalam direktori dibawahnya yang bernama ZendFramework-0.6. Lalu Copy semua file dalam direktori ZendFramework-0.6/library kedalam direktori zf-tutorial/library. Direktori zf-tutorial/library sekarang akan berisi sub-directory yang bernama Zend dan sebuah file yang bernama Zend.php.

    Bootstrapping
    Bagian ini membahas Zend Framework’s controller, Zend_Controller didesain untuk mendukung alamat pengaksesan website dengan alamat yang bersih. Untuk mengaktifkannya, semua permintaan halaman diharuskan untuk melalui file yang bernama index.php, yang dikenal sebagai bootstrapper. Fasilitas ini memberikan akses kepada kita untuk menangani semua alamat website dan untuk memastikan bahwa semua variable atau kondisi telah disetting secara benar. Fasilitas ini diaktifkan dengan menggunakan file .htaccess pada direktori root zf-tutorial :
    zf-tutorial/.htaccess
    RewriteEngine on
    RewriteRule .* index.php
    php_flag magic_quotes_gpc off
    php_flag register_globals off

    RewriteRule sangat mudah dipahami dan dapat diartikan “untuk setiap alamat, alihkan ke file index.php”. Disini kita juga akan mengeset beberapa setting di PHP untuk keperluan keamanan dan agar berjalan dengan semestinya. Biasanya pada beberapa konfigurasi yang sudah ada sudah diset secara benar tetapi kita harus memastikannya terlebih dahulu! Perhatikan baik – baik bahwa setting php_flag pada file .htaccess hanya berfungsi jika anda menggunakan modul mod_php pada Apache anda. Jika anda menggunakan CGI/FastCGI, maka anda harus memastikan bahwa settingan pada file php.ini anda sudah benar. Bagaimanapun juga, permintaan untuk gambar, file JavaScript dan file CSS tidak boleh di alihkan kepada bootstrapper kita (index.php). Dengan menyimpan file – file tersebut didalam direktori public, kita dapat merubah sifat redirect tersebut dengan cara membuat versi lain dari file .htaccess yang disimpan pada direktori zf-tutorial/public:
    zf-tutorial/public/.htaccess
    RewriteEngine off

    Sekarang kita akan menambahkan beberapa setting pada file .htaccess untuk memastikan bahwa direktori application dan direktori library tidak dapat diakses dari luar :
    zf-tutorial/application/.htaccess
    deny from all
    zf-tutorial/library/.htaccess
    deny from all
    Ingat bahwa file .htaccess digunakan oleh Apache, konfigurasi directive pada file httpd.conf harus di set ke setting All. Ide tersebut yang menggunakan beberapa file .htaccess diambil dari artikel Jayson Minard’s “Blueprint for PHP Applications: Bootstrapping (Part 2) ”. Saya merekomendasikan anda untuk membaca semua seri dari artikel tersebut.

    File Bootstrap : index.php
    zf-tutorial/index.php adalah file bootstrap kita dan kita akan memulai dengan mengisi file tersebut dengan kode dibawah ini :
    zf-tutorial/index.php
    <?php
    error_reporting(E_ALL|E_STRICT);
    date_default_timezone_set('Europe/London');
    set_include_path('.' . PATH_SEPARATOR . './library'
    . PATH_SEPARATOR . './application/models/'
    Page 4 of 21
    . PATH_SEPARATOR . get_include_path());
    include "Zend.php";
    Zend::loadClass('Zend_Controller_Front');
    // setup controller
    $baseUrl = substr($_SERVER['PHP_SELF'], 0,
    strpos($_SERVER['PHP_SELF'], '/index.php'));
    $frontController = Zend_Controller_Front::getInstance();
    $frontController->setBaseUrl($baseUrl);
    $frontController->setControllerDirectory('./application/controllers');
    $frontController->throwExceptions(true);
    // run!
    $frontController->dispatch();

    Perlu dicatat bahwa kita tidak menulis tanda ?> pada akhir file karena hal tersebut tidak diperlukan dan dapat menghindari error yang susah dilacak seperti adanya kode spasi yang berada setelah tanda ?> .

    Mari kita bahas tentang isi dari file ini.
    error_reporting(E_ALL|E_STRICT);
    date_default_timezone_set('Europe/London');

    Baris diatas memastikan bahwa kita akan melihat semua jenis error yang kita buat (dengan catatan bahwa anda mengeset setting display_errors ke mode on). Kita juga mengeset setting time zone yang dibutuhkan oleh PHP 5.1+. Anda juga dapat mengisi konfigurasi tersebut dengan time zone anda.
    set_include_path('.' . PATH_SEPARATOR . './library'
    . PATH_SEPARATOR . './application/models/'
    . PATH_SEPARATOR . get_include_path());
    include "Zend.php";

    Zend Framework didesain bahwa semua file – file yang diperlukan berada dalam lokasi include. Kita juga mengeset file penempatan model pada direktori include sehingga kita dapat memanggil class model secara mudah. Untuk memulai kita harus menyertakan file Zend.php yang memberikan akses ke class Zend yang mempunyai fungsi static agar kita dapat memanggil class lainnya dari Zend Framework.


     







0 komentar:

Posting Komentar

Template by:

Free Blog Templates