Codeigniter

Sesi I : Pengenalan Framework Codeigniter

Codeigniter
CodeIgniter adalah sebuah aplikasi web framework untuk PHP yang dikembangkan oleh EllisLab . Hal ini memungkinkan pengembang untuk membangun aplikasi web lebih cepat, dan library yang terdapat di CI akan banyak membantu dan mempercepat pembangunan aplikasi di PHP. CodeIgniter didasarkan pada desain modular, yang berarti bahwa Anda dapat menerapkan library khusus sesuai dengan seleraAnda. Tutorial ini akan berusaha untuk menunjukkan anda dasar-dasar pembentukan framework CI yang menggunakan pendekatan MVC.

Mengapa harus pakai Framework?
Frameworks membantu kita dalam mengembangkan aplikasi dengan menyediakan class yang dapat digunakan kembali dan fungsi yang dapat mengurangi waktu pengembangan secara signifikan. Beberapa kelemahan untuk framework, adalah bahwa mereka menyediakan kelas yang tidak diperlukan untuk aplikasi kita, dan menambahkan kode yang membuat aplikasi sulit untuk dinavigasi.

Mengapa CodeIgniter?
CodeIgniter adalah framework yang sangat ringan dengan performa yang sangat baik. Selain itu sangat cocok untuk pemula karena • • • learning curve rendah user guide yang sangat bagus, berurutan dan sangat mudah untuk dipahami komunitas yang sangat bagus (indonesia maupun internasional).

