Tutorial Pemrograman PHP Berbasis MVC Menggunakan Framework CodeIgniter dan Doctrine – Bagian 2 – Dasar


CodeIgniter + Doctrine

Di seri ini kita akan:
– Melakukan instalasi CodeIgniter dan Doctrine baru secara cepat, tanpa harus melalui detail-detail seperti pada seri sebelumnya
– Membahas kembali secara singkat mengenai konsep-konsep dasar dari CodeIgniter dan Doctrine
– Membahas kembali secara singkat mengenai konsep-konsep dasar dari CodeIgniter dan Doctrine
– Pertama kita akan mengulangi lagi mengenai Controller dan View di CodeIgniter
– Selanjutnya kita akan lanjut ke Model menggunakan Doctrine. Mulai dari sini, tutoial ini akan mulai berbeda dibanding tutorial-tutorial CodeIgniter lainnya
– Terakhir kita akan melihat contoh dari Model Doctrine dan berbicara mengenai akan menjadi apa proyek utama kita nantinya

Mulai sekarang tutorial akan menjadi lebih menarik karena kita akan menelusuri lebih lanjut kekuatan dari CodeIgniter digabung dengan Doctrine, hehe saya jamin untuk yang terbiasa dengan menggunakan query manual akan terkesima dengan apa yang bisa dilakukan dari kedua komponen tersebut.

Mari kita mulai dengan memastikan bahwaa kita mempunya instalasi CodeIgniter + Doctrine yang baru dan siap untuk mengoding hehe.

Install CodeIgniter + Doctrine Baru Dengan Cepat

Tahap-Tahap Install Baru:

  • Siapkan webserver dengan PHP+MySQL anda. Yang direkomendasikan dari saya adalah WAMP (untuk Mac: MAMP)
  • Download paket CodeIgniter + Doctrine dari Burak Gazel
  • Extrak paket tersebut lalu taruh folder ci_doctrine di folder web anda
  • Buat database dengan nama ci_doctrine untuk proyek kita
  • Pastikan info tentang database anda sudah benar di: system/application/config/database.php.
  • Pastikan base_url sudah benar di: system/application/config/config.php.
  • Lihat apakah instalasi sudah berjalan dengan baik di: http://localhost/ci_doctrine/

Jika anda sudah mempunyai file-file dari seri sebelumnya:

(Jika anda menggunakan instalasi baru seperti bagian di atas, lompat bagian ini)

  • Ganti nama atau kopi folder instalasi CodeIgniter + Doctrine anda menjadi: ci_doctrine (hal ini dilakukan agar kita tidak perlu gonta-ganti url dari situs kita di setiap tutorial)
  • Hapus: system/application/models/user.php
  • Hapus: system/application/controllers/hello.php
  • Hapus tabel: user
  • Ubah: system/application/config/config.php
    [sourcecode language=”php”]
    // di system/application/config/config.php
    $config[‘base_url’]    = “http://localhost/ci_doctrine/”;
    [/sourcecode]

Struktur URL CodeIgniter

URL pada CodeIgniter dapat terlihat seperti di bawah ini:

URL ini memanggil kelas controller yang bernama “CONTROLLER_NAME” dan memanggil fungsinya yang bernama “METHOD_NAME”

http://localhost/ci_doctrine/index.php/CONTROLLER_NAME/METHOD_NAME

Sama seperti sebelumnya, hanya saja kali ini memanggil fungsi index() secara default:

http://localhost/ci_doctrine/index.php/CONTROLLER_NAME

Sama seperti sebelumnya. Kali ini ia mengirimkan sebuah “VALUE” (nilai) sebagai argumen dari fungsi pada controller tersebut.

http://localhost/ci_doctrine/index.php/CONTROLLER_NAME/METHOD_NAME/VALUE

Nilai tersebut bisa berupa angka atau teks.

Anda bisa menambahkan nilai-nilai tambahan di URL untuk mengirimkan argumen-argumen tambahan.

Untuk lebih lanjut: Passing uri segments

CodeIgniter MVC (Model – View – Controller)

Model

Kita akan menggunakan model dari Doctrine daripada CodeIgniter, hal ini akan dijelaskan di bagian kedepannya di tutorial ini.

Jika anda tetap ingin mempelajari model pada CodeIgniter, anda bisa membaca: CodeIgniter Models

View

  • View dibuat di system/application/views
  • View adalah template dari keluaran aplikasi web kita. View bisa terdiri dari html, javascript, dan lain-lain
  • View biasanya memiliki kode inline PHP (untuk menampilkan pesan, melakukan loop, dan lain-lain)
  • Controller biasanya me-load view untuk menampilkan keluaran

Dokumentasi resmi ada di: CodeIgniter Views

Controller

