NOVA ROCHAYATI
MANAJEMEN INFORMATIKA 3093311030
MCV
Pengertian PHP FrameworkPHP Framework adalah pemrograman PHP dengan menggunkan class library sehingga mempermudah dalam pembuatan website.
PHP Framework Berbasis MVC
Sedang PHP Framework berbasis MVC (Model View Control) adalah metode pemrograman PHP dengan menggunkan class library dan membantu untuk memisahkan antara class data dan class logical.
Definisi MVC (Model View Control)
Model View Controller (MVC) pertama kali diperkenalkan oleh Trygve Reenskaug, pengembang software Smalltalk pada Xerox Palo Alto Research Center pada tahun 1979. Konsep ini membantu memisahkan antara akses data (data access) dengan logika bisnis (business access). Secara lebih detail MVC dibagi menjadi 3 komponen, yaitu :
Model, merupakan satu bagian dari MVC, model bertugas untuk berhubungan langsung dengan tugas-tugas CRUD (Create, Read, Update & Delete) pada database, misalnya berhubungan dengan mysql, yang menariknya adalah, framework sudah menyertakan koneksi dengan berbagai jenis database, mulai dari mysql, postgree, oracle, mssql server, dan lain-lain sebagainya, kita tinggal memasukkan nama databasenya dan atribut-atribut seperti host, username, dan passwordnya saja. Sungguh luar biasa lagi, karena seorang koder tidak lagi melakukan hal-hal klasik melulu dilakukan setiap mengawali koding. Bukan hanya konektivitas dengan database
saja, tapi seperti yang saya bicarakan lagi, tugas-tugas create, read, update & delete jauh lebih cepat, mudah, efisien, dan luar biasa.
View, jika model berhubungan dengan tugas-tugas database, maka view dikerjakan oleh sang web designer, karena view berisi kode-kode html, css, maupun javascript yang digunakan sebagai tampilan web nantinya. Seorang pembuat view biasanya melakukan pekerjaan dan sedikit berkoordinasi koder intinya, atau bahkan tidak berkoordinasi sama sekali dengan kodernya, tapi hanya mengikuti standarisasi koding framework, sepertinya misalnya pembuatan table data, maupun pagination, dan lain-lain sebagainya.
Controller, menjadi tulang punggung koding. Controller yang menghubungkan antara view dan model. Controller yang menghandle inputan dari user. Anggaplah kasusnya seperti user login, ketika tampilan dibuka, controller melihat dari url yang adam kemudian controller mencocokan antara url dengan view yang ada. Jika cocok maka viewnya di tampilkan. Nah misalkan seperti ini, ketika user memasukkan username dan password dan submit, maka controller menerima inputan ini lalu controllerlah yang dia berhubungan langsung dengan model (database) untuk mencocokan apakah yang username dan password yang ada dalam database itu ada dan cocok, controller lah yang menghandle ini semua, yang kemudian jika cocok, maka tugas selanjutnya adalah dilimpahkan kepada view, untuk memperlihatkan tampilan selanjutnya.
Struktur File MVC
Diperlukan beberapa direktori untuk membagi komponen-komponen pada kerangka MVC. Pada tutorial ini kerangka MVC seperti berikut :
Kerangka diatas bagian utama MVC (model-view-controller) ditambah direktori configs untuk konfigurasi database atau lainnya ditempatkan dalam satu direktori application . Lalu untuk PHP function dan kelas libray pada direktori library, terakhir menempatkan web template, style css, gambar, dokumen javascript dan halaman utama index pada direktori public.
Titik akses utama MVC adalah index.php, pada dasarnya dalam mvc ini kita hanya mengambil halaman dengan menggunakan GET di index.php
public/index.php?page=$1
Dikarenakan file index.php terletak di direktori public diperlukan .htacces untuk mendirect halaman utama index.php di direktori public.Selain itu .htacces berguna untuk menyembunyikan index.php di url dan menciptakan url SEO frendly seperti ini :
Sebelum menggunakan .htaacess kita harus aktifkan modul rewrite atau mod_rewrite pada server apache. Jika anda pakai WAMP caranya mudah untuk aktifkan module rewrite :
> jalankan WAMP
> klik ikon wamp di taskbar > pilih menu apache
> pilih apache module > cari rewrite_module
> pilih/centang (secara otomatis server apache sudah restart) atau cara manual :
buka file httpd.conf (..\bin\apache\apache2.x.x\conf\httpd.conf) hilangkan tanda #
LoadModule rewrite_module modules/mod_rewrite.so
Restart server apache
Setelah module rewrite aktif, sekarang buat file .htacces pada direktori utama (mvc) tuliskan kode berikut : RewriteEngine On RewriteCond %{REQUEST_URI} ="" RewriteRule ^.*$ /public/index.php [NC,L] RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*)$ public/index.php?page=$1 [NC,L]
Library dibagi menjadi tiga direktori sesuai dengan tipenya, yakni Core adalah kelas library utama/inti untuk membangun MVC, Db untuk kelas library database dan Helper untuk kelas library bantuan. Karena bahasan utama tutorial ini adalah membuat kerangka MVC, untuk sementara kelas library pada direktori Db dan Helper masih kosong dan dibahas pada tutorial selanjutnya
Registry
Kelas registry adalah objek untuk menyimpan variabel kedalam registry yang dapat diatur dan diambil dengan magical functions __set dan __get.
<?php
class Registry {
private $vars = array();
public function __set($index, $value) {
$this->vars[$index] = $value; }
public function __get($index) {
return $this->vars[$index];
} ?> Router
Kelas Router bertugas untuk mengambil kontroller yang berasal dari url. Url yang sebenarnya terlihat seperti ini :
http://mvc/index.php?page=product/view/2
Karena menggunakan .htacces dan module rewrite terlihat seperti ini : http://mvc/product/view/2
Terlihat nilai setelah host atau variabel page adalah product/view/2 disni bisa didefinisikan :
Parameter pertama (product) adalah kontroller
Parameter kedua (view) adalah aksi/method
Parameter ketiga dan sterusnya disebut atribut Router.php <?php class Router { private $registry; private $path; private $file;
public $route; public $controller; public $action;
public function __construct($registry) {
$this->registry = $registry; }
...
Definisikan variabel registri saat kelas route dipanggil. Kemudian buat method untuk mendaftarkan path/letak kontroller
...
public function setPath($path) {
if (is_dir($path) == false) {
throw new Exception ('Invalid controller path: `' . $path . '`'); }
$this->path = $path; }
...
Kontroller diambil dari nilai variabel page dan mengatur nilai default jika kontroller kosong adalah kontroller index, begitu juga untuk aksi jika kosong adalah aksi index
...
private function getController() {
$page = rtrim($_GET['page'], '/');
$route = (empty($page)) ? 'index' : $page; $this->route = explode('/', $route);
$this->controller = (isset($this->route[0])) ? $this->route[0] : 'index'; $this->action = (isset($this->route[1])) ? $this->route[1] : 'index';
$this->file = $this->path .'/'. ucfirst($this->controller) . 'Controller.php'; }
...
Mengambil path/letak kontroller pada method loader. Apabila file tidak temukan akan dialihkan ke kontroller page dan aksi notfound atau dapat diartikan halaman tidak ditemukan (404)
...
public function loader() {
$this->getController();
if (is_readable($this->file) == false){
$this->controller = 'page'; $this->action = 'notfound'; //404 }
include $this->file;
$class = $this->controller . 'Controller'; $controller = new $class($this->registry);
if (is_callable(array($controller, $this->action)) == false){ $action = 'index'; } else{ $action = $this->action; } $controller->$action(); }
// ambil nilai atribut public function getQuery() {
return end($this->route); }
} ?>
BaseController
Kelas BaseController adalah kelas abstrak yang menjadi basis dari semua kelas kontroller. Ketika kelas ini dipanggil (__construct) mendefeinisikan kelas registry dan variabel view yang diambil dari registry untuk kelas kontroller. Dan mengirimkan nilai variabel view untuk template ketika telah selesai dipanggil (__destruct). Kelas ini memiliki method abstrak index, yang artinya setiap kelas kontroller harus memilki method index.
BaseController.php <?php
abstract class BaseController {
protected $_registry; protected $view;
public function __construct($registry) { $this->_registry = $registry;
$this->view = $registry->template; }
public function __destruct() {
$this->view->dispatch(); }
abstract public function index(); }
?>
Template
Kelas Template bertugas untuk mengatur template dan mengirimkan nilai yang diatur pada kontroller Template.php <?php class Template { private $_registry; private $vars = array(); private $path;
private $_norender = false;
public function __construct($registry) { $this->_registry = $registry;
}
public function __set($index, $value) {
$this->vars[$index] = $value; }
Buat registri saat kelas ini dipanggil dan set variabel menggunakan method __set. Method untuk atur untuk path/letak template
...
public function setPath($path) { if (is_dir($path) == false) {
throw new Exception ('Invalid template path: `' . $path . '`'); }
$this->path = $path; }
...
Membuat method yang memungkinkan untuk mengambil template yang lain seperti header, footer, atau sidebar jika dibutuhkan.
...
public function load($file) {
foreach ($this->vars as $key => $value){ $$key = $value;
}
include $this->path . '/' . $file; }
Jika kita tidak ingin menampilkan template untuk tujuan yang lain seperti mengirimkan data json ataupun xml. 1 2 3 4 5 6 ...
public function setNoRender($norender = true) {
$this->_norender = $norender; }
...
Yang terakhir mengrimkan nilai-nilai dari kontroller, kemudian tampilkan template
1 2 3 4 5 6 7 8 9 10 11 ...
public function dispatch() {
if($this->_norender) return;
foreach ($this->vars as $key => $value){ $$key = $value;
}
$body = $this->path . '/' . >router->controller . '/' . $this->_registry->router->action . '.php';
if (file_exists($body) == false){
12 13 14 15 16 17 18 19 20 21 22 return false; } include ($body); } } ?> Autoloader
Kelas Autoloader ini diambil dari Anthony Bush gunanya untuk mengambil semua kelas library yang didefinisikan pada direktori yang berbeda sekalipun secara bersamaan, sangat efisien jika memiliki library yang banyak. Semua direktori yang didaftarkan disimpan kedalam cache dengan serialize, dan ketika dipanggil mengambilnya dengan unserialize cache tersebut.
Functions
Kita juga bisa mendefinisikan fungsi-fungsi sederhana yang dibutuhkan, seperti membuat fungsi untuk mengambil path dan membuat url.
1 2
<?php
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 { $base = array( 'css' => '/css', 'js' => '/js', 'img' => '/images' );
$path = ($key) ? $base[$key] : ''; print URL . '/public' . $path; }
function getUrl() {
$args = func_get_args(); print URL . '/' . join('/', $args); }
?>
Index
Seperti dikatakan sebelumnya file index adalah titk akses utama MVC, dengan demikian kita bisa mendeklarasikan variabel dan konfigurasi
1 2 3 4
<?php
error_reporting (E_ALL ^ E_NOTICE); ...
Variabel global untuk path direktori utama (root) dan url 1 2 3 4 5 6 7 ... $site_path = realpath(dirname(dirname(__FILE__))); define ('ROOT', $site_path);
$base_url = 'http://' . $_SERVER['HTTP_HOST']; define ('URL', $base_url);
...
Memuat semua kelas library dengan kelas Autoloader. Pertama atur letak file untuk menyimpan direktori kelas kedalam cache, kemudian mengatur letak direktori kelas.
1 2 3 4 5 6 ...
include ROOT . '/library/Autoloader.php'; include ROOT . '/library/Functions.php';
Autoloader::setCacheFilePath(ROOT . '/library/cache.txt'); Autoloader::setClassPaths(array(
7 8 9 10 11 12 13 14 ROOT . '/library/Core/', ROOT . '/library/Db/', ROOT . '/library/Helper/' )); Autoloader::register(); ...
Mendaftarkan objek template dan router ke registry, serta atur letak direktori yuntuk template dan kontroller. 1 2 3 4 5 6 7 8 9 10 ...
$registry = new Registry;
$registry->template = new Template($registry);
$registry->template->setPath(ROOT . '/application/views'); $registry->router = new Router($registry);
$registry->router->setPath(ROOT . '/application/controllers'); $registry->router->loader();
11 12 13
Model
Pada dasarnya kelas model ditugaskan untuk mengolah data. Walaupun tidak memakai database, bukan berarti model tidak bisa digunakan. Sebagai gantinya disini kita gunakan data array, hanya untuk menunjukan bagaimana Model bekerja pada MVC
Category Category.php 1 2 3 4 5 6 7 8 9 10 11 <?php class Category {
public static function getData() { $data = array( array( 'id' => '1', 'title' => 'kategori1' ), array(
12 13 14 15 16 17 18 19 'id' => '2', 'title' => 'kategori2' ) ); return $data; } } ?> Product Product.php 1 2 3 4 5 6 7 8 9 10 <?php class Product {
public static function getData() { $data = array( array( 'id' => '1', 'id_cat' => '1', 'title' => 'produk1',
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
'description' => 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat'
), array( 'id' => '2', 'id_cat' => '2', 'title' => 'produk2',
'description' => 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat'
), array( 'id' => '3', 'id_cat' => '1', 'title' => 'produk3',
'description' => 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat'
), array( 'id' => '4', 'id_cat' => '2', 'title' => 'produk4',
32 33 34 35 36
nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat' ) ); return $data; } } ?> Controller
Sebuah kontroller adalah pewarisan dari kelas abstrak BaseController. Perlu diperhatikan bahwa setiap kontroller harus memiliki method index karena telah didefinisikan sebelumnya pada kelas abstrak. Kontroller bertugas mengatur aktifitas dan data apa saja yang dikirimkan pada setiap aksi/method untuk tampilan (view).
IndexController
Kelas IndexController memiliki satu aksi yaitu index bertugas untuk menampilkan semua data kategori yang diambil dari model kategori. Karena method getData di model Category bersifat static, cara pemanggilannya seperti berikut :
1 Category::getData(); IndexController.php 1 2 3 <?php
class IndexController extends BaseController {
4 5 6 7 8 9 10 11 12
public function index() { $this->view->title = 'Kategori'; $this->view->data = Category::getData(); } } ?> ProductController
Kelas ProductController mengikuti cara yang sama, tetapi memiliki beberapa aksi tambahan untuk menunjukan aksi selain index dapat dipanggil.
ProductController.php 1 2 3 4 5 6 7 <?php
class ProductController extends BaseController {
public function index() {
$this->view->title = 'Buku';
8 9
} ...
Aksi category bertugas untuk mengatur produk berdasarkan kategori dan aksi view mengatur produk yang dipilih, keduanya memerlukan nilai atribut sebagai id yang dikirmkan oleh url : http://mvc/product/category/1
// atau
http://mvc/product/view/2
Untuk mengambil nilai atribut pada url tersebut menggunakan method getQuery() kelas router 1 2 3 4 5 6 7 8 9 10 11 12 ...
public function category() { $id = $this->_registry->router->getQuery(); $data2 = array(); $data = Product::getData(); foreach($data as $row){ if($row['id_cat'] == $id){ $data2[] = $row; } } $this->view->title = 'Buku';
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 $this->view->category = $data[$id-1]; $this->view->data = $data2; }
public function view() { $id = $this->_registry->router->getQuery(); $id = $id-1; $data = Product::getData(); $this->view->title = 'Buku'.$data[$id]['title']; $this->view->product = $data[$id]['title']; $this->view->description = $data[$id]['description']; } } ?>
PageController
Menampilkan pesan “page not found” jika halaman atau kontroller tidak ditemukan PageController.php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <?php
class PageController extends BaseController {
public function index() {
}
public function notfound() {
$this->view->title = 'Not Found'; $this->view->message = 'Not Found'; }
} ?>
View
Untuk tampilan (view) harus menyesuaikan sesuai dengan kontroller (direktori) dan methodnya (file). Maksudnya jika kita mempunyai kontroller produk, lalu kontroller tersebut memiiki method index, category, dan view, maka diperlukan direktori product dan didalamnya berisikan file method yaitu index.php, category.php dan view.php
Melihat beberapa kontroller dan method yang dibuat sebelumnya, direktori views terlihat seperti
berikut :
Efisiensi penggunaan template dengan memisahkan template bersifat global seperti header, footer, ataupun sidebar jika diperlukan, ditempatkan di direktori views.
Pertama buat styles sederhana styles styles.css Show » 1 2 3 4 5 * { margin: 0; padding: 0; }
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 html{
background: none repeat scroll 0 0 #EEEEEE; }
body {
font-family: Trebuchet MS, Arial, Helvetica, sans-serif; font-size: 100%; color: #333; } a{ color: #333; text-decoration: none; } a:hover{ text-decoration: underline; }
.aligncenter {text-align: center;} .alignright {float:right;}
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 .alignleft {float:left;}
.clear {clear:both; margin-bottom: 20px;} #shoppingcart { position: absolute; top: 50px; left: 50px; height: 100px; width: 500px; background: #eee; border: 1px solid #444; } #shoppingcart p { margin: 0 1em 1em; }
h1 {
font-size: 140%; text-align:center; margin: 0.5em 1em;
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 } #contents { margin: 0 auto; width: 500px; } /*---navigation---*/ #navigation { min-height:25px; margin: 1em 0; } #navigation a { text-decoration: underline; } /*---booklist---*/ #book {
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 float: left; min-width:450px; min-height:250px; background:#f5f5f5; border:1px solid #ccc; border-radius: 10px; -webkit-box-shadow:rgba(0,0,0,.2) 0px 0px 5px; -moz-box-shadow:rgba(0,0,0,.2) 0px 0px 5px; -o-box-shadow:rgba(0,0,0,.2) 0px 0px 5px; box-shadow:rgba(0,0,0,.2) 0px 0px 5px; padding: 20px; } #book .list ul { list-style-type: none; } #book .list ul li { padding: 0 0 0 30px; margin: 0 1em 1em;
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 } #book p {
margin: 0 1em 1em; } #contents table { font-size: 90%; border-collapse: collapse; } #contents table td { border: 1px solid #999; width: 20%; }
#contents p, #contents button { margin: 1em;
}
1 2 3 4 5 6 7 8
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head>
<title><?php echo $title ?></title>
<link rel="stylesheet" href="<?php baseUrl('css'); ?>/styles.css" /> </head>
<body>
<div id="contents">
<div id="navigation"><a href="javascript: history.go(-1)">Back</a></div>
Ketiga buat template footer.php 1
2
</body> </html>
Untuk memakai template header dan footer pada template body pada view menggunakan method load kelas template.
1 2 3 $this->load('header.php'); /*** body ***/ $this->load('footer.php'); Index
Sekarang buat template body untuk aksi index IndexController index/index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 <?php $this->load('header.php'); ?> <div id="book"> <h1>Kategori</h1> <div class="list"> <ul>
<li><a href="<?php getUrl('product'); ?>" title="produk">Semua</li> <?php foreach($data as $row) : ?>
<li><a href="<?php getUrl('product', 'category', $row['id']); ?>" title="produk"><?php echo $row['title']; ?></li>
<?php endforeach; ?> </ul> </div> </div> <?php $this->load('footer.php'); ?> Product
Tampilan aksi index untuk ProductController 1 2 3 4 5 6 7 8 9 10 11 12 <?php $this->load('header.php'); ?> <div id="book"> <h1>Daftar Buku</h1> <div class="list"> <ul> <?php foreach($data as $row) : ?>
<li><a href="<?php getUrl('product', 'view', $row['id']); ?>" title="produk"><?php echo $row['title']; ?></li>
<?php endforeach; ?> </ul>
</div> </div>
<?php $this->load('footer.php'); ?>
product/category.php 1 2 3 4 5 6 7 8 9 10 11 12 <?php $this->load('header.php'); ?> <div id="book">
<h1>Buku Kategori <?php echo ucwords($category['title']); ?></h1> <div class="list">
<ul>
<?php foreach($data as $row) : ?>
<li><a href="<?php getUrl('product', 'view', $row['id']); ?>" title="produk"><?php echo $row['title']; ?></li>
<?php endforeach; ?> </ul>
</div> </div>
<?php $this->load('footer.php'); ?>
product/view.php 1 2 3 4 5 6 7 <?php $this->load('header.php'); ?> <div id="book"> <h1><?php echo $product?></h1> <p><?php echo $description ?></p> </div> </div> <?php $this->load('footer.php'); ?> Page
Tampilan untuk aksi notfound (404) PageController page/notfound.php 1 2 3 <?php $this->load('header.php'); ?> <div id="booklist"> <h1><?php echo $message; ?></h1>
4 5 6 7 8
<p>This is a custom 404 error page.</p>
<p>You can put whatever content you like here such as search for your site</p> </div>
</div>
<?php $this->load('footer.php'); ?>
http://gojayincode.com/ Contoh dasarnya dalam masalah login. Bisanya kita memerlukan 3 script, misalnya. home_login.php, do_login.php dan success_login.php.
Gambar di atas menerangkan secara sederhana bagaimana cara kita login. Pertama kita mengakses script home_login.php di dalam script tersebut terdapat kodingan untuk tampilan terhadap user dan logika bila terjadi kesalahan login user terhadap username dan passwordnya. Lalu di do_login.php terdapat kodingan yang berisikan logika kita apakah username dan
password benar. Bila benar maka halaman akan di direct ke success_login.php bila salah maka kita kembalikan ke home_login.php dengan pesan errornya.
Untuk melakukan hal tersebut kita memerlukan 3 script. Lalu bagaimana bila kita melakukan hal-hal yang lain ? Seperti fitur-fitur yang ada di website e-commerce, website yang lebih kompleks lainnya ? Tentu memiliki banyak script yang diperlukan. Lalu bagaimana kita me-manage script-script yang sebegitu banyak ? Ditambah lagi kodingan untuk tampilan dicampur aduk dengan proses database-nya dan alur logikanya. Hal tersebut akan mempersulitkan kita untuk melakukan pengembangan karena script-script tersebut memiliki kodingan mati. Hal tersebut dapat kita temukan solusinya bila kita menggunakan arsitektur MVC atau Model-View-Controller. Dengan model kita dapat membagi mana script untuk proses model database, script untuk tampilan atau view, lalu untuk mengontrol dua hal tersebut kita memerlukan sebuah controller atau bisa kita gunakan untuk alur logikanya.
Sesuai dengan yang kita bahas sebelumnya. MVC merupakan kepanjangan dari Model-View-Controller. Dimana bagian Model, View dan Controller memiliki fungsinya masing-masing. Keuntungan dengan menggunakan MVC adalah kita dapat mengelompokan script-script sesuai dengan fungsinya, mudah untuk di kembangkan karena untuk membuat MVC kita pasti akan membuat beberapa class yang nantinya akan kita buat menjadi beberapa objek. Sehingga kita dapat memaksimalkan konsep Object Oriented Programming atau kita sebut OOP.
http://inovasimuda.com/
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:
echo "Counter: $i “;
} ?>
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