Berikut adalah daftar alasan apa yang membuat CodeIgniter kerangka cerdas untuk digunakan? • • • • • • • Small footprint dengan performa yang bagus ( Footprint : It does refer to resources. Particularly memory. It requires a smaller amount of memory when running.) Pendekatan MVC PHP 4 (4.3.2+) dan 5 (CI 1.7.x) , PHP 5.x (CI(2.0) Support databases MySQL (4.1+), MySQLi, MS SQL, Postgres, Oracle, SQLite, dan ODBC. Application security Easy caching operations Banyak libraries dan helpers untuk membantu developer dalam coding yang kompleks seperti email, image manipulation, form validation, file uploading, sessions, multilingual apps

Why MVC?
MVC adalah Model, View, Controller. MVC adalah pola pemrograman yang digunakan dalam pembangunan aplikasi web. Pola ini memisahkan business logic, user interface dan database. Implementasi yang bagus dari pola ini adalah apabila developer dapat memodifikasi interface atau business logic tanpa mempengaruhi lainnya. MVC juga meningkatkan fleksibilitas aplikasi dengan me-reuse function di model atau view pada controller lainnya

M

Model → interaksi ke database dan akan berisi function untuk melakukan aktivitas CRUD pada database

V C

View → tampilan data dan interface

Controller → Controller berisi business logic yang berjalan di aplikasi, dan berada ditengah antara View dan Model. Dan mengatur apa yang dikirim ke view dari model

Contoh dari pendekatan MVC. 1. User berinteraksi dengan view pada saat melihat halaman web, kemudian memilih berita 2. Controller menerima request dari user untuk menampilkan berita, dan kemudian controller mengirimkan perintah untuk menjalankan function yang ada di model. 3. Model mengirimkan hasil query ke controller 4. Hasilnya akan ditampilkan melalui view dan ditampilkan ke user

Memasang CodeIgniter ke web page
Setelah melakukan download, anda harus melakukan unzip. Di dalam folder CodeIgniter_2.0.0 akan terdiri dari 3 folder : application, system, dan user_guide, dan 2 file : index.php dan license.txt system → menyimpan file dan kode yang dibutuhkan untuk menjalankan CI application → menyimpan file yang berisi aplikasi kita dan apa saja yang menjadi bagian dari aplikasi yang berhubungan dengan CI, 99% file yang akan kita kerjakan ada disini user_guide → dokumentasi dari CI index.php → file yang berisi konfigurasi awal dari CI Folder Application berisi : ▪ ▪ config menyimpan semua file konfigurasi The controllers menyimpan semua controller yang merupakan bisnis proses dari aplikasi The errors menyimpan template dari halaman error The helpers menyimpan helper untuk membantu aplikasi The hooks menyimpan file yang digunakan untuk memodifikasi fungsi dari core files CI The language menyimpan text yang dapat digunakan untuk membuat multilingual sites. The libraries menyimpan library untuk aplikasi

▪ ▪ ▪ ▪ ▪ •

The models menyimpan semua model yang berarti

semua yang berhubungan dengan database • • The views menyimpan file untuk menampilkan halaman web ke user The cache menyimpan semua cache yang digenerate library caching

Konfigurasi CodeIgniter
• • autoload.php → semua yang akan diload secara otomatis oleh aplikasi config.php → berisi konfigurasi CI beberapa yang penting : $config['base_url'] = ''; → base_url yang akan menjadi base url dari aplikasi, misal : $config['base_url'] = "http://localhost/"; $config['index_page'] = ''; → jembatan untuk menjalankan controller $config['log_threshold'] = “”; → log dari aplikasi • database.php → konfigurasi database ['hostname'] hostname dari database server ['username'] username untuk connect ke database ['password'] password untuk connect ke database ['database'] nama database ['dbdriver'] driver database, contoh: mysql ['dbprefix'] prefix, yang akan ditambahkan ke nama table pada saat menggunakan Active Record • routes.php → digunakan untuk melakukan remap URL request ke controller yang kita inginkan Contoh Segment dari URL : http://www.detanto.net/index.php/(controller|folder)/method/parameter/..... ada 2 yang sudah direserve : 1. $route['default_controller'] = 'controlleryangdipilih'; 2. $route['404_override'] = 'errors/page_missing' → apabila controller yang diremap atau di akses tidak ada Wildcards (:any) → semua karakter akan dimasukkan (:num) → hanya numerik Regular Expression (Regex) $route['hrdlaporan/([\w\-]+)?$'] = "hrd/laporan/list_form/$1"; → w → regex untuk word boundaries

Controller
Konvensi : • • Nama file lowercase Nama class Huruf depan pertama Kapital

What is a Controller?
Controller adalah class yang dinamakan sedemikian rupa, sehingga dapat dipanggil di URL, disimpan di folder application/controller Contoh : http://www.detanto.net/index.php/tampil CI akan mencari file controller yang dibuat, misalnya tampil.php

Anatomi dari Controller
class Namacontroller extends CI_Controller { function index() { === code'; } function namafunction() { === code'; } }

Function dalam Controller
Function dalam CI adalah function yang bisa dipanggil dari URL. Default yang pertama kali diload oleh CI apabila URL tidak menyebutkan nama function, adalah function bernama index(). <?php class Tampil extends CI_Controller { function index() } function testing(){ echo “Testing”; } }?> apabila kita memanggil http://www.detanto.net/index.php/tampil, yang akan ditampilkan adalah function index, apabila kita memanggil http://www.detanto.net/index.php/tampil/testing yang akan ditampilkan adalah function testing. { echo 'Selamat Malaam!';

