สร้างคลาสสำหรับส่วนสำคัญของระบบ
ทุกๆครั้งที่ CodeIgniter รันมีคลาสอยู่หลายคลาสถูกสร้างขึ้นแบบอัตโนมัติซึ่งเป็นส่วนสำคัญของระบบ มันเป็นไปได้ที่คุณจะปรับเปลี่ยนแก้ไขระบบหลักหรือขยายระบบหลักเป็นในแบบของคุณเอง
ผู้ใช้ส่วนใหญ่จะไม่ต้องใช้สิ่งนี้แต่มันเป็นทางเลือกที่จะแทนที่หรือเพิ่มเติมความสามารถระบบหลักของ CodeIgniter.
หมายเหตุ: การยุ่งกับคลาสส่วนระบบสำคัญของระบบมีสิ่งที่เกี่ยวข้องหลายอย่าง ดังนั้นให้คุณแน่ใจว่าคุณกำลังทำอะไรอะอยู่ก่อนทดลองมัน
รายชื่อคลาสของระบบ
รายชื่อต่อไปนี้คือไฟล์ระบบหลักซึ่งถูกใช้งานทุกๆครั้งที่รัน CodeIgniter
- Benchmark
- Config
- Controller
- Exceptions
- Hooks
- Input
- Language
- Loader
- Log
- Output
- Router
- URI
แทนที่คลาสหลัก
การใช้คลาสระบบหลักของคุณเองนอกเหนือจากการใช้ของเดิมที่มีอยู่แล้วให้คุณเพียงใส่คลาสของคุณไปในไดเรคทอรี่ application/libraries:
application/libraries/some-class.php
ถ้ายังไม่มีไดเรคทอรี่นี้ให้คุณสร้างมันขึ้นมา
ชื่อไฟล์ใดๆที่มีชื่อเหมือนกับรายการด้านบนจะถูกใช้แทนอันเดิมที่มีอยู่แล้ว
โปรดสังเกตุว่าคลาสของคุณจะต้องใช้คำว่า CI เป็นคำนำหน้า ยกตัวอย่างเช่น ถ้าุไฟล์ของคุณชื่อ Input.php คลาสจะมีชื่อว่า:
class CI_Input {
}
ขยายคลาสหลัก
ถ้าความต้องการทั้งหมดของคุณต้องการเพิ่มฟังก์ชั่นบางอย่างให้กับไลบรารี่ ที่มีอยู่แล้ว - บางทีอาจจะเพิ่มสักหนึ่งหรือสองฟังก์ชั่น - ดังนั้นมันเป็นการมากเกินไปที่จะแทนที่ไลบรารี่ทั้งหมดด้วบแบบฉบับของคุณ ในกรณีี้นี้มันเป็นการดีกว่าที่คุณเพียงขยายคลาสเท่านั้น การขยายคลาสใกล้เคียงกับการแทนที่คลาสซึ่งมาพร้อมกับข้อยกเว้นบางอย่าง
- คลาสที่ประกาศจะต้องขยายมาจากคลาสพ่ิอแม่
- คลาสใหม่ของคุณจะต้องมีคำนำหน้าชื่อและชื่อไฟล์ด้วยคำว่า MY_ (สิ่งนี้สามารถแก้ไขได้ดูด้านล่าง).
ยกตัวอย่างเช่น, ในการที่จะขยายคลาส Input คุณจะต้องสร้างชื่อไฟล์ชื่อ application/libraries/MY_Input.php, และประกาศคลาสดังนี้:
class MY_Input extends CI_Input {
}
หมายเหตุ: ถ้าคุณต้องการใช้ตัวสร้างคลาสภายในคลาสของคุณ ให้แน่ใจว่าคุณขยายมาจากตัวสร้างคลาสพ่อแม่:
class MY_Input extends CI_Input {
function My_Input()
{
parent::CI_Input();
}
}
เคล็ดลับ: ถ้าฟังก์ชั่นไหนในคลาสของคุณมีชื่อเหมือนคลาสพ่อแม่ ฟังก์ชั่นนั้นจะถูกใช้แทนของเดิมของพ่อแม่ (สิ่งนี้เรียกว่า "ลบล้างวิธีการ" [method overriding]). สิ่งนี้ยินยอมให้คุณปรับเปลี่ยนระบบหลักของ CodeIgniter อย่างเป็นชิ้นเป็นอัน
ถ้าคุณทำการขยายคลาสควบคุมหลัก (Controller core class), ดังนั้นให้แน่ใจว่าคุณเรียกคลาสใหม่ของคุณในตัวสร้างคลาสควบคุมแอพพลิเคชั่นของคุณด้วย
class Welcome extends MY_Controller {
function Welcome()
{
parent::MY_Controller();
}
function index()
{
$this->load->view('welcome_message');
}
}
ตั้งค่าคำนำหน้าของคุณ
สำหรับการตั้งค่าคำนำหน้าของคลาสรองของคุณ ให้เปิดไฟล์ application/config/config.php และมองหาสิ่งนี้
$config['subclass_prefix'] = 'MY_';
สังเกตุว่าไลบรารี่พื้นฐานของ CodeIgniter มีคำนำหน้าว่า CI_ ดังนั้นอย่าใช้มันเป็นคำนำหน้าของคุณ