Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/_main.inc.php on line 128

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/_main.inc.php on line 134

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/_main.inc.php on line 141

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/_main.inc.php on line 169

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/_main.inc.php on line 199

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/_main.inc.php on line 205

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/_main.inc.php on line 233

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/_main.inc.php on line 248

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/_main.inc.php on line 254

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/_main.inc.php on line 267

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/_main.inc.php on line 595

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/files/model/_file.funcs.php on line 559

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/_connect_db.inc.php on line 29

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/_core/_param.funcs.php on line 1692

Warning: Cannot modify header information - headers already sent by (output started at /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/_main.inc.php:128) in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/sessions/model/_session.class.php on line 222

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/generic/model/_genericelement.class.php on line 109

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/_core/model/dataobjects/_dataobject.class.php on line 428

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/_core/model/dataobjects/_dataobject.class.php on line 437

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/files/model/_file.class.php on line 1782

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/_blog_main.inc.php on line 457

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/items/model/_itemlist.class.php on line 483

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/items/model/_itemlistlight.class.php on line 119

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/items/model/_itemlistlight.class.php on line 838

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/items/model/_item.class.php on line 1427

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/items/model/_item.class.php on line 1430

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/items/model/_item.class.php on line 3033

Warning: Cannot modify header information - headers already sent by (output started at /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/_main.inc.php:128) in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/inc/skins/_skin.funcs.php on line 379

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/plugins/code_highlight_plugin/_code_highlight.plugin.php on line 344
Category: PHP - My Little Black Box
5
Sep

Creating A Simple Database Application Using CakePHP in 5 Minutes

Judul diatas bukanlah kalimat omong kosong, kata-kata sesumbar, atau hanya mungkin dilakukan oleh programmer profesional dan berpengalaman. Hal diatas mungkin dilakukan bahkan oleh pemula sekalipun. Itu mungkin dilakukan dengan adanya fitur scaffold yang tersedia di CakePHP.

Sebagai contoh, kita akan membuat suatu sistem sederhana yang dapat melakukan operasi create, retrieve, update, delete. Contoh dibawah ini dibuat dengan menggunakan MySQL sebagai database servernya.

Langkah pertama adalah membuat database untuk sistem ini.

SQL:

CREATE DATABASE `library`

Setelah database sudah dibuat, langkah kedua adalah membuat tablenya.

SQL:

CREATE TABLE `customers` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nomor_anggota` varchar(255) NOT NULL,
  `nama` varchar(255) DEFAULT NULL,
  `alamat` varchar(255) DEFAULT NULL,
  `telpon` varchar(255) DEFAULT NULL,
  `created` datetime DEFAULT NULL,
  `updated` datetime DEFAULT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `nomor` (`nomor_anggota`)
)

Langkah ketiga adalah mengkonfigurasi koneksi databasenya dengan mengedit file yang terdapat di /app/config/database.php. Contoh konfigurasinya:

PHP:

var $default = array(
        'driver' => 'mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'root',
        'password' => 'passsword1234',
        'database' => 'library',
        'prefix' => '',
);

Sebelum melanjutkan langkah-langkah selanjutnya, saya akan menjelaskan sekilas mengenai CakePHP. CakePHP adalah framework yang didesain mengikuti pattern-pattern (best practice dari system design), salah satunya adalah MVC (Model-View-Controller) pattern, dan CakePHP adalah framework yang sangat ketat dalam hal design MVC nya, sehingga kita harus mengikuti prinsip MVC jika ingin menggunakan CakePHP secara maksimal.

Keterangan lebih lanjut mengenai Model-View-Controller bisa dilihat di sini.

Langkah keempat adalah membuat Modelnya. Buat file baru bernama Customer.php dan simpan file tersebut di directory /app/models. Isi file dari tersebut adalah seperti di bawah ini:

PHP:

<?php
class Customer extends AppModel {
        var $name = 'Customer';
}
?>

Langkah selanjutnya adalah membuat Controllernya. Buat file baru bernama customers_controller.php dan simpan file tersebut di directory /app/controller. Isi file dari tersebut adalah seperti di bawah ini:

PHP:

<?php
class CustomersController extends AppController {
        var $name = 'Customers';
        var $scaffold;
}
?>

Selanjutnya buka browser, lalu browse ke http://[nama_server]/[nama_folder_cakePHP]/customers. Contohnya http://localhost/cake/customers.

Jika berhasil, maka sudah terbuat sistem sederhana yang bisa melakukan operasi create, retrieve, update, delete. Bahkan untuk list tablenya sudah ada pagination, sorting (jika judul kolomnya diklik, maka data akan diurutkan berdasarkan kolom tersebut), dan operasi-operasi update dan delete untuk tiap barisnya. Semuanya ini dimungkinkan dengan perintah scaffold. Hanya saja penggunaan scaffold ini tidak disarankan untuk sistem yang rumit karena kurangnya fleksibilitas.

Selamat ber CakePHP ria :D

free b2evolution skin

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/skins/_item_feedback.inc.php on line 156
5
Sep

Naming Convention On CakePHP

Salah satu filosofi dari cakePHP adalah meminimalisasi jumlah baris coding, dan effort yang dibutuhkan untuk melakukan konfigurasi. Hal inilah yang membedakan cakePHP dengan beberapa framework PHP lainnya.

Untuk mencapai hal tersebut, cakePHP memiliki naming convention untuk diikuti. Mengikuti naming convention ini tidaklah diharuskan, tetapi hal ini sangat disarankan untuk bisa menggunakan fitur-fitur dari CakePHP dengan maksimal. Dengan mengikuti naming convention dari CakePHP, effort dan waktu yang dibutuhkan untuk membangun website akan jauh lebih sedikit. Therefore just follow the naming convention, and let CakePHP do the dirty works.

Beberapa naming-naming convention yang perlu diperhatikan dari CakePHP adalah sebagai berikut:

  • Nama dari database table harus menggunakan kata jamak (plural), dan jika nama table terdiri dari 2 (dua) nama maka harus menggunakan karakter '_' contohnya: customers, books, authors, line_items.
  • Jika menggunakan join table, maka penamaannya berdasarkan alphabetical order dengan karakter '_' sebagai pemisah. Contohnya: authors_books; bukan books_authors.
  • Tiap table harus memiliki field id.
  • Optional: tiap table memiliki field created, dan updated. Field ini optional, yang tidak akan mengganggu kinerja dari CakePHP jika field tersebut tidak dibuat. Jika field-field tersebut tersedia di dalam table, maka CakePHP akan mengisinya secara otomatis setiap kali ada operasi create atau update.
  • Nama file dari Model yang berkorelasi dengan table harus menggunakan kata tunggal (singular), contohnya: customer.php, book.php, author.php, line_item.php.
  • Nama class dari Model yang berkolerasi dengan table harus menggunakan kata tunggal (singular) dengan penamaan CamelCase. Contohnya: Customer, Book, Author, LineItem.
  • Nama file dari Controller yang berkolerasi dengan table harus menggunakan kata jamak (plural) dengan menggunakan karakter '_' sebagai pemisah. Contohnya: customers_controller.php, books_controller.php, line_items_controller.php.
  • Nama class dari Controller yang berkolerasi dengan table harus menggunakan kata jamak (plural) dengan penamaan CamelCase dan diakhiri dengan kata Controller. Contohnya: CustomersController, BooksController, AuthorsController, LineItemsController.

Dengan mengikuti naming convention, maka banyak hal yang bisa diotomatisasi, dan banyak fitur yang bisa digunakan, salah satunya adalah Bake Code Generator. Mengenai Bake Code Generator, mungkin akan saya bahas nanti. Selamat bercoding ria

free b2evolution skin

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/skins/_item_feedback.inc.php on line 156
3
Sep

Setting Up Environment For CakePHP

Sekilas mengenai CakePHP, CakePHP adalah MVC (Model View Controller) framework berbasis PHP yang sangat mudah digunakan. CakePHP sangat membantu programmer dalam membangun sebuah website, mulai dari yang sangat simple, sampai ke website yang sangat rumit sekalipun. Saking mudah dan cepatnya membuat website dengan menggunakan CakePHP, sehingga CakePHP dikenal sebagai Rapid Application Development (RAD) Framework. Untuk environment nya, dibutuhkan:

  1. Web Server
  2. PHP Engine
  3. Database Server

Untuk database server yang disupport CakePHP adalah:

  • MySQL
  • SQLite
  • PostgreSQL
  • MS SQL
  • DB2
  • Oracle
  • Firebird
  • Sybase

Untuk memudahkan, dapat digunakan bundled software seperti XAMPP (dapat didownload di sini. XAMPP sudah menyediakan Apache Web Server, PHP, dan MySQL di dalam packagenya, sehingga kita tidak perlu repot-repot lagi menginstallnya satu-persatu (bahkan XAMPP juga menyediakan SQLite sebagai alternatif database). Setelah XAMPP terinstall, kita lanjutkan dengan mendownload CakePHP frameworknya yang tersedia di sini (disarankan untuk menggunakan versi 1.2.x.x karena di versi tersebut, banyak fitur-fitur menarik yang tidak ditemukan di versi 1.1.x.x). Setelah CakePHP telah selesai didownload, step-step yang diperlukan selanjutnya adalah:

  1. extract file hasil download (karena hasil download biasanya berupa compressed file), lalu copy folder hasil extract ke [xampp_home_folder]/htdocs.
  2. Edit file httpd.conf yang terletak di [xampp_home_folder]/apache/conf/httpd.conf.

    Pastikan module mod_rewrite dalam keadaan aktif (tidak ada tanda comment di awal baris)

    LoadModule rewrite_module modules/mod_rewrite.so

  3. Set up database (Optional)

    Agar CakePHP dapat berkoneksi dengan database, maka kita perlu membuat file database.php. Langkah-langkahnya adalah sebagai berikut:

    • Copy file database.php.default, dan paste file tersebut di dalam folder yang sama, lalu rename file tersebut menjadi database.php
    • Edit file database.php sesuai dengan konfigurasi database server yang sudah ada.

      Contohnya jika ingin melakukan koneksi dengan database server MySQL dengan username 'root', password 'test1234', dan nama database yang digunakan adalah 'cake', maka konfigurasinya seperti ini:

      PHP:

      var $default = array('driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'root', 'password' => 'test1234', 'database' => 'cake', 'prefix' => '');


Setelah langkah-langkah diatas sudah dijalankan, buka browser dan browse ke url http://[nama-site]/[nama_folder_hasil_extract]. Contohnya:

http://localhost/cake

Jika setting berhasil, maka akan tampak welcome page dari cakePHP yang menampilkan status konfigurasi dari cakePHP. Jika semua status sudah oke, maka cakePHP sudah siap dijalankan. Selamat berCakePHP ria!!!

free b2evolution skin

Deprecated: Assigning the return value of new by reference is deprecated in /home/sloki/user/t63678/sites/albert.web.id/www/blogs/skins/_item_feedback.inc.php on line 156