Function Paramater
Parameter bisa direquest dari URL <?php class Tampil extends CI_Controller { function index() } function testing($parameter){ echo $parameter; } }?> { echo 'Selamat Malaam!';

Apabila kita memanggil http://www.detanto.net/index.php/tampil/testing/123, akan ditampilkan 123 di halaman web.

Reserved Names
• • • • • • • • • is_really_writable() load_class() get_config() config_item() show_error() show_404() log_message() _exception_handler() get_instance()

Private Functions
Dengan menambahkan _ (underscore) pada nama function <?php class Tampil extends CI_Controller { function index() } function _testing($parameter){ echo $parameter; } }?> { echo 'Selamat Malaam!';

Views
View adalah halaman web yang akan ditampilkan kepada user, disimpan di folder application/view file : v_tampil.php <html> <head> <title>Testing 123</title> </head> <body> <h1>Selamat Datang Boss!</h1> </body> </html>

View dan Controller
Penggabungan View dan Controller :

<?php class Tampil extends CI_Controller { function index() } function testing($parameter){ echo $parameter; $this->load->view(‘v_tampil’); } }?> { echo 'Selamat Malaam!';

Menampilkan data dari Controller ke View
Data disisipkan ke view dari controller menggunakan array dari object tampil.php <?php class Tampil extends CI_Controller { function index() } function testing($parameter){ $data[‘variabel’] = $parameter; $this->load->view(‘tampil’, $data); } }?> file : v_tampil.php <html> <head> <title>Testing 123</title> </head> <body> <h1>Selamat Datang <?=$variabel?>!</h1> </body> </html> { echo 'Selamat Malaam!';

Model
Model digunakan untuk melakukan aktivitas di database

Anatomi dari Model
class Model_name extends CI_Model { function __construct() { parent::__construct();

} }

Load model ke aplikasi
Bisa dilakukan di autoload atau di controller $this->load->model('model_name'); Contoh model class Tampil_model extends CI_Model { function __construct() { parent::__construct(); } function getDatabase(){ $this->db->select(‘*’); $this->db->from(‘Nama_table); $query = $this->db->get(); } }

Studi Kasus
Buat website dengan menampilkan nama anda sendiri dengan CI! Petunjuk : 1. Buat Controller 2. Buat View 3. Ubah base_url di config.php Ubah routes.php sesuai dengan controller yang dibuat

Codeigniter
Sesi I : Database dan CRUD

Database
Koneksi ke database
Untuk melakukan koneksi ke database, file database.php di application/config/config.php harus dirubah sesuai dengan kebutuhan kita Di file database.php, ubah : $db['default']['hostname'] = "localhost"; $db['default']['username'] = "root"; $db['default']['password'] = "password"; $db['default']['database'] = "trainingCI"; $db['default']['dbdriver'] = "mysql"; ubah file application/config/autoload.php dan tambahkan ‘database’ pada saat autoload libraries, supaya library database dapat langsung digunakan

Menjalankan Query
$this->db->query(); Untuk menjalankan query, gunakan fungsi berikut : $this->db->query(‘SQL Command’);

Query Bindings
Digunakan untuk menyederhanakan query dengan membiarkan sistem yang melakukannya $sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?"; $this->db->query($sql, array(13, 'terdaftar', 'myung'));

Metode Pengambilan hasil query result()
Mengembalikan hasil query sebagai array dari object atau array kosong apabila gagal. Metode yang digunakan foreach loop : $query = $this->db->query("YOUR QUERY"); foreach ($query->result() as $row) { echo $row->title; echo $row->name; echo $row->body; }

result_array()
Mengembalikan hasil query sebagai array murni. Metode yang digunakan foreach loop : $query = $this->db->query("YOUR QUERY"); foreach ($query->result_array() as $row) { echo $row['title']; echo $row['name']; echo $row['body'];

}

row()
Mengembalikan satu baris hasil sebagai object, meskipun hasil dari query lebih dari satu row, yang dikembalikan adalah row pertama hasil query. $query = $this->db->query("YOUR QUERY"); if ($query->num_rows() > 0) { $row = $query->row(); echo $row->title; echo $row->name; echo $row->body;

}

row_array()
Sama dengan row, tetapi yang dikembalikan bukan object, melainkan array murni $query = $this->db->query("YOUR QUERY"); if ($query->num_rows() > 0) { $row = $query->row_array(); echo $row['title']; echo $row['name']; echo $row['body']; }

Active Record
Digunakan untuk melakukan aksi ke database (CRUD), dengan melakukan minimal pemrograman pada SQL language $this->db->select(‘*’); → melakukan select * $this->db->from(‘Nama_table); → from $query = $this->db->get(); → query dijalankan Ada banyak AR di CI $this->db->select(); $this->db->from(); $this->db->where(); $this->db->join(); $this->db->orderby();

$autoload['libraries'] = array('database');

Currently, the CI setup will have a default controller called “welcome.php”; you can find this in the system/application/controllers folder. For this tutorial, delete it and open your system/application/config/routes.php file. Change the default array item to point to the “helloworld” controller. $route['default_controller'] = "Helloworld " CI also has a view file that we do not need. Open up the system/application/view/ folder and delete the welcome_message.php file. Create the Helloworld Database As this isn’t really a tutorial on MySQL, I’ll keep this section as short as possible. Create a database called “helloworld” and run the following SQL through phpMyAdmin (or similar MySQL client). CREATE TABLE `data` ( `id` int(11) NOT NULL auto_increment, `title` varchar(255) NOT NULL, `text` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; INSERT INTO `data` (`id`, `title`, `text`) VALUES(1, 'Hello World!', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sapien eros, lacinia eu, consectetur vel, dignissim et, massa. Praesent suscipit nunc vitae neque. Duis a ipsum. Nunc a erat. Praesent nec libero. Phasellus lobortis, velit sed pharetra imperdiet, justo ipsum facilisis arcu, in eleifend elit nulla sit amet tellus. Pellentesque molestie dui lacinia nulla. Sed vitae arcu at nisl sodales ultricies. Etiam mi ligula, consequat eget, elementum sed, vulputate in, augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;'); Create the Helloworld Model Models are optional in CI, but it’s considered best practice to use them. They are just PHP classes that contain functions which work with information from the database. Go ahead and make a helloworld_model.php file in the system/application/models folder. In this file, create a Helloworld_model class, Helloworld_model construct and a function called getData. In the getData function we are going to use Active Record database functions which speed up database development times when working with CI and databases. Essentially, they are simplified functions to create queries. <?php class Helloworld_model extends Model { function Helloworld_model() {

// Call the Model constructor parent::Model(); } function getData() { //Query the data table for every record and row $query = $this->db->get('data'); if ($query->num_rows() > 0) { //show_error('Database is empty!'); }else{ return $query->result(); } } } ?> Create the Helloworld Controller Let’s create a controller that will display the view, and load the model. That way, when you go to the address http://localhost/ci/index.php/helloworld/, you will see the data from the database. In the folder system/application/controllers, create a file called helloworld.php. In this new file, we’ll create a class which has the same name as the file. Within this class, you need to create a function called “index”. This is the function that will be displayed when no other is provided – e.g. when http://localhost/ci/index.php/helloworld/ is visited. If, for example, we created a function called foo, we could find this as http://localhost/ci/index.php/helloworld/foo/. The key thing to remember is how CI structures its URLs; e.g http://host/codeignitordirectory/index.php/class/function. In the controller index function, we need to load the model, query the database, and pass this queried data to the view. To load any resources into CI e.g. libraries, helpers, views, or, models, we use the load class. After we have loaded the model, we can access it through its model name and the particular function. To pass data to a view we need to assign it to an array item and pass the array – which recreates the array items as a variable in the view file. <?php class Helloworld extends Controller{ function index() { $this->load->model('helloworld_model');

$data['result'] = $this->helloworld_model-><span class="sql">getData</span>(); $data['page_title'] = "CI Hello World App!"; $this->load->view('helloworld_view',$data); } } ?> Create the Helloworld View The view file is what the user sees and interacts with, it could be a segment of a page, or the whole page. You can pass an array of variables to the view through the second argument of the load model function. To make the view for our tutorial, create a new file called helloworld_view.php in the system/application/view folder. Next, we just need to create our normal html, head and body elements, and then a header and paragraph for the information from the database. To display all the records received from the database, we put it in a “foreach” loop which loops through all the elements. <html> <head> <title><?=$page_title?></title> </head> <body> <?php foreach($result as $row):?> <h3><?=$row->title?></h3> <p><?=$row->text?></p> <br /> <?php endforeach;?> </body> </html>

Sign up to vote on this title
UsefulNot useful