Kita sudah mempelajari mengenai ini di seri sebelumnya. Lihat di bagian Tutorial Singkat CodeIgniter: Controller

Controller dan View

Berikut adalah contoh View (system/application/views/my_view.php):
[sourcecode language=”php”]
Beberapa teks biasa.

Anda bisa menggunakan HTML.
Menampilkan variabel yang dikirim dari controller:

Anda juga bisa melakukan loop:
“;

} ?>

Atau dengan sintaks alternatif:

Counter:


[/sourcecode]

Berikut adalah contoh controller (system/application/controllers/sample_controller.php), yang me-load sebuah view:
[sourcecode language=”php”]
class Sample_controller extends Controller {

function index() {
$data = array();
$data[‘message’] = “index telah dipanggil”;
$data[‘another_message’] = “blah blah”;

$this->load->view(‘my_view’,$data);
}

}
[/sourcecode]

Kedua url berikut dapat digunakan:

http://localhost/ci_doctrine/index.php/sample_controller/index
http://localhost/ci_doctrine/index.php/sample_controller

Browser akan menampilak seperti di bawah ini:

Beberapa teks biasa.
Anda bisa menggunakan HTML.
Menampilkan variabel yang dikirim dari controller:
index telah dipanggil
blah blah
Anda juga bisa melakukan loop:
Counter: 0
Counter: 1
Counter: 2
Atau dengan sintaks alternatif:
Counter: 0
Counter: 1
Counter: 2

Catatan:

  • View terdiri dari kombinasi keluaran mentah dan kode PHP inline sederhana.
  • index() adalah fungsi default dari controller,  jadi kita tidak perlu menulisnya di url.
  • $this->load->view(’my_view’,$data) me-load view tersebut dan lalu menampilkannya di browser.
  • Argumen pertama “my_view” adalah nama dari file view, tanpa ekstensi .php-nya.
  • Argumen kedua $data adalah array, yang mengirimkan variabel-varibel ke view tersebut
  • Contoh: $data[‘pesan’] menjadi $pesan, dan $data[‘pesan_lainnya’] menjadi $pesan_lainnya, di view kita.

(Jika anda membuat file-file di atas (untuk mengtesnya), anda bisa menghapus file-file tersebut sekarang. Kita tidak akan menggunakannya lagi di proyek kita.)

Model Doctrine

Berikut adalah PREVIEW kecil dari jenis model yang akan kita buat. Kita akan melihat detail-detail lebih lengkapnya di seri berikutnya.
[sourcecode language=”php”]
hasColumn(‘username’, ‘string’, 255);
$this->hasColumn(‘password’, ‘string’, 255);
$this->hasColumn(’email’, ‘string’, 255, array(
’email’ => true // Untuk memvalidasi input e-mail
));

// Mendukung banyak jenis-jenis kolom, termasuk enum
$this->hasColumn(‘status’, ‘enum’, null,
array(‘values’ => array(‘unverified’, ‘verified’, ‘disabled’))
);

$this->hasColumn(‘referer_id’, ‘integer’, 4);
}

// Setup beberapa opsio
public function setUp() {

// Buat relasi dengan sebuah model bernama Post
$this->hasMany(‘Post as Posts’, array(
‘local’ => ‘id’,
‘foreign’ => ‘post_id’
));

// Juga bisa membuat relasi dengan diri sendiri
$this->hasOne(‘User as Referer’, array(
‘local’ => ‘referer_id’,
‘foreign’ => ‘id’
));

// Membuat field ‘created_at’ dan ‘updated_at’ agar diperbaharui secara otomatis
$this->actAs(‘Timestampable’);

// Field password mempunyai mutator, untuk enkripsi secara otomatis
$this->hasMutator(‘password’, ‘md5Password’);

}

// Sebuah fungsi mutator
public function md5Password($value) {
$this->_set(‘password’, md5($value));
}

}
[/sourcecode]

Setelah kita selesai membuat model Doctrine seperti di atas, sekarang kita dapat melakukan berbagai macam operasi database. Doctrine bahkan dapat membuat tabel berdasarkan informasi-informasi yang terdapat pada model saja.

Dan perlu diingat bahwa ada banyak cara untuk membuat model Doctrine, seperti menggunakan file skema. Tapi untuk sekarang kita belum akan memasuki hal tersebut.

Stay Tuned

Di seri berikutnya, kita akan memulai untuk membuat proyek, yaitu sebuah Message Board dan mungkin bisa lebih… Proyek ini menjadi kandidat yang pas untuk proyek tutorial ini mengenai Doctrine karena berbagai macam relasi terlibat pada model-model seperti: user, post, thread, forum, group, attachment, dan lain-lain

Sampai jumpa di seri berikutnya hehe ;-)

* Tutorial original oleh Burak Guzel di link ini