CodeIgniter - แนวคิดพื้นฐาน

ตัวควบคุม

คอนโทรลเลอร์คือไฟล์คลาสธรรมดา ตามชื่อที่แนะนำมันควบคุมแอปพลิเคชันทั้งหมดโดย URI

การสร้างคอนโทรลเลอร์

ก่อนอื่นไปที่ application/controllersโฟลเดอร์ คุณจะพบไฟล์สองไฟล์ที่นั่นindex.html และ Welcome.php. ไฟล์เหล่านี้มาพร้อมกับ CodeIgniter

เก็บไฟล์เหล่านี้ไว้เหมือนเดิม สร้างไฟล์ใหม่ภายใต้เส้นทางเดียวกันชื่อ“Test.php”. เขียนรหัสต่อไปนี้ในไฟล์นั้น -

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

Test คลาสขยายคลาสในตัวที่เรียกว่า CI_Controller. คลาสนี้ต้องขยายทุกครั้งที่คุณต้องการสร้างคลาส Controller ของคุณเอง

เรียกคอนโทรลเลอร์

URI สามารถเรียกคอนโทรลเลอร์ข้างต้นได้ดังนี้ -

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

สังเกตคำว่า“test” ใน URI ด้านบนหลัง index.php สิ่งนี้ระบุชื่อคลาสของคอนโทรลเลอร์ ตามที่เราได้ตั้งชื่อตัวควบคุม "Test"เรากำลังเขียน"test” หลัง index.php. ชื่อชั้นเรียนต้องขึ้นต้นด้วยuppercase letter แต่เราต้องเขียน lowercase letterเมื่อเราเรียกตัวควบคุมนั้นโดย URI ไวยากรณ์ทั่วไปสำหรับการเรียกคอนโทรลเลอร์มีดังนี้ -

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

การสร้างและเรียกวิธีการสร้างตัวสร้าง

ให้เราแก้ไขคลาสด้านบนและสร้างเมธอดอื่นชื่อ“ สวัสดี”

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

เราสามารถเรียกใช้คอนโทรลเลอร์ข้างต้นได้สามวิธีดังต่อไปนี้ -

  • 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

หลังจากเยี่ยมชม URI แรกในเบราว์เซอร์เราจะได้ผลลัพธ์ตามที่แสดงในภาพด้านล่าง อย่างที่คุณเห็นเราได้ผลลัพธ์ของวิธีการ“index” แม้ว่าเราจะไม่ผ่านชื่อของวิธีการ URI ก็ตาม เราใช้เฉพาะชื่อคอนโทรลเลอร์ใน URI ในสถานการณ์เช่นนี้ CodeIgniter เรียกเมธอดเริ่มต้นว่า“index”.

เยี่ยมชม URI ที่สองในเบราว์เซอร์เราจะได้ผลลัพธ์เดียวกันดังที่แสดงในภาพด้านบน ที่นี่เราได้ส่งชื่อเมธอดหลังชื่อคอนโทรลเลอร์ใน URI ตามชื่อของวิธีการคือ“index” เราได้ผลลัพธ์เดียวกัน

เยี่ยมชม URI ที่สามในเบราว์เซอร์เราจะได้ผลลัพธ์ตามที่แสดงในภาพด้านล่าง อย่างที่คุณเห็นเรากำลังได้รับผลลัพธ์ของวิธีการ "hello"เพราะเราผ่าน"hello” เป็นชื่อวิธีการหลังชื่อตัวควบคุม“test” ใน URI

สิ่งที่ต้องจำ

  • ชื่อของคลาสคอนโทรลเลอร์ต้องขึ้นต้นด้วยอักษรตัวพิมพ์ใหญ่

  • ต้องเรียกตัวควบคุมด้วยอักษรตัวพิมพ์เล็ก

  • อย่าใช้ชื่อเมธอดเดียวกันกับคลาสพาเรนต์ของคุณเนื่องจากมันจะลบล้างฟังก์ชันการทำงานของคลาสพาเรนต์

มุมมอง

อาจเป็นหน้าเว็บที่เรียบง่ายหรือซับซ้อนซึ่งผู้ควบคุมสามารถเรียกใช้ได้ หน้าเว็บอาจมีส่วนหัวส่วนท้ายแถบด้านข้างเป็นต้นไม่สามารถเรียกดูได้โดยตรง ให้เราสร้างมุมมองง่ายๆ สร้างไฟล์ใหม่ภายใต้application/views ด้วยชื่อ“test.php” และคัดลอกโค้ดที่ระบุด้านล่างในไฟล์นั้น

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

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

เปลี่ยนรหัสของ application/controllers/test.php ตามที่แสดงด้านล่าง

กำลังโหลดมุมมอง

สามารถโหลดมุมมองได้โดยใช้ไวยากรณ์ต่อไปนี้ -

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

โดยที่ name คือไฟล์มุมมองซึ่งกำลังแสดงผล หากคุณวางแผนที่จะจัดเก็บไฟล์มุมมองในไดเร็กทอรีบางรายการคุณสามารถใช้ไวยากรณ์ต่อไปนี้ -

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

ไม่จำเป็นต้องระบุนามสกุลเป็น php เว้นแต่จะใช้อย่างอื่นที่ไม่ใช่. php

เมธอด index () เรียกเมธอด view และส่ง "test" เป็นอาร์กิวเมนต์ to view () method เนื่องจากเราเก็บการเข้ารหัส html ไว้ใน "test.php” ภายใต้ไฟล์ application/views/test.php.

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

นี่คือผลลัพธ์ของรหัสด้านบน -

ผังงานต่อไปนี้แสดงให้เห็นว่าทุกอย่างทำงานอย่างไร -

โมเดล

คลาสโมเดลถูกออกแบบมาเพื่อทำงานกับข้อมูลในฐานข้อมูล ตัวอย่างเช่นหากคุณใช้ CodeIgniter เพื่อจัดการผู้ใช้ในแอปพลิเคชันของคุณคุณต้องมีคลาสโมเดลซึ่งมีฟังก์ชันในการแทรกลบอัปเดตและดึงข้อมูลผู้ใช้ของคุณ

การสร้างคลาสโมเดล

คลาสโมเดลจะถูกเก็บไว้ใน application/modelsไดเรกทอรี โค้ดต่อไปนี้แสดงวิธีสร้างคลาสโมเดลใน CodeIgniter

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

โดยที่ Model_name คือชื่อของคลาสโมเดลที่คุณต้องการให้ คลาสโมเดลแต่ละคลาสต้องสืบทอดคลาส CI_Model ของ CodeIgniter อักษรตัวแรกของคลาสโมเดลต้องเป็นตัวพิมพ์ใหญ่ ต่อไปนี้เป็นรหัสสำหรับคลาสโมเดลของผู้ใช้

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

ต้องบันทึกคลาสโมเดลด้านบนเป็น User_model.php ชื่อคลาสและชื่อไฟล์ต้องเหมือนกัน

กำลังโหลดโมเดล

สามารถเรียกโมเดลในคอนโทรลเลอร์ได้ รหัสต่อไปนี้สามารถใช้เพื่อโหลดรุ่นใดก็ได้

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

โดย model_name คือชื่อของโมเดลที่จะโหลด หลังจากโหลดโมเดลแล้วคุณสามารถเรียกใช้ method ดังที่แสดงด้านล่าง

$this->model_name->method();

โหลดโมเดลอัตโนมัติ

อาจมีสถานการณ์ที่คุณต้องการคลาสโมเดลในแอปพลิเคชันของคุณ ในสถานการณ์เช่นนี้จะดีกว่าถ้าเราโหลดอัตโนมัติ

/*
| ---------------------------------------------------------------
|  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();

ดังที่แสดงในรูปด้านบนส่งชื่อของโมเดลในอาร์เรย์ที่คุณต้องการโหลดอัตโนมัติและจะถูกโหลดอัตโนมัติในขณะที่ระบบอยู่ในสถานะเริ่มต้นและสามารถเข้าถึงได้ทั่วทั้งแอปพลิเคชัน

ผู้ช่วยเหลือ

ตามชื่อที่แนะนำมันจะช่วยคุณสร้างระบบของคุณ แบ่งออกเป็นฟังก์ชั่นเล็ก ๆ เพื่อรองรับการทำงานที่แตกต่างกัน ตัวช่วยจำนวนมากมีอยู่ใน CodeIgniter ซึ่งแสดงอยู่ในตารางด้านล่าง เราสามารถสร้างตัวช่วยของเราเองได้เช่นกัน

โดยทั่วไปแล้วผู้ช่วยเหลือจะถูกเก็บไว้ในไฟล์ system/helpers, หรือ application/helpers directory. ตัวช่วยแบบกำหนดเองจะถูกเก็บไว้ในapplication/helpers ไดเร็กทอรีและตัวช่วยของระบบจะถูกเก็บไว้ใน system/helpersไดเรกทอรี CodeIgniter จะปรากฏเป็นอันดับแรกในไฟล์application/helpers directory. หากไม่มีไดเร็กทอรีหรือไม่มีตัวช่วยที่ระบุ CodeIgniter จะดูใน global ของคุณแทนsystem/helpers/ directory. ผู้ช่วยแต่ละคนไม่ว่าจะเป็นผู้ช่วยแบบกำหนดเองหรือผู้ช่วยระบบต้องโหลดก่อนใช้งาน

SN ชื่อผู้ช่วยและคำอธิบาย
1

Array Helper

ไฟล์ Array Helper มีฟังก์ชันที่ช่วยในการทำงานกับอาร์เรย์

2

CAPTCHA Helper

ไฟล์ CAPTCHA Helper มีฟังก์ชันที่ช่วยในการสร้างภาพ CAPTCHA

3

Cookie Helper

ไฟล์ Cookie Helper มีฟังก์ชันที่ช่วยในการทำงานกับคุกกี้

4

Date Helper

ไฟล์ Date Helper มีฟังก์ชันที่ช่วยคุณทำงานกับวันที่

5

Directory Helper

ไฟล์ Directory Helper มีฟังก์ชันที่ช่วยในการทำงานกับไดเร็กทอรี

6

Download Helper

โปรแกรมช่วยดาวน์โหลดช่วยให้คุณสามารถดาวน์โหลดข้อมูลไปยังเดสก์ท็อปของคุณ

7

Email Helper

โปรแกรมช่วยอีเมลมีฟังก์ชันช่วยเหลือบางอย่างสำหรับการทำงานกับอีเมล สำหรับโซลูชันอีเมลที่มีประสิทธิภาพยิ่งขึ้นโปรดดูที่คลาสอีเมลของ CodeIgniter

8

File Helper

ไฟล์ File Helper มีฟังก์ชันที่ช่วยในการทำงานกับไฟล์

9

Form Helper

ไฟล์ Form Helper มีฟังก์ชันที่ช่วยในการทำงานกับฟอร์ม

10

HTML Helper

ไฟล์ HTML Helper มีฟังก์ชันที่ช่วยในการทำงานกับ HTML

11

Inflector Helper

ไฟล์ Inflector Helper มีฟังก์ชันที่อนุญาตให้คุณเปลี่ยนคำเป็นพหูพจน์, เอกพจน์, อูฐและอื่น ๆ

12

Language Helper

ไฟล์ Language Helper มีฟังก์ชันที่ช่วยในการทำงานกับไฟล์ภาษา

13

Number Helper

ไฟล์ Number Helper มีฟังก์ชันที่ช่วยคุณทำงานกับข้อมูลตัวเลข

14

Path Helper

ไฟล์ Path Helper มีฟังก์ชันที่อนุญาตให้คุณทำงานกับเส้นทางไฟล์บนเซิร์ฟเวอร์

15

Security Helper

ไฟล์ตัวช่วยความปลอดภัยมีฟังก์ชันที่เกี่ยวข้องกับความปลอดภัย

16

Smiley Helper

ไฟล์ Smiley Helper มีฟังก์ชันที่ให้คุณจัดการรอยยิ้ม (อีโมติคอน)

17

String Helper

ไฟล์ String Helper มีฟังก์ชันที่ช่วยในการทำงานกับสตริง

18

Text Helper

ไฟล์ Text Helper มีฟังก์ชันที่ช่วยในการทำงานกับข้อความ

19

Typography Helper

ไฟล์ Typography Helper มีฟังก์ชันที่ช่วยจัดรูปแบบข้อความของคุณในรูปแบบที่เกี่ยวข้องกับความหมาย

20

URL Helper

ไฟล์ URL Helper มีฟังก์ชันที่ช่วยในการทำงานกับ URL

21

XML Helper

ไฟล์ XML Helper มีฟังก์ชันที่ช่วยในการทำงานกับข้อมูล XML

กำลังโหลดตัวช่วย

สามารถโหลดตัวช่วยได้ตามที่แสดงด้านล่าง -

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

ชื่อของผู้ช่วยเหลืออยู่ที่ไหน ตัวอย่างเช่นหากคุณต้องการโหลดตัวช่วย URL ก็สามารถโหลดเป็น -

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

การกำหนดเส้นทาง

CodeIgniter มีระบบกำหนดเส้นทาง URI ที่ใช้งานง่ายเพื่อให้คุณสามารถกำหนดเส้นทาง URL ใหม่ได้อย่างง่ายดาย โดยทั่วไปแล้วจะมีความสัมพันธ์แบบหนึ่งต่อกลุ่มระหว่างสตริง URL และคลาส / วิธีการควบคุมที่สอดคล้องกัน กลุ่มใน URI มักจะเป็นไปตามรูปแบบนี้ -

your-domain.com/class/method/id/
  • first segment แสดงถึงคลาสคอนโทรลเลอร์ที่ควรเรียกใช้

  • second segment แสดงถึงฟังก์ชันคลาสหรือวิธีการที่ควรเรียกใช้

  • thirdและส่วนเพิ่มเติมใด ๆ แสดงถึง ID และตัวแปรใด ๆ ที่จะส่งต่อไปยังคอนโทรลเลอร์

ในบางสถานการณ์คุณอาจต้องการเปลี่ยนกลไกการกำหนดเส้นทางเริ่มต้นนี้ CodeIgniter ให้สิ่งอำนวยความสะดวกซึ่งคุณสามารถกำหนดกฎการกำหนดเส้นทางของคุณเอง

ปรับแต่งกฎการกำหนดเส้นทาง

มีไฟล์เฉพาะที่คุณสามารถจัดการสิ่งเหล่านี้ได้ ไฟล์อยู่ที่ application / config / route.php คุณจะพบอาร์เรย์ที่เรียกว่า $ route ซึ่งคุณสามารถกำหนดกฎการกำหนดเส้นทางของคุณเองได้ คีย์ในอาร์เรย์ $ route จะตัดสินใจว่าจะกำหนดเส้นทางอะไรและค่าจะกำหนดว่าจะกำหนดเส้นทางไปที่ใด มีเส้นทางที่สงวนไว้สามเส้นทางใน CodeIgniter

SN เส้นทางและคำอธิบายที่สงวนไว้
1

$route['default_controller']

เส้นทางนี้ระบุว่าควรโหลดคลาสคอนโทรลเลอร์ใดหาก URI ไม่มีข้อมูลซึ่งจะเป็นกรณีที่ผู้ใช้โหลดรูท URL ของคุณ คุณควรมีเส้นทางเริ่มต้นมิฉะนั้นหน้า 404 จะปรากฏขึ้นโดยค่าเริ่มต้น เราสามารถตั้งค่าโฮมเพจของเว็บไซต์ได้ที่นี่เพื่อให้โหลดโดยค่าเริ่มต้น

2

$route['404_override']

เส้นทางนี้ระบุว่าควรโหลดคลาสคอนโทรลเลอร์ใดหากไม่พบคอนโทรลเลอร์ที่ร้องขอ มันจะลบล้างหน้าข้อผิดพลาดเริ่มต้น 404 จะไม่ส่งผลต่อไฟล์show_404() ซึ่งจะโหลดค่าเริ่มต้นต่อไป error_404.php ไฟล์ใน application/views/errors/error_404.php.

3

$route['translate_uri_dashes']

เห็นได้ชัดจากค่าบูลีนนี่ไม่ใช่เส้นทางอย่างแน่นอน ตัวเลือกนี้ช่วยให้คุณสามารถแทนที่เครื่องหมายขีดกลาง ('-') โดยอัตโนมัติด้วยขีดล่างในส่วนควบคุมและวิธีการ URI ซึ่งช่วยให้คุณประหยัดรายการเส้นทางเพิ่มเติมหากคุณต้องการทำเช่นนั้น สิ่งนี้จำเป็นเนื่องจากเส้นประไม่ใช่อักขระชื่อคลาสหรือเมธอดที่ถูกต้องและจะทำให้เกิดข้อผิดพลาดร้ายแรงหากคุณพยายามใช้

สามารถปรับแต่งเส้นทางได้โดย wildcards หรือโดยใช้ regular expressions แต่โปรดทราบว่ากฎที่กำหนดเองสำหรับการกำหนดเส้นทางเหล่านี้ต้องมาตามกฎที่สงวนไว้

สัญลักษณ์แทน

เราสามารถใช้อักขระตัวแทนสองตัวได้ตามที่อธิบายด้านล่าง -

  • (:num) - จะจับคู่ส่วนที่มีตัวเลขเท่านั้น

  • (:any) - จะจับคู่ส่วนที่มีอักขระใด ๆ

Example

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

ในตัวอย่างข้างต้นหากพบคำตามตัวอักษร "product" ในส่วนแรกของ URL และพบตัวเลขในส่วนที่ 2 จะใช้คลาส "catalog" และ "product_lookup" แทน

นิพจน์ทั่วไป

เช่นเดียวกับสัญลักษณ์แทนเราสามารถใช้นิพจน์ทั่วไปใน $route array keyส่วน. หาก URI ใด ๆ ตรงกับนิพจน์ทั่วไปก็จะถูกกำหนดเส้นทางไปยังส่วนค่าที่กำหนดไว้ใน $ route array

Example

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

ในตัวอย่างข้างต้น URI ที่คล้ายกับผลิตภัณฑ์ / รองเท้า / 123 จะเรียก "shoes"คลาสคอนโทรลเลอร์และ"id_123" วิธี.