Mvc With Codeigniter

May 19, 2018 | Author: Andri Dinata | Category: Model–View–Controller, Php, Software Engineering, Computer Programming, Technology
Share Embed Donate


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

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF