Development

Documentation/id_ID/book/1.0/01-Introducing-Symfony (diff)

You must first sign up to be able to contribute.

Changes from Version 1 of Documentation/id_ID/book/1.0/01-Introducing-Symfony

Show
Ignore:
Author:
tohenk (IP: 202.152.172.3)
Timestamp:
01/22/08 06:07:06 (10 years ago)
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Documentation/id_ID/book/1.0/01-Introducing-Symfony

    v0 v1  
     1{{{ 
     2#!WikiMarkdown 
     3 
     4Bab 1 - Berkenalan Dengan Symfony 
     5================================= 
     6 
     7Apa yang bisa anda dapatkan dari symfony? Apa yang diperlukan agar dapat menjalankan symfony? Bab ini akan menjawab pertanyaan-pertanyaan tersebut. 
     8 
     9Sekilas Symfony 
     10--------------- 
     11 
     12Sebuah framework mempercepat membangun sebuah aplikasi dengan mengotomatisasi beberapa macam pekerjaan yang bertujuan tertentu. Sebuah framework juga memberi nilai tambah pada struktur kode, membuat pengembang agar menulis kode dengan lebih baik, lebih mudah dibaca, dan kode lebih mudah dipelihara. Pada akhirnya, sebuah framework membuat pemrograman lebih mudah, karena sebuah framework memaket operasi/rutin/perintah yang komplek ke dalam satu perintah yang sederhana. 
     13 
     14Symfony adalah sebuah framework lengkap yang didesain untuk mengoptimalkan pengembangan aplikasi berbasis web dengan menyuguhkan beberapa fitur-fitur andalan. Untuk pemula, symfony mengelompokkan aturan-aturan bisnis aplikasi (business rules), lokiga server, dan tampilan presentasi. Symfony menyediakan bermacam-macam alat dan kelas-kelas yang ditujukan untuk memperpendek waktu pengembangan sebuah aplikasi web yang komplek. Sebagai tambahan, symfony mengotomatisasi tugas-tugas umum sehingga pengembang dapat memfokuskan diri pada spesifikasi aplikasi secara keseluruhan. Sebagai hasil akhir, dengan kelebihan-kelebihan ini berarti bahwa tidak perlu lagi `menemukan` (reinvent the wheel) ketika sebuah aplikasi web baru akan dibangun! 
     15 
     16Symfony secara keseluruhan ditulis menggunakan PHP 5. Symfony telah diuji secara sepenuhnya dalam bermacam-macam proyek dalam dunia nyata, dan sesungguhnya symfony telah digunakan pada website e-business dengan kunjungan yang padat. Symfony kompatibel dengan kebanyakan database engine, seperti MySQL, PostgreSQL, Oracle, dan Microsoft SQL Server. Symfony berjalan di atas platform *nix dan Windows. Berikut fitur-fitur detail symfony. 
     17 
     18### Fitur Symfony 
     19 
     20Symfony dibangun untuk memenuhi kebutuhan-kebutuhan berikut: 
     21 
     22  * Mudah untuk di-install dan dikonfigurasi pada kebanyakan platform (dan dijamin dapat bekerja pada platform standar *nix dan Windows). 
     23  * Tidak tergantung pada Database engine tertentu (Database engine-independent). 
     24  * Dalam banyak pemakaian mudah digunakan, tetapi tetap cukup fleksibel jika digunakan pada pemakaian yang komplek. 
     25  * Didasarkan pada konvensi pemikiran atas konfigurasi--pengembang perlu mengkonfigurasi hanya pada yang diluar aturan. 
     26  * Mengacu pada kebanyakan standar web dan pola-pola desain yang ada. 
     27  * Enterprise-ready--dapat disesuaikan dengan kebijakan dan arsitektur teknologi informasi (TI) yang sudah ada, dan cukup stabil bila digunakan pada proyek jangka panjang. 
     28  * Kode yang mudah dibaca, dengan komentar phpDocumentor, untuk kemudahan perawatan. 
     29  * Mudah untuk dikembangkan, dengan disediakannya integrasi dari vendor library yang lain. 
     30 
     31#### Fitur Otomatisasi Proyek Web 
     32 
     33Kebanyakan dari fitur umum sebuah proyek web yang diotomatisasi oleh symfony adalah sebagai berikut: 
     34 
     35  * Layer internasionalisasi yang built-in yang memperbolehkan penerjemahan baik data maupun antarmuka, dan juga pada lokalisasi isi. 
     36  * Presentasi menggunakan template dan layout yang dapat dibangun oleh desainer HTML tanpa perlu banyak pengetahuan tentang framework symfony itu sendiri. Helper mengurangi jumlah kode presentasi yang ditulis dengan mengenkapsulasi sebagian besar kode ke dalam fungsi yang sederhana. 
     37  * Form didukung dengan validasi dan re-populasi, sehingga dipastikan hanya data yang berkualitas bagus yang ada dalam database dan juga untuk memudahkan pengguna. 
     38  * Output escaping melindungi aplikasi dari serangan atas data yang rusak. 
     39  * Fitur manajemen cache mengurangi penggunaan bandwidth dan beban server. 
     40  * Otentifikasi dan fitur kredensial memfasilitasi pembuatan bagian terbatas (restricted) dan juga untuk menajemen keamanan pemakai. 
     41  * Pe-rute-an (routing) dan URL pintar membuat bagian dari alamat sebuah halaman antarmuka yang membuat mudah dikenali oleh mesin pencari (search-engine friendly). 
     42  * Fitur manajemen e-mail dan API built-in yang memperbolehkan aplikasi web berinteraksi jauh melebihi sebuah browser klasik. 
     43  * Daftar (list) lebih bersifat ramah pengguna (user-friendly) dengan adanya penomoran halaman (pagination) otomatis, pengurutan, dan pemilteran. 
     44  * Faktori, plugin, dan mixin menyediakan kemudahan pengembangan tingkat tinggi. 
     45  * Interaksi Ajax juga mudah diimplementasikan dengan adanya helper one-line yang mengenkapsulasi efek Javascript yang kompatibel antar browser (cross-browser-compatible). 
     46 
     47#### Lingkungan dan Alat Pengembangan (Development Environment and Tools) 
     48 
     49Untuk memenuhi kebutuhan perusahaan-perusahaan yang sudah memiliki panduan garis besar peng-kode-an dan aturan manajemen proyek sendiri, symfony secara keseluruhan dapat dikustomisasi. Symfony menyediakan, secara default, beberapa lingkungan pengembangan yang di-bundle dengan beberapa alat-alat yang dapat digunakan untuk mengotomatisasi tugas-tugas rekayasa perangkat lunak: 
     50 
     51  * Alat code-generation sangat cocok untuk pembuatan prototipe dan administrasi dengan sekali-klik. 
     52  * Framwork pengujian unit dan fungsional (unit and functional testing) secara built-in menyediakan alat yang sempurna pada pengembangan berbasis pengujian (test-driven development). 
     53  * Panel debug mempercepat proses debugging dengan menampilkan seluruh informasi tentang halaman yang sedang dikerjakan oleh pengembang tersebut. 
     54  * Antarmuka baris perintah (command-line) mengotomatisasi pemasangan aplikasi antara dua server. 
     55  * Pengubahan konfigurasi secara langsung dapat dimungkinkan dan bersifat efektif. 
     56  * Fitur logging memberikan administrator detail lengkap tentang aktifitas aplikasi. 
     57 
     58### Siapa yang Membuat Symfony dan Mengapa? 
     59 
     60Versi pertama symfony dirilis pada Oktober 2005 oleh pendiri proyek Fabien Potencier, pengarang pembantu buku ini. Fabien adalah CEO Sensio ([http://www.sensio.com/](http://www.sensio.com/)), sebuah agen web di Perancis yang dikenal dengan tampilan inovatif pada pengembangan web. 
     61 
     62Sebelumnya, pada tahun 2003, Fabien menghabiskan banyak waktu untuk mempelajari alat bantu pengembangan aplikasi web open source dalam bahasa PHP yang sudah ada. Dia menemukan bahwa tidak ada alat-alat bantu tersebut yang memenuhi persyaratan-persyaratan tersebut di atas. Ketika PHP 5 dirilis, dia memutuskan bahwa alat-alat yang tersedia sudah mencapai tingkat yang matang untuk diintegrasikan ke dalam sebuah framework dengan fitur utuh. Dia selanjutnya menghabiskan waktu setahun untuk membangun inti dari symfony, dengan berbasis pada framework Mojavi sebagai Model-View-Controller (MVC), Propel sebagai object-relational mapping (ORM), dan helper template Ruby on Rails. 
     63 
     64Fabien sebenarnya membangun symfony untuk keperluan proyek-proyek Sensio, karena menjadi sebuah framework yang efektif yang pada akhirnya memberikan cara yang ideal untuk membangun aplikasi dengan cepat dan lebih efisien. Symfony juga membuat pengembangan web menjadi lebih intuitif, dan aplikasi yang dilahirkan juga lebih mantap dan mudah dipelihara. Framework ini membuktikan diri ketika digunakan untuk membangun sebuah website e-commerce pada ritel pakaian dalam, dan selanjutnya diterapkan pada proyek-proyek lain. 
     65 
     66Setelah sukses menggunakan symfony untuk beberapa proyek, Fabien memutuskan untuk merilis symfony di bawah lisensi open source. Dia mendonasikan pekerjaanya pada komunitas, untuk mendapatkan timbal balik dari pengguna, untuk menujukkan pengalaman Sensio, dan juga karena hal tersebut menyenangkan. 
     67 
     68>**Catatan** 
     69>Mengapa "symfony" dan bukan "FooBarFramework"? Karena Fabien menginginkan nama pendek yang mengandung huruf s, bagian dari Sensio, dan huruf f, bagian dari framework--mudah diingat dan tidak diasosiasikan ke dalam alat bantu pengembangan yang lain. Juga, dia tidak suka huruf kapital. symfony sudah memenuhi, walau bukan kata dalam Bahasa Inggris yang sesungguhnya, dan symfony juga menjadi sebuah nama proyek. Alternatif nama yang lain yaitu "baguette." 
     70 
     71Agar symfony menjadi proyek open source yang sukses, symfony perlu menyediakan dokumentasi yang ektensif dalam Bahasa Inggris untuk menaikkan rating penerapan. Fabien meminta teman sepekerjaannya di Sensio Fran├žois Zaninotto, pengarang buku ini, untuk menggali lebih jauh ke dalam kode-kode dan menulis sebuah buku online. Pekerjaan ini hanya memakan waktu singkat, dan ketika proyek ini dipublikasikan, symfony sudah didokumentasikan dengan baik sebagai pedoman banyak pengembang. Selanjutnya, tingal sebuah cerita. 
     72 
     73### Komunitas Symfony 
     74 
     75Setelah website symfony ([http://www.symfony-project.org/](http://www.symfony-project.org/)) diluncurkan, banyak pengembang dari berbagai bagian dunia men-download dan meng-install framework symfony, membaca dokumentasi online, dan membangun aplikasi pertama mereka menggunakan symfony, dan dengungan symfony mulai terdengar. 
     76 
     77Framework aplikasi web sudah mulai populer pada saat itu, dan kebutuhan akan framework dengan fitur utuh dalam PHP sangat tinggi. Symfony menawarkan solusi yang memikat dikarenakan kualitas kode yang impresif dan banyaknya dokumentasi tersedia--dua kelebihan utama dibandingkan pemain lain dalam ketegori framework. Kontributor kemudian segera bermunculan, menyediakan perbaikan (patch) dan pengembangan fitur, koreksi dokumentasi (proofreading), dan melakukan hal lain sesuai peranannya. 
     78 
     79Sistem public source repository dan ticketing menawarkan bermacam cara untuk kontribusi, dan semua sukarelawan diundang. Fabien masih menjadi komiter utama pada trunk dari source code repository, dan menjamin kualitas dari kode. 
     80 
     81Sekarang, forum symfony, mailing list, dan chanel Internet Relay Chat (IRC) adalah sebagai tempat layanan support ideal, dengan rata-rata empat jawaban untuk tiap pertanyaan. Pendatang baru meng-install symfony setiap hari, wiki dan code snippets menjadi bagian dari dokumentasi yang banyak dikontribusikan oleh pengguna. Jumlah aplikasi yang dibangun dengan symfony berkembang dengan rata-rata lima aplikasi per minggu, dan terus bertambah. 
     82 
     83Komunitas symfony adalah kekuatan ketiga dari framework ini, dan kami berharap anda segera bergabung dengan komunitas symfony setelah membaca buku ini. 
     84 
     85### Apakah Symfony untuk Saya? 
     86 
     87Baik anda ahli atau pendatang baru dalam PHP 5 dalam pemrograman aplikasi web, anda tetap dapat menggunakan symfony. Faktor utama untuk memutuskan ya atau tidak tergantung dari ukuran proyek anda. 
     88 
     89Jika anda ingin membangun website sederhana dengan lima sampai sepuluh halaman, dengan akses terbatas ke database, dan tidak ada keharusan mempunyai performa yang bagus atau menyediakan dokumentasi, maka seharusnya anda cukup dengan PHP saja. Anda tidak akan memperoleh keuntungan yang lebih dari sebuah framework aplikasi web, dan menggunakan orientasi-obyek atau sebuah model MVC malah memperlambat proses pembangunan. Dan sebagai catatan, symfony tidak dioptimalkan untuk berjalan secara efesien pada shared server dimana skrip PHP hanya dapat dijalankan melalui mode Common Gateway Interface (CGI). 
     90 
     91Di sisi lain, jika anda membangun aplikasi web yang lebih komplek, dengan logika bisnis yang berat, PHP saja tidak cukup. Jika anda berencana me-maintenan dan mengembangkan aplikasi tersebut di kemudian hari, anda perlu kode anda agar cukup ringkas, mudah dibaca, dan efektif. Jika anda ingin menggunakan kemajuan terkini dalam interaksi pemakai (seperti Ajax) dengan cara yang intuitif, anda tidak dapat dengan hanya menulis beratus-ratus baris kode  
     92JavaScript. Jika anda ingin merasa senang dan membangun lebih cepat, maka PHP saja mungkin akan mengecewakan. Dalam kasus ini, symfony cocok untuk anda. 
     93 
     94Dan tentunya, jika anda seorang pengembang web profesional, anda sudah tahu keuntungan menggunakan framework aplikasi web, dan anda membutuhkan sebuah framework yang matang, didokumentasikan dengan baik, dan memiliki komutias yang besar. Jangan cari lagi, symfony adalah solusinya. 
     95 
     96>**TIP** 
     97>Jika anda ingin melihat demonstrasi visual, silahkan melihat screencast yang tersedia di website symfony. Anda akan melihat seberapa cepat dan menyenangkan membangun aplikasi dengan symfony. 
     98 
     99Konsep Dasar 
     100------------ 
     101 
     102Sebelum anda memulai dengan symfony, anda seharusnya sudah mengerti beberapa konsep dasar. Silahkan menuju ke depan jika anda sudah mengerti arti dari OOP, ORM, RAD, DRY, KISS, TDD, YAML, dan PEAR. 
     103 
     104### PHP 5 
     105 
     106Symfony dibangun dengan PHP 5 ([http://www.php.net/](http://www.php.net/)) dan didedikasikan untuk membangun aplikasi web dengan bahasa yang sama. Akan tetapi, pengetahuan yang matang tentang PHP 5 mutlak diperlukan untuk memahami kebanyakan dari framework ini. Versi PHP minimal yang dibutuhkan untuk menjalankan symfony adalah PHP 5.1. 
     107 
     108Pengembang yang sudah menguasai PHP 4 dan bukan PHP 5 sebaiknya berfokus utama pada bahasa orientasi obyek yang baru. 
     109 
     110### Object-Oriented Programming (OOP) 
     111 
     112Object-oriented programming (OOP) tidak akan dijelaskan dalam bab ini. Penjelasannya memerlukan sebuah buku tersendiri! Karena symfony menggunakan mekanisme orientasi obyek yang ada pada PHP 5 secara ekstensif, maka OOP adalah prasyarat yang harus dipenuhi untuk mempelajari symfony. 
     113 
     114Wikipedia menjelaskan OOP sebagai berikut: 
     115 
     116The idea behind object-oriented programming is that a computer program may be seen as comprising a collection of individual units, or objects, that act on each other, as opposed to a traditional view in which a program may be seen as a collection of functions, or simply as a list of instructions to the computer. 
     117 
     118PHP 5 mengimplementasikan paradigma orientasi obyek pada kelas, obyek, method, inheritance, dan banyak lagi. Bagi yang tidak familiar dengan konsep tersebut disarankan untuk membaca dokumentasi PHP yang berkaitan, tersedia di [http://www.php.net/manual/en/language.oop5.basic.php](http://www.php.net/manual/en/language.oop5.basic.php). 
     119 
     120### Metode Magic 
     121 
     122Salah satu kekuatan kemampuan obyek PHP adalah penggunaan metode magic. Metode tersebut dapat digunakan untuk meng-override tingkah laku sebuah kelas tanpa perlu mengubah kode yang lain. Metode ini membuat sintaksis PHP menjadi lebih singkat dan lebih dapat dikembangkan. Metode ini mudah untuk dikenali, karena penamaan metode magic ini selalu diawali dengan dua garis bawah (`__`). 
     123 
     124Sebagai contoh, ketika menampilkan sebuah obyek, PHP secara implisit mencari metode `__toString()` untuk obyek tersebut untuk melihat apakah format tampilan kustom telah ditentukan oleh pengembang: 
     125 
     126    [php] 
     127    $myObject = new myClass(); 
     128    echo $myObject; 
     129    // Akan mencari metode magic 
     130    echo $myObject->__toString(); 
     131 
     132Symfony menggunakan metode magic, sehingga diperlukan pemahaman yang seksama tentang metode magic tersebut. Penjelasan metode magic tersebut terdapat dalam dokumentasi PHP di ([http://www.php.net/manual/en/language.oop5.magic.php](http://www.php.net/manual/en/language.oop5.magic.php)). 
     133 
     134### PHP Extension and Application Repository (PEAR) 
     135 
     136PEAR adalah "sebuah framework dan sistem distribusi bagi komponen PHP yang dapat dipakai lagi." PEAR memperbolehkan untuk men-download, meng-install, meng-upgrade, dan meng-uninstall skrip PHP. Ketika menggunakan sebuah paket PEAR, anda tidak perlu kuatir dimana harus meletakkan skrip, bagaimana caranya agar mereka tersedia, atau bagaimana cara untuk mengembangkan command-line interface (CLI). 
     137 
     138PEAR adalah proyek yang dikembangkan oleh komunitas yang ditulis dalam PHP dan disertakan dalam distribusi standar PHP. 
     139 
     140>**TIP** 
     141>Di website PEAR, [http://pear.php.net/](http://pear.php.net/), tersedia dokumentasi dan paket-paket yang dikelompokkan berdasarkan kategori-kategori. 
     142 
     143PEAR merupakan cara kebanyakan profesional untuk meng-install vendor library dalam PHP. Symfony menyarankan menggunakan PEAR sebagai titik pusat instalasi guna pemakaian symfony dalam beberapa proyek. Plugin symfony juga merupakan paket PEAR dengan konfigurasi khusus. Framework symfony sendiri juga tersedia dalam bentuk paket PEAR. 
     144 
     145Anda tidak perlu tahu semua sintaksis PEAR untuk menggunakan symfony. Anda hanya cukup mengerti apa itu PEAR dan apakah sudah ter-install. Anda dapat mengecek apakah PEAR sudah ter-install dalam komputer dengan mengetikkan perintah berikut dalam CLI: 
     146 
     147    > pear info pear 
     148 
     149Perintah ini akan menampilkan nomor versi PEAR yang ter-install. 
     150 
     151Proyek symfony memiliki repositori PEAR, atau chanel sendiri. Sebagai catatan chanel tersebut hanya tersedia pada versi PEAR mulai 1.4.0, jadi anda harus meng-upgrade jika versi PEAR anda lebih lama. Untuk meng-upgrade PEAR, gunakan perintah berikut: 
     152 
     153    > pear upgrade PEAR 
     154 
     155### Object-Relational Mapping (ORM) 
     156 
     157Database saling berhubungan. PHP 5 dan symfony berorientasi obyek. Agar database dapat diakses dengan cara berorientasi obyek, sebuah antarmuka translasi dari logika obyek ke logika relasi mutlak diperlukan. Antarmuka ini biasa disebut object-relational mapping, atau ORM. 
     158 
     159Sebuah ORM tersusun dari obyek-obyek yang memberikan akses ke dalam data dan di dalamnya terdapat aturan-aturan bisnis. 
     160 
     161Salah satu keuntungan layer abstraksi dari obyek/relasi adalah mencegah penggunaan sintaksis yang spesifik hanya untuk suatu database. Layer ini otomatis menerjemahkan pemanggilan dari obyek model ke perintah SQL yang dioptimalkan untuk database yang digunakan. 
     162 
     163Ini berarti perpindahan ke sistem database yang lain di tengah suatu proyek sangat mudah. Bayangkan jika anda harus membuat sebuah prototipe aplikasi secara cepat, tetapi klien anda belum memutuskan sistem database mana yang sesuai dengan kebutuhan mereka. Anda dapat memulai membangun aplikasi dengan SQLite, sebagai contoh, dan berpindah ke MySQL, PostgreSQL, atau Oracle ketika klien sudah siap untuk memutuskan. Hanya lakukan perubahan pada satu baris file konfigurasi, dan lihat itu berkerja. 
     164 
     165Sebuah layer abstraksi mengenkasulapsi logika data. Bagian lain dari aplikasi tidak perlu tahu tentang perintah SQL dan SQL yang digunakan untuk mengakses database sangat mudah dicari. Pengembang yang punya spesialisasi dalam pemrograman database juga tahu kemana harus mencari. 
     166 
     167Menggunakan obyek daripada rekord, dan kelas daripada tabel, memiliki keuntunngan lain: anda dapat menambahkan keturunan baru ke dalam tabel. Sebagai contoh, jika anda memiliki tabel bernama `Client` dengan dua field, `FirstName` dan `LastName`, anda mungkin lebih suka dengan hanya menamakan `Name`. Dalam dunia berorientasi obyek, hal ini mudah saja semisal dengan menambahkan sebuah metode baru dari keturunan kelas `Client`, seperti ini: 
     168 
     169    [php] 
     170    public function getName() 
     171    { 
     172      return $this->getFirstName().' '.$this->getLastName(); 
     173    } 
     174 
     175Semua pengulangan fungsi akses-data dan logika bisnis dari data dapat dimaintenan ke dalam suatu obyek-obyek. Sebagai contoh, bayangkan sebuah kelas ShoppingCart di mana anda menyimpan item-item (yang berupa obyek). Untuk memperoleh jumlah total dari shopping cart sewaktu checkout, anda dapat menambahkan sebuah metode `getTotal()`, seperti ini: 
     176 
     177    [php] 
     178    public function getTotal() 
     179    { 
     180      $total = 0; 
     181      foreach ($this->getItems() as $item) 
     182      { 
     183        $total += $item->getPrice() * $item->getQuantity(); 
     184      } 
     185      return $total; 
     186    } 
     187 
     188Dan lihat. Bayangkan seberapa panjang perintah SQL yang dibutuhkan umtuk melakukan hal yang sama! 
     189 
     190Propel, proyek open source yang lain, sekarang ini sebagai salah satu layer abstraksi obyek/relasi untuk PHP 5 yang terbaik. Symfony mengintegrasikan Propel sebagai ORM default, jadi kebanyakan manipulasi data yang dijelaskan dalam buku ini mengikuti sintaksis Propel. Buku ini akan menjelaskan bagaimana cara menggunakan obyek Propel, tetapi untuk referensi yang lebih lengkap, kunjungan ke website Propel  ([http://propel.phpdb.org/trac/](http://propel.phpdb.org/trac/)) sangat direkomendasikan. 
     191 
     192### Rapid Application Development (RAD) 
     193 
     194Pemrograman aplikasi web sudah lama merupakan pekerjaan membosankan dan lambat. Mengikuti proses alur rekayasa perangkat lunak yang umumnya (seperti yang diprakarsai oleh Rational Unified Process contohnya), pengembangan aplikasi web tidak dapat dimulai sebelum semua spesifikasi aplikasi ditentukan, banyak diagram Unified Modeling Language (UML) yang digambar, dan banyak sekali dokumentasi persiapan yang sudah dihasilkan. Hal ini disebabkan oleh kecepatan proses pembangunan secara umum, hingga pada kekurangan produktivitas bahasa pemrograman (harus proses build, compile, restart, dan siapa yang tahu hal tersebut sebelum melihat sebuah program berjalan), dan kebanyakan dari semua, fakta bahwa klien cukup beralasan dan tidak berubah pikiran secara berkala. 
     195 
     196Sekarang, bisnis berjalan cepat, dan klien cenderung berubah kemauan secara berkala dalam hal pembangunan sebuah proyek. Tentunya, mereka berharap tim pengembang dapat menyesuaikan dengan kebutuhan mereka dan mampu mengubah struktur aplikasi dengan cepat. Kebetulan, penggunaan bahasa skrip seperti Perl dan PHP mempermudah untuk mengaplikasikan strategi pemrograman yang lain, semisal rapid application development (RAD) atau pengembangan perangkat lunak cerdas. 
     197 
     198Salah satu ide metodologi ini adalah dengan memulai membangun secepat mungkin sehingga klien dapat merevisi prototipe yang sudah berjalan dan memberikan tambahan yang perlu. Kemudian aplikasi dapat dibangun dengan proses yang berkelanjutan, merilis versi dengan fitur lebih dalam jangka pengembangan yang singkat. 
     199 
     200Konsekuensi bagi pengembang dapat bermacam-macam. Pengembang tidak perlu memikirkan proses jangka panjang untuk mengimplementasikan sebuah fitur. Metode ini seharusnya berjalan sesederhana dan setransparan mungkin. Hal ini seperti yang diungkapkan oleh pepatah dari prinsip KISS: Keep It Simple, Stupid. 
     201 
     202Ketika kebutuhan-kebutuhan semakin berkembang atau ketika sebuah fitur ditambahkan, kode yang ada biasanya sebagian harus ditulis ulang. Proses ini disebut refactoring, dan terjadi hampir dalam banyak proses pengembangan aplikasi web. Kode dipindahkan ke suatu tempat sesuai fungsinya. Bagian kode yang terduplikat/terulang di-refaktor ke satu tempat saja, hal ini sebagai implementasi prinsip Don't Repeat Yourself (DRY). 
     203 
     204Dan untuk menyakinkan bahwa aplikasi masih dapat berjalan ketika ada pengubahan secara berkala, maka diperlukan alat pengujian unit lengkap yang berjalan otomatis. Jika ditulis dengan baik, pengujian unit adalah cara yang kuat untuk memastikan tidak ada yang tidak bekerja dengan penambahan atau refaktor kode. Beberapa metodologi pengembangan bahkan menentukan untuk menulis pengujian sebelum membuat kode--hal ini disebut test-driven development (TDD)/pengembangan berbasis pengujian. 
     205 
     206>**Catatan** 
     207>Banyak sekali prinsip-prinsip lain dan kebiasaan baik yang berhubungan dengan pengembangan cerdas. Salah satu metodologi pengembangan cerdas yang efektif adalah Extreme Programming (disingkat sebagai XP), dan literatur XP akan mengajarkan banyak cara untuk membangun aplikasi secara cepat dan efektif. Tempat untuk memulai yang baik adalah buku berseri tentang XP oleh Kent Beck (Addison-Wesley). 
     208 
     209Symfony adalah alat yang sempurna untuk RAD. Sebagai fakta, framework ini dibangun oleh sebuah agen web yang menerapkan prinsip RAD dalam proyek-proyek mereka. Ini berarti bahwa mempelajari penggunaan symfony adalah bukan belajar bahasa baru, tetapi lebih pada menerapkan refleksi yang tepat dan keputusan terbaik agar dapat membangun aplikasi dengan cara yang lebih efektif. 
     210 
     211Website proyek symfony menyediakan tutorial langkah-demi-langkah yang menggambarkan pengembangan sebuah aplikasi dengan cara yang cerdas. Aplikasi tersebut bernama askeet ([http://www.symfony-project.org/askeet](http://www.symfony-project.org/askeet)), dan membaca hal ini direkomendasikan bagi yang ingin belajar tentang pengembangan yang cerdas. 
     212 
     213### YAML 
     214 
     215Menurut website ofisial YAML ([http://www.yaml.org/](http://www.yaml.org/)), YAML adalah "a straightforward machine parsable data serialization format designed for human readability and interaction with scripting languages." Dengan kata lain, YAML adalah bahasa yang simpel untuk menggambarkan data dalam bentuk seperti-XML tetapi dengan sintaksis yang lebih sederhana. YAML khususnya berguna untuk menggambarkan data yang dapat diterjemahkan ke dalam array dan hash, seperti ini: 
     216 
     217    [php] 
     218    $house = array( 
     219      'family' => array( 
     220        'name'     => 'Doe', 
     221        'parents'  => array('John', 'Jane'), 
     222        'children' => array('Paul', 'Mark', 'Simone') 
     223      ), 
     224      'address' => array( 
     225        'number'   => 34, 
     226        'street'   => 'Main Street', 
     227        'city'     => 'Nowheretown', 
     228        'zipcode'  => '12345' 
     229      ) 
     230    ); 
     231 
     232Array PHP ini dapat otomatis dibuat dari pengolahan string YAML: 
     233 
     234    house: 
     235      family: 
     236        name:     Doe 
     237        parents: 
     238          - John 
     239          - Jane 
     240        children: 
     241          - Paul 
     242          - Mark 
     243          - Simone 
     244      address: 
     245        number: 34 
     246        street: Main Street 
     247        city: Nowheretown 
     248        zipcode: "12345" 
     249 
     250Dalam YAML, struktur ditunjukkan dengan identasi, item-item berurutan ditandai dengan strip (-), dan pasangan kunci/nilai dalam penulisannya dipisahkan dengan titik dua (:). YAML juga memiliki sintaksis pendek untuk menggambarkan struktur yang sama dengan lebih sedikit baris, dimana array secara eksplisit ditunjukkan dengan `[]` dan hash dengan `{}`. Sehingga, data YAML sebelumnya dapat ditulis dengan cara singkat, seperti berikut: 
     251 
     252    house: 
     253      family: { name: Doe, parents: [John, Jane], children: [Paul, Mark, Simone] } 
     254      address: { number: 34, street: Main Street, city: Nowheretown, zipcode: "12345" } 
     255 
     256YAML adalah kepanjangan dari "YAML Ain't Markup Language" dan diucapkan "yamel". Format ini sudah ada sekitar tahun 2001, dan pengolah YAML ada dalam bermacam-macam bahasa. 
     257 
     258>**TIP** 
     259>Sepsifikasi format YAML tersedia di [http://www.yaml.org/](http://www.yaml.org/). 
     260 
     261Seperti anda lihat, YAML lebih cepat digunakan untuk menulis dibanding XML (tidak ada lagi tag penutup atau tanda kutip eksplisit), dan YAML sendiri lebih powerful dibandingkan dengan file `.ini` (yang tidak mendukung hirarki). Itulah mengapa symfony menggunakan YAML sebagai bahasa yang lebih disukai dalam menyimpan konfigurasi. Anda akan banyak melihat file YAML dalam buku ini, akan tetapi file tersebut cukup jelas sehingga kemungkinan anda tidak perlu mempelajarinya. 
     262 
     263Kesimpulan 
     264---------- 
     265 
     266Symfony adalah framework aplikasi web dalam PHP 5. Symfony menambahkan layer baru di atas bahasa PHP, menyediakan alat-alat yang dapat mempercepat pengembangan aplikasi web komplek. Buku ini akan menjelaskan semuanya tentang symfony, dan anda hanya perlu mengerti konsep-konsep dasar tentang pemrograman modern untuk memelajarinya--dinamakan object-oriented programming (OOP), object-relational mapping (ORM), dan rapid application development (RAD). Hanya satu syarat teknik yang dibutuhkan yaitu pengetahuan tentang PHP 5. 
     267 
     268}}}