สำหรับคนที่ยังงงๆ กับการ 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/
ทริคง่ายๆ ที่ทำให้โค้ดของคุณสั้นลงไปได้เยอะเลย