Mvc With Codeigniter
Short Description
Download Mvc With Codeigniter...
Description
MVC MV C with Codeigniter PHP Framework
MVC MV C ( Model – View – Controller )
rizky tahara shita - http://tahara.web.id
2
MVC MV C ( Model – View – Controller )
rizky tahara shita - http://tahara.web.id
2
Software Design Desi gn Pattern Desig n Pattern ●
●
●
●
Masalah dalam develop software: ●
Algoritma mana yang akan digunakan?
●
Design mana yang cocok untuk digunakan?
●
Teknik apa yang harus diterapkan diterapkan??
●
Modul apa saja yang dapat ditambahkan?
Tiap masalah dalam develop software adalah unik, karena itu solusinya harus lebih unik. Bagaimana menerapkan menerapkan solusi yang tepat pada masalah yang sedang dihadapi? Design Pattern Pattern merupakan solusi so lusi umum dalam menghadapi masalah yang sering timbul pada pengembangan aplikasi. aplikasi.
rizky tahara shita - http://tahara.web.id
3
MVC – Model View Controller ●
●
Metode pendekatan pembuatan aplikasi dengan memisahkan aplikasi menjadi 3 segmen: ●
Model
●
View
●
Controller
Struktur aplikasi lebih diutamakan dalam penggunaan kembali code program (reuse).
rizky tahara shita - http://tahara.web.id
4
MVC – Model View Controller (cont.)
rizky tahara shita - http://tahara.web.id
5
MVC – Model ●
Merupakan representasi tipe data yang akan digunakan oleh aplikasi. ●
●
contoh: –
model database
–
model RSS Feeds
–
API Calls
Pertimbangan aspek: ●
Desain database.
●
Query & Store Procedure.
●
Object Class.
●
Data Access Layer.
●
Mediasi antara Controller dan View. rizky tahara shita - http://tahara.web.id
6
MVC – View ●
●
●
Informasi yang akan ditampilkan kepada pengguna melalui browser. Dapat berupa file HTML, generated PHP to HTML (template engine). Pertimbangan aspek: ●
Reporting.
●
Forms.
●
Validation.
●
AJAX.
●
Graphic & Styling.
●
UI testing.
●
Mediasi antara Controller dan Model. rizky tahara shita - http://tahara.web.id
7
MVC – Controller ●
●
●
Business logic dari aplikasi yang menjadi jembatan antara Model dan View. Me-respon terhadap HTTP Request dan menghasilkan halaman web yang diminta oleh pengguna. Pertimbangan aspek: ●
Validasi data.
●
Menggunakan database layer.
●
Algoritma.
●
Mediasi antara View dan Model. rizky tahara shita - http://tahara.web.id
8
How MVC can HELP ?
rizky tahara shita - http://tahara.web.id
9
Framework
rizky tahara shita - http://tahara.web.id
10
Framework – memudahkan kompleksitas ●
Menyediakan fungsi – fungsi umum.
●
Digunakan untuk aplikasi yang lebih spesifik.
●
Alur dikontrol oleh framework.
●
Fokus pada pengembangan aplikasi.
rizky tahara shita - http://tahara.web.id
11
Mengapa menggunakan Framework? ●
Aplikasi berbasis web semakin kompleks → tambah sulit untuk maintenance. ●
●
Membantu dalam menerapkan konsep MVC. ●
●
tambah menu A, menu B, transaksi C, dll pemisahan antara model, view dan controller terlihat jelas.
Menyediakan mediasi antar muka 3 layer MVC. ●
tidak perlu kuatir dalam melakukan integrasi antara presentation ke business layer dan ke data access layer. rizky tahara shita - http://tahara.web.id
12
Harapan dari adanya Framework ●
Mudah digunakan.
●
Fasilitasi performa aplikasi.
●
●
Menjamin keamanan.
●
Memisahkan HTML dan PHP.
●
●
●
Mendukung internationalisasi (multi-language).
●
Ketersediaan dokumentasi.
●
Komunitas aktif.
Mendukung AJAX. Tidak ada batasan penggunaan istilah.
Kemampuan untuk dikonfigurasi
●
●
Mendukung API. Meningkatkan kualitas code.
●
●
●
Melatih best practices.
●
Dukungan terhadap produk yang komersial. Lisensi yang ramah. Ketersediaan dengan web hosting.
rizky tahara shita - http://tahara.web.id
13
PHP Framework ●
CakePHP ●
●
Codeigniter ●
●
http://www.codeigniter.com
Zend Framework ●
●
http://www.cakephp.org
http://framework.zend.com
DOOPHP ●
http://www.doophp.com
40+ PHP Framework Available! rizky tahara shita - http://tahara.web.id
14
Framework – KISS ●
KISS (Keep it Short and Simple)
●
Mencapai KISS: ●
Hindari istilah “Not Invented Here”. –
●
gunakan kembali resource yang sudah ada.
Inovasi. –
inovasi tidak harus selalu hal yang baru; improvisasi dari yang sudah ada.
●
Terbuka terhadap perubahan.
●
Simplicity is a mindset. –
coding disiplin, penggunaan tools, penggunaan library, penggunaan framework → harus simple. rizky tahara shita - http://tahara.web.id
15
Codeigniter 2 ( PHP Framework )
rizky tahara shita - http://tahara.web.id
16
Codeigniter – PHP Framework ●
Membantu dalam pembuatan web based PHP application.
●
Selesai lebih cepat.
●
Menyediakan library yang sering dibutuhkan.
●
Struktur logika lebih simple.
●
Dapat lebih fokus pada pengerjaan aplikasi.
●
Minimalisir penggunaan code pada hanya yang dibutuhkan saja.
rizky tahara shita - http://tahara.web.id
17
Codeigniter Feature ●
Free (lisensi Apache/BSD).
●
Ringan.
●
Cepat.
●
Menggunakan konsep MVC.
●
Human Readable URL.
●
Dukungan library dalam pembuatan aplikasi.
●
Mudah dalam pembuatan library, class.
●
Tidak membutuhkan Template Engine.
●
Dokumentasi lengkap.
●
Adanya Komunitas. rizky tahara shita - http://tahara.web.id
18
Codeigniter Application Flow Chart
rizky tahara shita - http://tahara.web.id
19
CI Controller ●
Huruf pertama nama class harus huruf besar.
●
Extends -kan CI_Controller.
●
Simpan pada: ●
application/ controllers
Akses URL:
●
●
http://localhost/index.php/ nama_controller
rizky tahara shita - http://tahara.web.id
20
CI Controller – Functions ●
Segmen: setelah nama controller ●
●
http://localhost/index.php/nama_controller/ nama_fungsi
Default loaded function → index() ●
http://localhost/index.php/nama_controller/ index
rizky tahara shita - http://tahara.web.id
21
CI Controller – Functions Parameter ●
Function dengan parameter diakses melalui segment selanjutnya setelah nama fungsi: ●
http://localhost/index.php/products/shoes/ sandals / 123
rizky tahara shita - http://tahara.web.id
22
CI Controller – Private Functions ●
Function tidak dapat diakses melalui URL.
●
Gunakan underscore ( _ ) pada nama functions.
rizky tahara shita - http://tahara.web.id
23
CI Controller – Constructors ●
Menjalankan default algoritma.
●
Tidak mengembalikan value.
rizky tahara shita - http://tahara.web.id
24
CI Controller – Full Skeleton
rizky tahara shita - http://tahara.web.id
25
CI Views ●
Desain website (HTML, CSS, jQuery, etc)
●
Regular .php files
●
Simpan pada: ●
application/ views
My Blog Welcome to my Blog! rizky tahara shita - http://tahara.web.id
26
CI Views – Loading View Controller melakukan load View
●
●
$this->load->view('view_file_name');
rizky tahara shita - http://tahara.web.id
27
CI Views – Dynamic Data ●
Controller melakukan load View dengan parameter data yang akan ditampilkan pada view ●
$this->load->view('view_file_name', $variable);
'] = "My Real Title"; '] = "My Real Heading";
$this->load->view('blogview',
;?>
);
rizky tahara shita - http://tahara.web.id
28
CI Model ●
Huruf pertama nama class harus huruf besar.
●
Nama file harus huruf kecil.
●
Extends -kan CI_Model.
●
Simpan pada: ●
class
application/ models extends
{
function __construct() { parent::__construct(); } } rizky tahara shita - http://tahara.web.id
29
CI Model – Loading Model ●
Controller memanggil Model ●
$this->load->model('model_file_name');
rizky tahara shita - http://tahara.web.id
30
CI Form Helper ●
Load helper: ●
●
$this->load->helper('form');
Form helper functions: ●
form_open()
●
form_radio()
●
form_open_multipart()
●
form_submit()
●
form_hidden()
●
form_reset()
●
form_input()
●
form_button()
●
form_password()
●
form_close()
●
set_value()
●
set_select()
●
set_checkbox()
●
set_radio()
●
●
●
form_upload() form_textarea() form_dropdown()
●
form_multiselect()
●
form_checkbox()
rizky tahara shita - http://tahara.web.id
31
CI Form Helper – form_open() echo form_open('
');
Attribute = array('class' => 'email', 'id' => 'myform');
echo form_open('email/send',
);
rizky tahara shita - http://tahara.web.id
32
CI Input Class ●
Tujuan: ●
●
●
Melakukan pre-processes global input data untuk meningkatkan keamanan. Menyediakan fungsi untuk menangani input data.
Security Filtering: ●
Menghilangkan predefined variable GET ($_GET).
●
Menghilangkan global variables.
●
Filter predefined variable POST/COOKIE.
●
Mendukung XSS (Cross-site Scripting Hacks).
●
Standarisasi newline menjadi \n rizky tahara shita - http://tahara.web.id
33
CI Input Class – functions ●
$this->input->post();
●
$this->input->cookie();
●
$this->input->server();
if ( ! isset(
['
']))
{ $something = FALSE; } else { $something =
['
'];
}
$something = $this->input->
('
rizky tahara shita - http://tahara.web.id
'); 34
CI Validation ●
Load library ●
$this->load->library('form_validation ');
●
Setup Rules
●
Check the Validation ●
●
$this->form_validation ->run();
Show Errors ●
Set error delimiters –
●
$this->form_validation->set_error_delimiters('', '');
show individual error –
echo form_error('field name', '', ''); rizky tahara shita - http://tahara.web.id
35
CI Validation – Setup Rules
= array ( array ( '
' => 'txt_judul'
, '
' => 'Judul'
, '
' => 'trim|required'
) ); $this->
->
(
rizky tahara shita - http://tahara.web.id
); 36
CI Validation – Setup Rules (cont.) ●
Rules Reference Rules
Description
Rules
Description
required
Returns FALSE if the form element is empty.
alpha_numeric
matches
Returns FALSE if the form element does not match the one in the parameter.
Returns FALSE if the form element contains anything other than alphanumeric characters.
alpha_dash
Returns FALSE if the form element contains anything other than alphanumeric characters, underscores or dashes.
numeric
Returns FALSE if the form element contains anything other than numeric characters.
min_length
Returns FALSE if the form element is shorter then the parameter value.
max_length
Returns FALSE if the form element is longer then the parameter value.
exact_length
Returns FALSE if the form element is not exactly the parameter value.
integer
greater_than
Returns FALSE if the form element is less than the parameter value or not numeric.
Returns FALSE if the form element contains anything other than an integer.
decimal
Returns FALSE if the form element is not exactly the parameter value.
less_than
Returns FALSE if the form element is greater than the parameter value or not numeric.
is_natural
Returns FALSE if the form element contains anything other than a natural number: 0, 1, 2, 3, etc.
alpha
Returns FALSE if the form element contains anything other than alphabetical characters.
is_natural_no_zero
Returns FALSE if the form element contains anything other than a natural number, but not zero: 1, 2, 3, etc.
rizky tahara shita - http://tahara.web.id
37
CI Validation – Setup Rules (cont.) ●
Rules Reference Rules
Description
valid_email
Returns FALSE if the form element does not contain a valid email address.
valid_emails
Returns FALSE if any value provided in a comma separated list is not a valid email.
valid_ip
Returns FALSE if the supplied IP is not valid.
valid_base64
Returns FALSE if the supplied string contains anything other than valid Base64 characters.
rizky tahara shita - http://tahara.web.id
38
CI Database ●
Load Database Class ●
●
Running Query ●
●
$this->load->database(); $this->db->query('your_sql_query_here');
Query Result ●
as object –
●
$qry->result();
as array –
$qry->result_array (); rizky tahara shita - http://tahara.web.id
39
CI Database – Standard Example $this->
->
$query = $this->
(); ->
('SELECT name, title, email FROM my_table');
foreach ($query->
() as $row)
{ echo $row->title; echo $row->name; echo $row->email; } $this->
->
$query = $this->
(); ->
foreach ($query->
('SELECT name, title, email FROM my_table'); () as $row)
{ echo $row['title']; echo $row['name']; echo $row['email']; }
rizky tahara shita - http://tahara.web.id
40
CI Database – Active Records ●
●
Generic functions untuk mengelola koneksi ke ke database. Functions: ●
Selecting Data
●
Inserting Data
●
Updating Data
●
Deleting Data
rizky tahara shita - http://tahara.web.id
41
CI Database – Activ Active e Records - Select ●
$this->db->get(); –
●
$this->db->select(); –
●
●
$this->db->get('table_name');
$this->db->select('title, content, date');
$this->db->from(); –
$this->db->select('title, content, date');
–
$this->db->from('table_name');
$this->db->where(); ●
Simple –
●
$this->db->where('name', $this->db->where( 'name', 'tahara 'tahara'); ');
Array –
$where = array('name' => 'tahara', 'website' => 'http://tahara.web.id');
–
$this->db->where( $where ); rizky tahara shita - http://tahara.web.id
42
CI Database – Activ Active e Records - Insert = array ( 'title' => 'My title' , 'name' => 'My Name' , 'date' => 'My date' ); $this->
->
('
',
);
// INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date') rizky tahara shita - http://tahara.web.id
43
CI Database – Active Records - Update = array ( 'title' => $title, 'name' => $name, 'date' => $date ); $this->
->
$this->
->
('id', $id); ('
',
);
// UPDATE mytable // SET title = '{$title}', name = '{$name}', date = '{$date}' // WHERE id = $id rizky tahara shita - http://tahara.web.id
44
CI Database – Active Records - Delete $this->
->
('mytable', array('id' => $id));
// DELETE FROM mytable WHERE id = $id $this->
->
$this->
->
('id', $id); ('mytable');
// DELETE FROM mytable WHERE id = $id
$tables = array('table1', 'table2', 'table3'); $this->
->
('id', '5');
$this->
->
($tables); rizky tahara shita - http://tahara.web.id
45
Workshop ( Simple CI Application )
rizky tahara shita - http://tahara.web.id
46
Plan ●
Analisa Database
●
Pembuatan Database dan Table
●
Instalasi Codeigniter 2
●
Start to Code!
rizky tahara shita - http://tahara.web.id
47
Analisa Database
rizky tahara shita - http://tahara.web.id
48
Pembuatan Database & Table ●
Database: workshop_ci
CREATE SCHEMA IF NOT EXISTS `workshop_ci` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ; USE `workshop_ci` ;
rizky tahara shita - http://tahara.web.id
49
Pembuatan Database & Table (cont.) ●
Table: Category
DROP TABLE IF EXISTS `workshop_ci`.`category` ; CREATE
TABLE IF NOT EXISTS `workshop_ci`.`category`
( `id` INT(5) UNSIGNED NOT NULL AUTO_INCREMENT , `name` VARCHAR(20) NULL , PRIMARY KEY (`id`) ) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci; rizky tahara shita - http://tahara.web.id
50
Pembuatan Database & Table (cont.) ●
Table: Books
DROP TABLE IF EXISTS `workshop_ci`.`books` ; CREATE
TABLE IF NOT EXISTS `workshop_ci`.`books` (
`id` INT(7) UNSIGNED NOT NULL AUTO_INCREMENT , `category_id` INT(5) UNSIGNED NOT NULL , `title` VARCHAR(200) NULL , `isbn` VARCHAR(30) NULL , PRIMARY KEY (`id`) , INDEX `fk_books_category` (`category_id` ASC) , CONSTRAINT `fk_books_category` FOREIGN KEY (`category_id` ) REFERENCES `workshop_ci`.`category` (`id` ) ON DELETE NO ACTION ON UPDATE CASCADE) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci;
rizky tahara shita - http://tahara.web.id
51
Instalasi Codeigniter 2 ●
Langkah – langkah: ●
Download Codeigniter.
●
Extract pada folder “document_root” server.
●
Test Codeigniter welcome page.
rizky tahara shita - http://tahara.web.id
52
Instalasi Codeigniter 2 (cont.) ●
Download Codeigniter ●
http://codeigniter.com/downloads/
rizky tahara shita - http://tahara.web.id
53
Instalasi Codeigniter 2 (cont.) ●
Extract pada folder “document_root” server
rizky tahara shita - http://tahara.web.id
54
Instalasi Codeigniter 2 (cont.) ●
Test Codeigniter welcome page ●
http://localhost
rizky tahara shita - http://tahara.web.id
55
Start to Code! – file: /application/ config config /database.php . . . $db['default']['hostname'] = ' $db['default']['username'] = ' $db['default']['password'] = ' $db['default']['database'] = '
'; '; '; ';
$db['default']['dbdriver'] = 'mysql'; . . . rizky tahara shita - http://tahara.web.id
56
Start to Code! – file: /application/ config config /autoload.php . . . $autoload['helper'] = array('
', '
');
. . .
rizky tahara shita - http://tahara.web.id
57
Start to Code! – file: /application/ controllers controllers /kategori.php edit($prm_key = '')
function jsTambah() {
document.location = 'kategori/tambah';
Kode Kategori perintah
rizky tahara shita - http://tahara.web.id
60
Start to Code! – Screenshot: Kategori (list)
rizky tahara shita - http://tahara.web.id
61
Start to Code! – file: /application/ views views /kategori /form.php /form.php
Kategori*
Master Kategori
value='Simpan' />
ID
function jsTambah() {
document.location = 'buku/tambah'; }
Kategori
Judul ISBN perintah
rizky tahara shita - http://tahara.web.id
67
Start to Code! – Screenshot: Buku (list)
rizky tahara shita - http://tahara.web.id
68
Start to Code! – file: /application/ views views /buku /form.php
Master Buku
rizky tahara shita - http://tahara.web.id
69
Start to Code! – file: /application/ views views /buku /form.php (cont.)
Judul*
View more...
Comments