IKG3A3 / Software Project II Mahmud Imrona, M.T. Izzatul Ummah, M.T. Kelompok Keahlian Algoritma dan Komputasi
LECTURE NOTE WEEK 7
1
8/25/2015
WEEK 7 Framework MVC (model-view-controller) – CodeIgniter
2
8/25/2015
IKG3A3 - Software Project II
WHY FRAMEWORK? Alasan Menggunakan Framework : (1) standard coding : sebuah standar yang harus diikuti oleh programmer untuk menulis code (2) best practice : kumpulan-kumpulan action yang telah teruji oleh para expert (3) design pattern : teknik-teknik yang menjadi best practice (4) common function : fungsi-fungsi atau library yang telah umum digunakan dalam pengembangan sebuah sistem
3
8/25/2015
IKG3A3 - Software Project II
PENGENALAN CODEIGNITER Apa itu CodeIgniter ? Arsitektur Kelebihan dan Kekurangan
4
8/25/2015
IKG3A3 - Software Project II
CODE IGNITER CodeIgniter adalah sebuah framework PHP yang dapat mempercepat pengembang untuk membuat sebuah aplikasi web – toolkit. CodeIgniter merupakan framework open source. Dibuat oleh EllisLab. First Launching CodeIgniter Ver. 1.0 pada 28 Februari 2006.
5
8/25/2015
IKG3A3 - Software Project II
FITUR CODEIGNITER Dapat dijalankan pada PHP 4 atau di atasnya, khusus CI 2.0 tidak mendukung PHP4 Relatif Ringan (Light Weight) Relatif Sangat Cepat Menggunakan Model View Control (M-V-C) URL-nya jelas : diminimalisasi penggunaan $_GET dan digantikan dengan URL Paket yang mudah diperoleh : Tidak membutuhkan server requirement yang macam-macam serta mudah mengadopsi library. Learning Curve Rendah : Mudah dipelajari Komunitas Pengguna yang cukup banyak Dokumentasinya jelas dan mudah 6
8/25/2015
IKG3A3 - Software Project II
MVC model
“Otak” dari aplikasi ada di controller. “Wajah” aplikasi ada di view. “Data” ada di model.
MODEL-VIEW-CONTROLLER Pattern/teknik pemogramanan yang memisahkan business logic (alur pikir), data logic (penyimpanan data) dan presentation logic (antar muka aplikasi). Pemisah antara desain, data dan proses.
8
8/25/2015
IKG3A3 - Software Project II
MODEL Model berhubungan dengan data dan interaksi ke database atau webservice. Model merepresentasikan struktur data dari aplikasi yang bisa berupa basis data maupun data lain, misalnya dalam bentuk file teks, file XML maupun webservice. Model akan berisi class dan fungsi untuk mengambil, melakukan update dan menghapus data website. Model biasanya akan berhubungan dengan database yang ada kaitan dengan perintah-perintah query SQL.
9
8/25/2015
IKG3A3 - Software Project II
VIEW View berhubungan dengan segala sesuatu yang akan ditampilkan ke end-user, berupa halaman web, rss, javascript dan lain-lain, sehingga harus menghindari adanya logika atau pemrosesan data di view. View hanya berisi variabel-variabel yang berisi data yang siap ditampilkan. View dapat dikatakan sebagai halaman website yang dibuat dengan menggunakan HTML dan bantuan CSS atau JavaScript. Dalam View jangan pernah ada kode untuk melakukan koneksi ke database. View hanya dikhususkan untuk menampilkan data-data hasil dari model dan controller 10
8/25/2015
IKG3A3 - Software Project II
CONTROLLER Controller bertindak sebagai penghubung data dan view. Controller terdapat class-class dan fungsi-fungsi yang memproses permintaan dari View ke dalam struktur data di dalam Model. Controller juga tidak boleh berisi kode untuk mengakses database, karena tugas mengakses data telah diserahkan kepada model. Tugas controller adalah menyediakan berbagai variabel yang akan ditampilkan di view, memanggil model untuk melakukan akses ke basis data, menyediakan penanganan kesalahan/error, mengerjakan proses logika dari aplikasi serta melakukan validasi atau cek terhadap input. 11
8/25/2015
IKG3A3 - Software Project II
ARSITEKTUR CODEIGNITER
12
8/25/2015
IKG3A3 - Software Project II
KELEBIHAN CODEIGNITER Adanya Helpers dan libraries. Mendukung PHP 4 atau di atasnya. Performa yang sangat baik. Relatif ringan. Relatif sangat cepat. Dokumentasi dan tutorial yang jelas.
13
8/25/2015
IKG3A3 - Software Project II
KEKURANGAN CODEIGNITER Object Relational Mapping (ORM) yang tidak sesuai Module yang terbatas Fungsi modul ‘agak’ terbatas dibandingkan Ajax
BELAJAR CODEIGNITER Jangan mencoba CodeIgniter sebelum Anda menguasai HTML, PHP dan Object Oriented Programming. Kebanyakan yang baru belajar Code Igniter tanpa memiliki dasar PHP yang baik, akan mengalami banyak kesulitan. Kesulitannya bukan dalam menguasai konsep Code Igniter, melainkan masih berkutat di masalah PHP.
Core of CodeIgniter Libraries Helpers Document
Struktur Folder Aplikasi Application Controller – News.php
Model – NewsDAO.php
View – News.php
Controllers class News extends Controller { function News() { }
parent::Controller();
function index() {
}
$data['tpl_view'] = 'news/index'; $data['active_tab'] = 'news'; $this->load->view('layout',$data);
Function otherFunction($para1, $para2){ } }
// Pemrosesan data dan view di sini
Models class NewsDAO extends Model { function NewsDAO () { }
parent::Model();
function verifyUser($username,$password){
$this->db->select('id,username'); $this->db->from('admin'); $this->db->where('username', $username); $this->db->where('password', $password); $this->db->where('active', 'Yes'); $this->db->limit(1); $Q = $this->db->get(); return $Q; }
Function otherFunction($para1, $para2){ }
// Pemrosesan data }
Views load->view('header');?> load->view($tpl_view);?> load->view('footer');?>
Directory Application pada CodeIgniter config - tempat menyimpan semua file konfigurasi yang ada di dalam aplikasi, mulai dari database, router dan autoload aplikasi. controllers - tempat menyimpan semua file controller. errors - tempat menyimpan semua template error aplikasi. helpers - tempat menyimpan helper-helper yang bukan berasal dari CI. hooks - tempat menyimpan hook yang digunakan untuk mengubah alur fungsi dari core CI. language - tempat menyimpan bahasa-bahasa yang akan di gunakan. libraries - tempat menyimpan semua library buatan sendiri. models - tempat menyimpan semua model. views - tempat menyimpan semua file view aplikasi.
Directory System pada CI : cache - tempat menyimpan semua cache yang dibuat caching library. codeigniter - tempat menyimpan semua semua file internals CI. database - tempat menyimpan semua driver database drivers dan class yang akan digunakan. fonts - tempat menyimpan semua font yang digunakan image manipulation library. helpers - tempat menyimpan semua helper core CI. language - tempat menyimpan semua language core CI. libaries - tempat menyimpan semua library core CI logs - tempat menyimpan semua logs generated oleh CI. plugin - tempat menyimpan semua plugin core CI. scaffolding - tempat menyimpan semua file yang berfungsi sebagai scaffolding .
Standard Coding CodeIgniter Penamaan Class dan Method Penamaan Class harus dimulai dengan huruf besar. Jika class menggunakan beberapa kata maka kata-kata tersebut dipisahkan menggunakan underscore dan bukan camelcase. Contoh salah: class superclass class SuperClass Contoh Benar: class Super_class
Standard Coding CodeIgniter Aturan di atas juga berlaku untuk method contohnya Contoh kurang tepat: function fileproperties() //Tidak deskriptif dan memiliki underscore function fileProperties() // Tidak deskriptif dan underscore CamelCase function getfileproperties() // Kurang underscore function getFileProperties() // menggunakan CamelCase get_the_file_properties_from_the_file() // terlalu panjang Contoh Tepat: function get_file_properties() // deskriptif, pakai underscore, dan huruf kecil
Segment URL di CodeIgniter
Konfigurasi Base url, Bagian ini merupakan url yang akan dimasukkan pada konfigurasi base_url yang berupakan url paling dasar untuk mengakses web atau aplikasi. Segmen URI pertama yaitu class. Class tersebut merupakan nama kelas controller yang akan dipanggil. Apabila segment ini kosong maka akan digantikan dengan default controller yang telah di-setting dan dikonfigurasi router.php Segmen URI kedua yaitu fungsi dari class controller yang telah dipanggil tadi. Apabila segment kedua ini kosong maka fungsi yang dipanggil adalah fungsi index dari kelas controller tersebut Segmen URI ketiga biasanya berisi parameter dari fungsi. Jika fungsi dari controller yang dipanggil mempunyai parameter maka parameternya harus dimasukkan sebagai segment URI sesuai urutan.
Membuat Controller pada CodeIgniter (percobaan.php) load->view('v_percobaan',$data); } } Simpan file percobaan.php pada C:\xampp\htdocs\CI\application\controllers
Membuat View pada CodeIgniter (v_percobaan.php)
Percobaan View Simpan file v_percobaan.php pada C:\xampp\htdocs\CI\application\views
Mengakses di Browser
Jalankan XAMPP Apache, buka browser, lalu ketikkan :
http://localhost/ci/index.php/percobaan
CodeIgniter Tips Untuk menentukan default controller, buka folder application/config/routes.php dan ubah variabel ini pada file routes.php $route['default_controller'] = 'Blog';
Blog adalah nama kelas controller yang ingin digunakan. Jika sekarang hanya memanggil file index.php utama, tanpa menentukan segmen URI apapun, maka secara default akan melihat pesan Hello Codeigniter
CodeIgniter Tips $route['default_controller'] = 'Blog';
Ketik : http://localhost/ci/index.php/
Controller dan View "hello CodeIgniter" yang disimpan di controller. Namun bisa dilakukan di view
Memanggil View dari Controller load->view("hello_codeigniter"); } } /* End of file Blog.php */ /* Location: ./application/controllers/ C_blog.php */
Memanggil View dari Controller Buatlah file hello_CodeIgniter.php di folder application>view (application/views/hello_codeIgniter.php) Syntax : Hello saya adalah view
/* End of file hello_codeigniter.php */ /* Location: ./application/views/hello_codeigniter.php*/ Buka : http://localhost/ci/index.php/C_blog
Memanggil View dari Controller Syntax tersebut akan memberikan hasil yang sama dengan contoh kasus pertama (tanpa menggunakan view), yang berbeda hanya tulisannya saja. Sebuah View sebenarnya hanyalah sebuah halaman web atau bagian dari halaman web, seperti sebuah header, footer, sidebar, dan lain-lain. Bahkan, View bisa menjadi fleksibel karena view dapat dimasukkan ke dalam view yang lain jika dibutuhkan. Nama_view adalah nama file view, yang diletakkan di dalam folder application/view. Perintah memanggil view dalam controller : $this->load->view('nama_view');
TUGAS PEKAN INI (PHP, MySQL) Siapkan dulu database MySQLnya di http://localhost/phpmyadmin/ – Di dalam database masing-masing, buatlah dua entitas dengan satu relasi n-m.
Buatlah web PHP yang dapat mengakses dua tabel tersebut, dengan spesifikasi: – Dapat melakukan query ke database: VIEW, ADD, EDIT, DELETE, SEARCH, FILTER, ORDER BY, NUMBER OF ROW PER PAGES. – Harus menerapkan HTML, PHP, dan query MySQL. – Boleh (tapi tidak harus) menggunakan framework misalnya: Yii, CodeIgniter, Laravel, Symfony, Zend, PHPCake.
THANK YOU 8/25/2015 36