CodeIgniter - Konsep Dasar

Pengontrol

Kontroler adalah file kelas sederhana. Seperti namanya, ia mengontrol seluruh aplikasi dengan URI.

Membuat Pengontrol

Pertama, buka application/controllersmap. Anda akan menemukan dua file di sana,index.html dan Welcome.php. File-file ini disertakan dengan CodeIgniter.

Simpan file ini sebagaimana adanya. Buat file baru di bawah jalur yang sama bernama "Test.php". Tulis kode berikut di file itu -

<?php 
   class Test extends CI_Controller {
  
      public function index() { 
         echo "Hello World!"; 
      } 
   } 
?>

Itu Test class memperluas kelas built-in yang disebut CI_Controller. Kelas ini harus diperpanjang setiap kali Anda ingin membuat kelas Controller Anda sendiri.

Memanggil Pengendali

Kontroler di atas dapat dipanggil oleh URI sebagai berikut -

http://www.your-domain.com/index.php/test

Perhatikan kata "test”Di URI di atas setelah index.php. Ini menunjukkan nama kelas pengontrol. Seperti yang telah kami berikan nama pengontrol "Test", Kami sedang menulis"test"Setelah index.php. Nama kelas harus dimulai denganuppercase letter tapi kita perlu menulis lowercase lettersaat kita memanggil pengontrol itu dengan URI. Sintaks umum untuk memanggil pengontrol adalah sebagai berikut -

http://www.your-domain.com/index.php/controller/method-name

Membuat & Memanggil Metode Pembuat

Mari kita memodifikasi kelas di atas dan membuat metode lain bernama "hello".

<?php 
   class Test extends CI_Controller {  
	
      public function index() { 
         echo "This is default function."; 
      } 
  
      public function hello() { 
         echo "This is hello function."; 
      } 
   } 
?>

Kita dapat menjalankan pengontrol di atas dengan tiga cara berikut -

  • http://www.your-domain.com/index.php/test
  • http://www.your-domain.com/index.php/test/index
  • http://www.your-domain.com/index.php/test/hello

Setelah mengunjungi URI pertama di browser, kami mendapatkan output seperti yang ditunjukkan pada gambar di bawah ini. Seperti yang Anda lihat, kami mendapatkan hasil dari metode "index”, Meskipun kami tidak meneruskan nama metode tersebut URI. Kami hanya menggunakan nama pengontrol di URI. Dalam situasi seperti itu, CodeIgniter memanggil metode default “index".

Mengunjungi URI kedua di browser, kami mendapatkan output yang sama seperti yang ditunjukkan pada gambar di atas. Di sini, kami telah mengirimkan nama metode setelah nama pengontrol di URI. Seperti nama metodenya adalah "index”, Kami mendapatkan hasil yang sama.

Mengunjungi URI ketiga di browser, kami mendapatkan output seperti yang ditunjukkan pada gambar di bawah ini. Seperti yang Anda lihat, kami mendapatkan keluaran dari metode "hello"Karena kita telah lulus"hello"Sebagai nama metode, setelah nama pengontrol"test”Di URI.

Poin untuk Diingat

  • Nama kelas pengontrol harus dimulai dengan huruf besar.

  • Pengontrol harus dipanggil dengan huruf kecil.

  • Jangan menggunakan nama metode yang sama dengan kelas induk Anda, karena akan menimpa fungsionalitas kelas induk.

Tampilan

Ini bisa berupa halaman web sederhana atau kompleks, yang dapat dipanggil oleh pengontrol. Halaman web mungkin berisi header, footer, sidebar dll. Tampilan tidak dapat dipanggil secara langsung. Mari kita buat tampilan sederhana. Buat file baru di bawahapplication/views dengan nama "test.php”Dan salin kode yang diberikan di bawah ini ke dalam file itu.

<!DOCTYPE html> 
<html lang = "en"> 

   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter View Example</title> 
   </head>
	
   <body> 
      CodeIgniter View Example 
   </body>
	
</html>

Ubah kode application/controllers/test.php file seperti yang ditunjukkan di bawah ini.

Memuat Tampilan

Tampilan dapat dimuat dengan sintaks berikut -

$this->load->view('name');

Di mana nama adalah file tampilan, yang sedang dirender. Jika Anda berencana untuk menyimpan file view di beberapa direktori maka Anda dapat menggunakan sintaks berikut -

$this->load->view('directory-name/name');

Tidak perlu menentukan ekstensi sebagai php, kecuali yang digunakan selain .php.

Metode index () memanggil metode view dan meneruskan "test" sebagai argumen ke metode view () karena kita telah menyimpan kode html di "test.php"Di bawah application/views/test.php.

<?php 
   class Test extends CI_Controller { 
	
      public function index() { 
         $this->load->view('test'); 
      } 
   } 
?>

Berikut adalah keluaran dari kode di atas -

Diagram alir berikut menggambarkan bagaimana semuanya bekerja -

Model

