คู่มือการใช้งาน CodeIgniter เวอร์ชั่น 1.7.2


Hooks (ตะขอ) - ขยายระบบหลัก

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

เปิดคุณสมบัติตะขอ

คุณสมบัติตะขอสามารถถูกเปิด/ปิดทั้งระบบได้โดยการตั้งค่าในไฟล์ application/config/config.php :

$config['enable_hooks'] = TRUE;

กำหนดตะขอ

ตะขอสามารถถูกกำหนดได้ในไฟล์ application/config/hooks.php แต่ละตะขอมีการกำหนดเป็นอาเรย์ด้วยต้นแบบนี้

$hook['pre_controller'] = array(
                                'class'    => 'MyClass',
                                'function' => 'Myfunction',
                                'filename' => 'Myclass.php',
                                'filepath' => 'hooks',
                                'params'   => array('beer', 'wine', 'snacks')
                                );

สังเกตุ:
ตัวชี้อาเรย์ (index) มีความสัมพันธ์ร่วมกับชื่อของปลายตะขอที่คุณเลือกใช้ ในตัวอย่างด้านบนปลายตะขอก็คือ pre_controller. โดยชื่อของปลายตะขอจะอยู่ด้านล่าง โดยมีของดังต่อไปนี้ที่ต้องกำหนดในอาเรย์ตะขอ:

เรียกตะขอเดิมหลายครั้งพร้อมกัน

ถ้าคุณต้องการใช้ตะขอเดิมมากกว่าหนึ่งสคริป ให้คุณเพิ่มอาเรย์ตอนประกาศแบบนี้:

$hook['pre_controller'][] = array(
                                'class'    => 'MyClass',
                                'function' => 'Myfunction',
                                'filename' => 'Myclass.php',
                                'filepath' => 'hooks',
                                'params'   => array('beer', 'wine', 'snacks')
                                );

$hook['pre_controller'][] = array(
                                'class'    => 'MyOtherClass',
                                'function' => 'MyOtherfunction',
                                'filename' => 'Myotherclass.php',
                                'filepath' => 'hooks',
                                'params'   => array('red', 'yellow', 'blue')
                                );

สังเกตุวงเล็บจะอยู่หลังตัวชี้อาเรย์ (array index) :

$hook['pre_controller'][]

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

ปลายตะขอ

สิ่งต่อไปนี้คือปลายตะขอที่มีให้ใช้