Ilustrasi Cara Kerja Doctrine + CodeIgniter
Tahap Pertama: Persiapkan Lingkungan Pengembangan Anda
Jika anda sudah mempunyai web server dengan PHP dan MySQL, anda bisa melompati beberapa poin di bawah.
- Download dan install WAMP (untuk Mac: MAMP)
Untuk para pengguna Skype: Anda harus mematikan Skype terlebih dahulu sebelum anda menjalankan WAMP, dikarenakan ada konflik pada port yang digunakan. Setelah WAMP dijalankan, anda dapat menjalankan Skype kembali.
- Masuk ke http://localhost/ di browser anda untuk memastikan bahwa web server anda sudah berjalan.
- Buka folder “www” pada folder instalasi WAMP anda.
- Buat folder baru dengan nama “ci_doctrine_day1”. Kita akan menaruh file-file kita di sini nantinya.
Install CodeIgniter
- Download CodeIgniter
- Extrak lalu kopi isi dari file instalasi CodeIgniter ke folder “ci_doctrine_day1” yang baru dibuat
- Hapus folder “user_guide” jika anda tidak memerlukannya (folder tersebut berisi dokumentasi mengenai CodeIgniter)
Folder baru anda akan tampak seperti di bawah ini:
- Masuk ke http://localhost/ci_doctrine_day1
Anda akan melihat tampilan seperti di bawah ini:
Tutorial Singkat CodeIgniter: Controller
Controller dipanggil oleh Code Igniter setiap membuka halaman web. Controller terletak di:
system/application/controllers/
Struktur url-nya terlihat seperti di bawah ini:
http://localhost/ci_doctrine_day1/index.php/NAMA_CONTROLLER/NAMA_FUNGSI
Sebagai contoh anda dapat membuka url di bawah ini:
http://localhost/ci_doctrine_day1/index.php/hello/world
CodeIgniter akan mencari kelas controller bernama “Hello” dan memanggil fungsi bernama “world()”.
Sekarang kita akan membuat controller pertama kita.
Controller Pertama Kita
- Buat file berikut: system/application/controllers/hello.php
[sourcecode language=”php”]
- Masuk ke: http://localhost/ci_doctrine_day1/index.php/hello/world
Anda akan melihat seperti di bawah ini:
Hello CodeIgniter!
Harap diingat poin-poin di bawah ini:
- Kelas controller harus meng-extend Controller
- Nama kelas harus diawali dengan huruf kapital
- Nama file harus huruf kecil semua
Untuk lebih lanjut anda bisa membaca artikel ini:
- http://codeigniter.com/user_guide/general/controllers.html
Install Doctrine
CodeIgniter memungkinkan kita untuk menambahkan plug-in. Itulah cara yang akan kita gunakan untuk menginstall Doctrine.
- Buat folder: system/application/plugins
- Buat folder: system/application/plugins/doctrine
- Download Doctrine
- Extrak file tersebut. Cari folder dengan nama “lib” di hasil ekstrak tersebut lalu kopi ke system/application/plugins/doctrine.
Sekarang struktur folder anda akan terlihat seperti di bawah ini:
- Buat file plug-in: system/application/plugins/doctrine_pi.php
[sourcecode language=”php”]
$db_values) {
// pertama kita harus mengkonversikan ke format dsn
$dsn = $db[$connection_name][‘dbdriver’] .
‘://’ . $db[$connection_name][‘username’] .
‘:’ . $db[$connection_name][‘password’].
‘@’ . $db[$connection_name][‘hostname’] .
‘/’ . $db[$connection_name][‘database’];
Doctrine_Manager::connection($dsn,$connection_name);
}
// Kelas Model CodeIgniter perlu di-load
require_once BASEPATH.’/libraries/Model.php’;
// Memberitahukan Doctrine dimana model-model terletak
Doctrine::loadModels(APPPATH.’/models’);
// KONFIGURASI OPSIONAL
// Ini memungkinkan kita untuk menggunakan “mutator”
Doctrine_Manager::getInstance()->setAttribute(
Doctrine::ATTR_AUTO_ACCESSOR_OVERRIDE, true);
// Ini mengeset semua kolom tabel ke notnull dan unsigned (untuk tipe data integer) secara default
Doctrine_Manager::getInstance()->setAttribute(
Doctrine::ATTR_DEFAULT_COLUMN_OPTIONS,
array(‘notnull’ => true, ‘unsigned’ => true));
// Set default nama primary ke ‘id’, integer, 4 bytes
Doctrine_Manager::getInstance()->setAttribute(
Doctrine::ATTR_DEFAULT_IDENTIFIER_OPTIONS,
array(‘name’ => ‘id’, ‘type’ => ‘integer’, ‘length’ => 4));
[/sourcecode]
Baca komentar-komentar yang terdapat di kodingan di atas untuk penjelasan. Tidak masalah untuk saat ini jika anda tidak mengerti semuanya, kedepannya anda akan mengerti dengan sendirinya.
Setup dan Konfigurasi Database
Kita baru saja mengubah file konfigurasi database dari CodeIgniter.
Konfigurasi Selanjutnya
Semoga pembaca belum capek untuk mengkofigurasi Doctrine hehe, tenang saja sebentar lagi akan seleasi kita mengkofigurasinya.
config.php
Sekarang CodeIgniter sudah mengetahui url dari situs kita.
autoload.php
Ini memastikan bahwa plug-in Doctrine akan selalu di-load.
Selesai!
Sekarang kita dapat lanjut untuk otak-atik Doctrine hehe. Kita mulai dengan mengetes hasil setup kita.
Model Doctrine Pertama Kita
Buat Tabel User
- Buka phpmyadmin: http://localhost/phpmyadmin/
- Masuk ke database “ci_doctrine”
- Buat tabel dengan nama “user” dan kolom sebagai berikut:
id => int, primary key, auto_increment,
username => varchar(255), unique,
password => varchar(255),
first_name => varchar(255),
last_name => varchar(255)
Anda dapat menggunakan query di bawah ini untuk melakukan hal di atas:
[sourcecode language=”sql”]
CREATE TABLE `ci_doctrine`.`user` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 255 ) NOT NULL ,
`password` VARCHAR( 255 ) NOT NULL ,
`first_name` VARCHAR( 255 ) NOT NULL ,
`last_name` VARCHAR( 255 ) NOT NULL ,
UNIQUE (
`username`
)
)
[/sourcecode]
Membuat Model
- Buat file: system/application/models/user.php
[sourcecode language=”php”]
hasColumn(‘username’, ‘string’, 255);
$this->hasColumn(‘password’, ‘string’, 255);
$this->hasColumn(‘first_name’, ‘string’, 255);
$this->hasColumn(‘last_name’, ‘string’, 255);
}
}
[/sourcecode]
Catatan:
- Kita kali ini meng-extend Doctrine_Record, daripada Model (di mana ini biasanya kita lakukan di model-model CodeIgniter)
- Di dalam fungsi setTableDefinition() kita harus mendefinisikan struktur tabel
- Secara default, Doctrine akan mencari tabel dengan nama yang sama seperti kelas terkait. Dalam kasus ini “user” (ini bisa diganti sesuka anda).
- Di file doctrine_pi.php di bagian sebelumnya dari artikel ini, kita telah menspesifikasikan untuk primar key default menggunakan “id”. Oleh karena itu kita tidak perlu menuliskannya lagi di dalam kelas User.
Mengetes Model: Menambahkan Beberapa User
Kita baru saja membuat 2 objek, dan mengisinya dengan beberapa data. Hanya dengan memanggil fungsi save() akan menyimpan data-data tersebut ke dalam database, sangat mudah bukan hehe.
Catatan:
- Kita dapat mengakses field-field dari tabel sebagai paramater (contoh $u->username), walaupun kita sebetulnya tidak membuat parameter tersebut. Baik sekali kan Doctrine hehe :-) .
- Jika anda sudah mengenal CodeIgniter, makan anda tentu ingat bahwa kita pelu memanggil fungsi $this->load->model() untuk me-load model. Namun berhubung kita sudah meregistrasikan fungsi autoload Doctrine, hanya menulis “new User()” sudah cukup
- Kita tidak membuat fungsi “save()”, karena fungsi tersebut terdapat di kelas Doctrine_Record yang kita extend. Fungsi tersebut menyimpan objek-objek ke dalam database. Ada banyak fungsi-fungsi lainnya yang dapat kita gunakan sebetulnya, kita akan menggunakannya nanti sejalan dengan artikel berseri ini.
- Buka: http://localhost/ci_doctrine_day1/index.php/hello/user_test
Anda akan melihat tampilan seperti di bawah ini:
2 user telah berhasil ditambahkan
- Sekarang kembali ke phpmyadmin: http://localhost/phpmyadmin/
- Telusuri tabel “user”
OK! Sekarang anda akan melihat 2 record baru telah dibuat
Stay Tuned
Kita baru saja melihat bagaimana caranya meng-install dan men-setup CodeIgniter dengan Doctrine. Agak banyak yang kita lakuakan memang, namun sekarang kita sudah mendapatkan framework MVC yang kuat dan kombinasi dengan ORM.
Di tutorial selanjutnya, kita akan mecoba contoh-contoh yang lebih praktikal dan nantinya akan membuat website yang berfungsi. Anda akan melihat bagaimana mudahnya membuat model dengan menggunakan Doctrine dan mengirit waktu dari harus menulis kodingan CRUD (Create, Read, Update, Delete) berulang-ulang di semua model-model.
Doctrine juga membantu kita untuk menangani relasi antar kelas, dan menghindari kita dari menuliskan kodingan serta query yang kompleks.
Sampai ketemu di seri berikutnya!
Burak Guzel