Kelas model dirancang untuk bekerja dengan informasi dalam database. Sebagai contoh, jika Anda menggunakan CodeIgniter untuk mengelola pengguna di aplikasi Anda, maka Anda harus memiliki kelas model, yang berisi fungsi untuk menyisipkan, menghapus, memperbarui, dan mengambil data pengguna Anda.

Membuat Kelas Model

Kelas model disimpan di application/modelsdirektori. Kode berikut menunjukkan cara membuat kelas model di CodeIgniter.

<?php 
   Class Model_name extends CI_Model { 
	
      Public function __construct() { 
         parent::__construct(); 
      } 
   } 
?>

Dimana Model_name adalah nama kelas model yang ingin Anda berikan. Setiap kelas model harus mewarisi kelas CI_Model CodeIgniter. Huruf pertama kelas model harus menggunakan huruf kapital. Berikut adalah kode untuk kelas model pengguna.

<?php 
   Class User_model extends CI_Model {
	
      Public function __construct() { 
         parent::__construct(); 
      } 
		
   } 
?>

Kelas model di atas harus disimpan sebagai User_model.php. Nama kelas dan nama file harus sama.

Memuat Model

Model bisa disebut dengan controller. Kode berikut dapat digunakan untuk memuat model apa pun.

$this->load->model('model_name');

Dimana model_name adalah nama model yang akan dimuat. Setelah memuat model, Anda cukup memanggil metodenya seperti yang ditunjukkan di bawah ini.

$this->model_name->method();

Model Pemuatan Otomatis

Mungkin ada situasi di mana Anda menginginkan beberapa kelas model di seluruh aplikasi Anda. Dalam situasi seperti itu, lebih baik jika kita memuatnya secara otomatis.

/*
| ---------------------------------------------------------------
|  Auto-Load Models
| ---------------------------------------------------------------
| Prototype:
|
|   $autoload['model'] = array('first_model', 'second_model');
|
| You can also supply an alternative model name to be assigned
| in the controller:
|  
|   $autoload['model'] = array('first_model' => 'first');
*/
$autoload['model'] = array();

Seperti yang ditunjukkan pada gambar di atas, berikan nama model dalam larik yang ingin Anda muat otomatis dan itu akan dimuat secara otomatis, saat sistem dalam keadaan inisialisasi dan dapat diakses di seluruh aplikasi.

Pembantu

Seperti namanya, ini akan membantu Anda membangun sistem Anda. Ini dibagi menjadi beberapa fungsi kecil untuk melayani fungsi yang berbeda. Sejumlah pembantu tersedia di CodeIgniter, yang tercantum dalam tabel di bawah. Kita juga bisa membangun pembantu kita sendiri.

Pembantu biasanya disimpan di file system/helpers, atau application/helpers directory. Pembantu kustom disimpan diapplication/helpers direktori dan pembantu sistem disimpan di system/helpersdirektori. CodeIgniter akan terlihat pertama di fileapplication/helpers directory. Jika direktori tidak ada atau helper yang ditentukan tidak ditemukan, CodeIgniter akan mencari di global Andasystem/helpers/ directory. Setiap helper, apakah itu custom atau system helper, harus dimuat sebelum menggunakannya.

SN Nama & Deskripsi Pembantu
1

Array Helper

File Array Helper berisi fungsi-fungsi yang membantu bekerja dengan array.

2

CAPTCHA Helper

File CAPTCHA Helper berisi fungsi yang membantu dalam membuat gambar CAPTCHA.

3

Cookie Helper

File Cookie Helper berisi fungsi yang membantu bekerja dengan cookie.

4

Date Helper

File Pembantu Tanggal berisi fungsi yang membantu Anda bekerja dengan tanggal.

5

Directory Helper

File Directory Helper berisi fungsi yang membantu bekerja dengan direktori.

6

Download Helper

Bantuan Download memungkinkan Anda mendownload data ke desktop Anda.

7

Email Helper

Pembantu Email menyediakan beberapa fungsi bantuan untuk bekerja dengan Email. Untuk solusi email yang lebih kuat, lihat Kelas Email CodeIgniter.

8

File Helper

File Pembantu File berisi fungsi yang membantu bekerja dengan file.

9

Form Helper

File Pembantu Formulir berisi fungsi yang membantu dalam bekerja dengan formulir.

10

HTML Helper

File HTML Helper berisi fungsi yang membantu bekerja dengan HTML.

11

Inflector Helper

File Pembantu Inflektor berisi fungsi yang memungkinkan Anda mengubah kata menjadi jamak, tunggal, huruf besar / kecil, dll.

12

Language Helper

File Bantuan Bahasa berisi fungsi yang membantu bekerja dengan file bahasa.

13

Number Helper

File Number Helper berisi fungsi yang membantu Anda bekerja dengan data numerik.

14

Path Helper

File Path Helper berisi fungsi yang memungkinkan Anda untuk bekerja dengan jalur file di server.

15

Security Helper

