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


ฟังก์ชันต่างๆของผู้ช่วย

ผู้ช่วย เหมือนเป็นชื่อแนะนำ, ช่วยงานที่ยากๆของคุณ ผู้ช่วยแต่ละตัวเก็บฟังก์ชันต่างๆในแต่ละประเภทไว้ มี URL Helpers (ผู้ช่วยด้าน URL) ซึ่งช่วยในการสร้างการเชื่อมโยงต่างๆ, Form Helpers (ผู้ช่วยด้านแบบฟอร์ม) ซึ่งช่วยคุณสร้างสิ่งต่างๆในแบบฟอร์ม, Text Helpers ช่วยในการจัดรูปแบบของข้อความที่ใช้ประจำ, Cookie Helpers สร้างและอ่านค่าจาก คุ๊กกี้ (cookie), File Helpers ช่วยให้คุณติดต่อกับไฟล์ต่างๆ , และอื่นๆอีกมาก

Helper (ผู้ช่วย)จะไม่เหมือนกับระบบส่วนมากใน CodeIgniter, Helper (ผู้ช่วย)ไม่ได้สร้างเป็นรูปแบบเชิงวัตถุ มันเป็นแค่ฟังก์ชัน ที่ใช้งานง่าย แต่ละฟังก์ชันของ helper (ผู้ช่วย) จะมีหน้าที่ในการปฏิบัติงานที่ชัดเจน(เฉพาะอย่าง) ซึ่งไม่ขึ้นกับฟังก์ชันอื่นๆเลย

CodeIgniter ไม่ได้ทำการโหลด Helper (ผู้ช่วย)ให้เราโดยอัติโนมัติ ถ้าเราจะใช้ก่อนอื่นเราต้องโหลดมันมาไว้ก่อน โหลดแค่ครั้งเดียวเท่านั้น มันจะสามารถใช้ได้ทุกที่ทั้งใน controller (ตัวควบคุม)และ view (ส่วนแสดง)

Helper (ผู้ช่วย)ต่างๆจะถูกเก็บไว้ใน system/helpers, หรือ system/application/helpers

Helpers are typically stored in your system/helpers, or system/application/helpers CodeIgniter จะดูในส่วน system/application/helpers ก่อน ถ้าส่วนนี้ไม่มีหรือไม่ได้ถูกกำหนดให้ใช้ CI จึงจะไปดูในส่วน system/helpers แทน

โหลดผู้ช่วยมาใช้งาน

การโหลดผู้ช่วย(helper) นั้นง่ายมาก เพียงใช้ฟังก์ชันตามด้านล่างนี้เท่านั้น:$this->load->helper('name');

name เป็นชื่อไฟล์ผู้ช่วย(helper) ไม่ต้องใส่ส่วนขยาย .php หรือ เส้นทางไปหาไฟล์ helper (ผู้ช่วย)

ตัวอย่าง, จะเป็นการโหลดไฟล์ URL Helper (ผ้ช่วยด้าน URL) ซึ่งมีชื่อไฟล์ว่า url_helper.php คำสั่งที่ใช้จะเป็นแบบนี้:$this->load->helper('url');

ผู้ช่วยสามารถโหลดจากที่ไหนก็ได้ในฟังก์ชันต่างๆของ controller (ตัวควบคุม) (แม้กระทั้งใน View (ส่วนแสดง), ถึงแม้จะไม่ใช่วิธีที่ดีนักก็ตาม) คุณสามารถทำการโหลดผู้ช่วย ต่างๆมาไว้ ใน constructor (ตัวสร้าง)ได้ ซึ่งผู้ช่วยจะถูกโหลดโดยอัติโนมัต สามารถเรียกใช้ในฟังก์ชันไหนก็ได้ หรือคุณจะโหลดผู้ช่วย มาไว้ในเฉพาะฟังก์ชันที่คุณต้องการใช้เท่านั้นก็ได้

 

หมายเหตุ: การโหลด helper แบบข้างบนจะไม่มีการคืนค่าใดๆออกมาจากฟังก์ชัน ดังนั้นจึงไม่ต้องกำหนดตัวแปรมารับค่าจากเรียกใช้ฟังก์ชันในการโหลด helper (ผู้ช่วย) แค่โหลดมาเฉยๆก็พอ

โหลดหลายผู้ช่วย

ถ้าคุณต้องการโหลดผู้ช่วย มากกว่าหนึ่งตัว ก็สามารถใช้อาเรย์เข้ามาช่วยไ้ด้ ดังนี้:$this->load->helper( array('helper1', 'helper2', 'helper3') );

โหลดผู้ช่วยแบบอัตโนมัติ

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

$autoload['helper'] = array('url','array');

การใช้ผู้ช่วย

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

ตัวอย่าง, เป็นการสร้างจุดเชื่อมโยงด้วยฟังก์ชัน anchor() ในไฟล์ view (ส่วนแสดง) จะมีลักษณะดังนี้:<?php echo anchor('blog/comments', 'Click Here');?>

ซึ่ง "Click Here"เป็นชื่อของจุดเชื่อมโยง ส่วน "blog/comments" เป็น URI เพื่อเรียก contoller (ตัวควบคุม)ตัวไหน และฟังก์ชันอะไร (controller/function)

ขยายการทำงานให้กับผู้ช่วย

ในการขยายการทำงานให้กับผู้ช่วย คุณต้องสร้างไฟล์ไว้ในโฟลเดอร์ application/helpers/ ที่มีชื่อเดียวกับไฟล์ helper ที่คุณต้องการเพิ่มเติมการทำงานอื่นๆลงไป แต่ให้ใช้ MY_ นำหน้าชื่อไฟล์นั้นแทน (สามารถทำการตั้งค่าได้ ดูด้านล่าง)

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

ตัวอย่างเช่น, ในการจะต่อเติม Array Helper ให้คุณสร้างไฟล์ชื่อ application/helpers/MY_array_helper.php, และเขียนเพิ่มหรือทับฟังก์ชัน

// any_in_array() is not in the Array Helper, so it defines a new function
function any_in_array($needle, $haystack)
{
    $needle = (is_array($needle)) ? $needle : array($needle);

    foreach ($needle as $item)
    {
        if (in_array($item, $haystack))
        {
            return TRUE;
        }
        }

    return FALSE;
}

// random_element() is included in Array Helper, so it overrides the native function
function random_element($array)
{
    shuffle($array);
    return array_pop($array);
}

ตั้งคำนำหน้าด้วยตัวคุณเอง

ชื่อไฟล์นำหน้าสำหรับเพิ่มเติมผู้ช่วยเหมือนกับการใช้เพื่อเพิ่มไลบรารี่ลงไปยังคลาสหลักของระบบ การที่จะตั้งค่าคำนำหน้าของคุณนั้นให้เปิดไฟล์ application/config/config.php และมองหาสิ่งนี้

$config['subclass_prefix'] = 'MY_';

โปรดสังเกตุว่าทุกๆไลบรารี่ของ CodeIgniter จะมีคำนำหน้าเป็น CI_ ดังนั้นอย่าใช้คำนี้เป็นคำนำหน้าของคุณ

แล้วไงต่อ?

ในตารางเนื้อหาต่างๆ คุณจะพบรายการทั้งหมดของไฟล์ผู้ช่วย (Helper Files) ลองเข้าไปอ่านโดยคร่าวๆเพื่อรู้ว่าแต่ละอันทำงานอะไร