วิธีการ Extends Class Controller อื่นใน Codeigniter

สำหรับคนที่ยังงงๆ กับการ extends class ของ Controller อื่นได้โดยที่ไม่ต้องประกาศเป็น Class แบบ Global อย่าง CI_Controller มาดูวิธีทำง่ายๆ กันดีกว่า

อันดับแรกเราต้องมี class ต้นแบบของเราซะก่อน ในที่นี้เคนจะสร้างเป็น class ชื่อ News ละกัน บันทึกไว้ที่ application/controllers/News.php และทำการสร้างตัวแปรแบบ protected เพื่อให้ class ที่ extends ไปเปลี่ยนค่าตัวแปรได้

[php]
class News extends CI_Controller {

protected $title = "News";
protected $topic = "ข่าวสาร";

public function __construct() {
parent::__construct();
}

}
[/php]

เรามาทำอีก class ที่จะ extends class News กันดีกว่า อันนี้เคนให้ชื่อว่า class Activity บันทึกไว้ที่ application/controllers/Activity.php ซึ่งข้อสำคัญที่จะทำได้หรือไม่ได้มันอยู่ตรงนี้!!! เราต้องทำการ require ไฟล์ News.php เข้ามาก่อน!!!

[php]
require APPPATH . ‘controllers/News.php’;

class Activity extends News {

public function __construct() {
parent::__construct();
$this->title = "Activity";
$this->topic = "กิจกรรม";
}

}
[/php]

เนี่ยแหละคือจุดสำคัญมันอยู่ที่บรรทัด require APPPATH . ‘controllers/News.php’ ถ้าไม่มีบรรทัดนี้ยังไงก็ extends ไม่ได้ และถ้า require ไม่ตรงที่อยู่มันก็จะเกิด Error อีกแหน่ะ

APPPATH คือค่าที่ถูก define โดย Codeigniter จะเก็บค่า path จนถึง application/

ทริคง่ายๆ ที่ทำให้โค้ดของคุณสั้นลงไปได้เยอะเลย