File Bantuan Keamanan berisi fungsi terkait keamanan.

16

Smiley Helper

File Smiley Helper berisi fungsi yang memungkinkan Anda mengelola smiley (emotikon).

17

String Helper

File String Helper berisi fungsi-fungsi yang membantu bekerja dengan string.

18

Text Helper

File Pembantu Teks berisi fungsi yang membantu dalam bekerja dengan teks.

19

Typography Helper

File Typography Helper berisi fungsi yang membantu memformat teks Anda dengan cara yang relevan secara semantik.

20

URL Helper

File URL Helper berisi fungsi-fungsi yang membantu bekerja dengan URL.

21

XML Helper

File XML Helper berisi fungsi yang membantu bekerja dengan data XML.

Memuat Pembantu

Helper dapat dimuat seperti yang ditunjukkan di bawah ini -

$this->load->helper('name');

Dimana nama adalah nama penolong. Misalnya, jika Anda ingin memuat Pembantu URL, maka itu dapat dimuat sebagai -

$this->load->helper('url');

Rute

CodeIgniter memiliki sistem perutean URI yang ramah pengguna, sehingga Anda dapat dengan mudah merutekan ulang URL. Biasanya, ada hubungan satu-ke-satu antara string URL dan kelas / metode pengontrol yang sesuai. Segmen dalam URI biasanya mengikuti pola ini -

your-domain.com/class/method/id/
  • Itu first segment mewakili kelas pengontrol yang harus dipanggil.

  • Itu second segment mewakili fungsi kelas, atau metode, yang harus dipanggil.

  • Itu third, dan segmen tambahan apa pun, mewakili ID dan variabel apa pun yang akan diteruskan ke pengontrol.

Dalam beberapa situasi, Anda mungkin ingin mengubah mekanisme perutean default ini. CodeIgniter menyediakan fasilitas di mana Anda dapat mengatur aturan perutean Anda sendiri.

Sesuaikan Aturan Perutean

Ada file tertentu di mana Anda dapat menangani semua ini. File tersebut terletak di application / config / routes.php. Anda akan menemukan sebuah array bernama $ route di mana Anda dapat menyesuaikan aturan perutean Anda. Kunci dalam array $ route akan memutuskan apa yang akan dirutekan dan nilainya akan memutuskan ke mana harus merutekan. Ada tiga rute yang dipesan di CodeIgniter.

SN Rute & Deskripsi yang Dicadangkan
1

$route['default_controller']

Rute ini menunjukkan kelas pengontrol mana yang harus dimuat, jika URI tidak berisi data, yang akan terjadi saat orang memuat URL root Anda. Anda didorong untuk memiliki rute default jika tidak, halaman 404 akan muncul, secara default. Kita dapat mengatur halaman beranda situs web di sini sehingga akan dimuat secara default.

2

$route['404_override']

Rute ini menunjukkan kelas pengontrol mana yang harus dimuat jika pengontrol yang diminta tidak ditemukan. Ini akan menimpa halaman kesalahan 404 default. Ini tidak akan mempengaruhishow_404() fungsi, yang akan terus memuat default error_404.php mengajukan application/views/errors/error_404.php.

3

$route['translate_uri_dashes']

Terbukti dari nilai Boolean, ini bukanlah sebuah rute. Opsi ini memungkinkan Anda mengganti tanda hubung ('-') secara otomatis dengan garis bawah di segmen URI pengontrol dan metode, sehingga menghemat entri rute tambahan jika Anda perlu melakukan itu. Ini diperlukan karena tanda hubung bukan kelas yang valid atau karakter nama metode dan akan menyebabkan kesalahan fatal, jika Anda mencoba menggunakannya.

Rute dapat disesuaikan dengan wildcards atau dengan menggunakan regular expressions namun perlu diingat bahwa aturan khusus untuk perutean ini harus setelah aturan yang dipesan.

Karakter pengganti

Kita dapat menggunakan dua karakter wildcard seperti yang dijelaskan di bawah ini -

  • (:num) - Ini akan cocok dengan segmen yang hanya berisi angka.

  • (:any) - Ini akan cocok dengan segmen yang mengandung karakter apa pun.

Example

$route['product/:num']='catalog/product_lookup';

Dalam contoh di atas, jika kata literal "produk" ditemukan di segmen pertama URL, dan angka ditemukan di segmen kedua, kelas "katalog" dan metode "pencarian_produk" digunakan sebagai gantinya.

Ekspresi Reguler

Seperti karakter pengganti, kita juga dapat menggunakan ekspresi reguler dalam $route array keybagian. Jika ada URI yang cocok dengan ekspresi reguler, maka itu akan dirutekan ke bagian nilai yang disetel ke dalam array $ route.

Example

$route['products/([a-z]+)/(\d+)']='$1/id_$2';

Pada contoh di atas, URI yang mirip dengan produk / sepatu / 123 akan memanggil "shoes"Kelas pengontrol dan"id_123" metode.