Jumaat, 30 Julai 2010

10 sebab mengapa pilih CakePHP ?


Saya mempunyai pengalaman membuat web development sejak 1997 lagi dan telah mula menggunakan PHP semenjak itu.

Saat pertama dapat membuat connection PHP ke PostgreSQL di dalam box Linux Redhat sudah cukup membuat saya terpegun. Tidaklah susah seperti coding dalam PERL.

Ok, kemudian saya menggunakan PHP dan sungguh seronok, banyak juga projek web application dapat disiapkan dengan cepat dan mudah.Tetapi bila penggunaan library 3rd party bertambah, jadi macam rojak pulak code dalam sistem.

Sebelum mengenali CakePHP, saya menggunakan Symfony Framework . Memang canggih, ada Command Line Interface, tetapi pada saya terlalu bloated untuk get simple things done. Tetapi untuk aplikasi level enterprise, saya cukup galakkan guna Symfony.

Kemudian saya berubah ke CakePHP. Menggunakan konsep baru yang dinamakan MVC , sama seperti Symfony. Konsep MVC dalam CakePHP sungguh mudah hendak difahami.

Setelah menggunakan CakePHP, saya cuba pula Ruby On Rails. Dekat RM1k juga habis duit beli buku untuk RoR.

Setelah puas bermain-main dengan ketiga-tiga framework tersebut, saya memilih CakePHP. Mengapa ?

1. Convention Over Configuration
Saya suka prinsip yang digunakan oleh CakePHP. Katakan nak buat Authhentication dalam sistem, apa yang perlu saya buat ialah table bernama users dan mempunyai column id,username,password sahaja. Secara automatik CakePHP akan menggunakan table tersebut untuk tujuan Auth.

2. Object Relational Model
Jika membuat SQL statements, Oracle,PGsql dan MySQL mempunyai sintaks yang berbeza. Contohnya SQL untuk membuat Pagination.  Konsep ORM yang digunakan oleh CakePHP diilhamkan oleh Ruby On Rails. Contohnya kod

# senaraikan semua user yang berasal dari Johor
$users = $this->User->findAllByState('johor');

# dapatkan nilai user yg menggunakan id -3
$user = $this->User->findById(3);

3. Model View Controller
Pada mulanya nak memahamkan konsep ini agak sukar. Kenapalah nak asingkan sampai jadi 3 fail. Tapi kini saya cukup suka menggunakan MVC.

Bayangkan anda mempunyai model bernama User. Setiap model mewakili 1 table dalam database, dan anda juga memelukan data dari table user yang tersimpan dalam Ldap, saya akan namakan sebagai user UserLdap. Jadi di sini sumber data saya tidak terhad dari databaseMySQL, malahan boleh berupa sumber data dari Ldap,Csv dan sebagainya.

Controller pula fungsinya menerima input dari pengguna menggunakan http GET atau POST dan akan memanggil data dari Model.

Data yang telah siap acuannya, akan dihantar pula ke View. Kita mungkin memerlukan berbagai jenis View seperti Html, Javascript, Xml malahan Mobile web. Jadi data yang sama boleh dipersembahkan kepada berbagai format. Mudah kan ?


4. Utility Helpers
Helpers di dalam CakePHP cukup memudahkan saya membuat kerja. Contohnya, saya nak convert string berbentuk training_cake_php_malaysia kepada bentuk yang mudah di baca, saya hanya perlu menggunakan class Utility bernama Inflector, contohnya $str = Inflector::humanize( 'cake_php_malaysia' ); hasilnya akan menjadi Cake Php Malaysia . 

5. Core Helpers
Core Helpers seperti Form,Sessions,Javascript,Html cukup membantu saya untuk memastikan kod-kod yang ditulis dalam bentuk yang senang hendak diuruskan. Contohnya helper Html untuk menjana link dan mengeluarkan gambar. Contoh

echo $html->link('Index' , '/posts/index'); akan menghasilkan link berbentuk Link

Menggunakan helper Html membuatkan saya tidak perlu berfikir mengenai konfigurasi kod jika server dipindahkan ke Path URL yang lain. Contohnya jika sebelum ini path untuk gambar terletak di /img/gambar.jpg dan di server baru terletak di /assets/img/gambar.jpg, jika menggunakan kod Html yang biasa saya perlu mengubah kod satu-persatu. Dengan Helper Html, tidak perlu lagi.

Paling banyak membantu saya, sudah tentu Form Helpers. Jika anda membaca blog saya mengenai Contoh CakePHP Form , anda seudah tentu faham apa yang saya maksudkan.

6. Database Schema
Skema database ini diperkenalkan kepada saya sewaktu menggunakan Symfony, kemudiannya Ruby On Rails dan akhirnya di dalam CakePHP. Walaupun tidak selengkap Sf dan RoR, skema database generation dalam CakePHP sudah cukup membantu saya untuk maintain sistem dengan mudah.

Skema database script dalam CakePHP membolehkan saya create,update,delete skema database tanpa perlu menggunakan phpMyAdmin. Cukup sekadar melaksanakan arahan dari ms dos. Malah skema yang sama boleh digunakan ke atas MySQL,PostgreSQL, MS Access dan Oracle.

7. Command Line Interface
CakePHP didatangkan dengan skrip CLI yang dinamakan Bake. Saya boleh automate nak buat Project,Model ,Controller,Skema dan View menggunakan skrip ini. Contohnya saya perlu run batch job untuk proses data penduduk dari fail-fail CSV ke dalam table MySQL, dan fail ini memerlukan 1 jam untuk diproses. Menggunakan Bake Shell, saya dapat melakukan task tersebut dengan cepat, dan boleh dijalankan menggunakan Bash Linux atau Ms Dos

8.  Large User Base
CakePHP mempunyai developer yang banyak di serata dunia dan sudah tentu tidak menjadi masalah untuk mencari jalan penyelesaian. Malah di Malaysia, penerimaan CakePHP sudah banyak, terutamanya di sektor-sektor kerajaan. Training-training yang saya kendalikan sebelum ini, kebanyakknya berkisar mengenai menggunakan CakePHP sebagai asas framework programming untuk developer mereka di dalam jabatan kerajaan.

9. Scaffolding
Scaffolding dalam CakePHP cukup membantu saya dalam design database. Hanya menggunakan hasMany,hasOne,hasManyAndBelongsTo dan belongsTo,saya boleh mereka database sistem dengan mudah dan boleh diusi keberkesanannya sebelum proceed ke full development mode. Dengan Scaffolding, saya boleh tunjukkan dengan client, design kasar sistem sebelum mereka setuju dengan design tersebut.


10. Model Relations
Impak yang paling besar kepada saya mengapa menggunakan CakePHP ialah, mudahnya membuat Table Join. Contohnya User mempunyai banyak Images, so relation yang saya perlu buat ialah, User hasMany Image, dan data milik User dan array Image dapat digunakan dengan sekali Query sahaja.

Tiada ulasan:

Catat Ulasan