การเขียน PHP แบบ OOP ตอนที่ 4 การใช้ autoload เพื่อเรียกใช้งานคลาส

การเขียน PHP แบบ OOP ตอนที่ 4 การใช้ autoload เพื่อเรียกใช้งานคลาส

ในบทความนี้เรามาตอนกันว่าด้วยในกรณีที่ถ้าสมมุติใน 1 ไฟล์เว็บเพจนั้นมีการเรียกใช้งาน class และสร้าง object ของ class ที่แตกต่างกัน เราก็ต้องทำการ include หรือ require กันเป็นชื่อไฟล์หลายๆบรรทัดตามแต่จำนวนไฟล์คลาส ที่เราใช้งาน เริ่มแรกเพื่อความเข้าใจก็ให้ทำต่อจากตัวอย่างในครั้งก่อน การเขียน PHP แบบ OOP ตอนที่ 3 การสร้าง constructor  ให้ทำการสร้างคลาสขึ้นมาอีกคลาส 1 ชื่อว่า class.Course.inc โดยมีโค้ดการทำงานง่ายๆดังนี้

[sourcecode language=”php”]

0){
foreach($data as $name => $value){
$this->$name = $value;
}
}
}

public function display()
{
$display = ‘Course Code: ‘ . $this->code;
$display .= ‘
‘;
$display .= ‘Course Name: ‘ . $this->name;
return $display;
}
}

[/sourcecode]

เมื่อเขียนโค้ดของไฟล์ class นี้เสร็จแล้วให้ไปทำการแก้ไขการ include ไฟล์ใน index.php ให้เป็นดังนี้

[sourcecode language=”php”]

/**
* Define autoloader.
* @param string $class_name
*/
function __autoload($class_name){
include ‘class.’ . $class_name . ‘.inc’;
}

[/sourcecode]

โดยทำการเพิ่ม function __autoload เข้าไปแล้วลบบรรทัด require ‘class.Student.inc’; ออกด้วยนะครับ เมื่อเพื่อฟังก์ชั่น __autoload ให้ทำการเขียนโค้ดลองสร้าง object ของคลาส Course ดังนี้

[sourcecode language=”php”]

echo ‘

Test Class Course

‘;
$course = new Course(array(‘code’=>’111-000′,’name’=>’Programming’));

echo ‘

Function Display Course

‘;
echo $course->display();
[/sourcecode]

เมื่อลอง run ไฟล์ index.php ก็จะได้ผลดังรูปครับ

การเขียน PHP แบบ OOP ตอนที่ 4 การใช้ autoload เพื่อเรียกใช้งานคลาส

จะเห็นต่อให้มีการใช้ class กี่ class ก็ไม่ต้องเหนื่อยมานั่ง include หรือ require ไฟล์หลายๆไฟล์แล้ว แค่ใช้ megic method อย่าง __autoload แต่ autoload นั้นมันจะทำการโหลดตามรูปแบบของชื่อไฟล์ที่เรากำหนดสังเกตจากโค้ดตัวอย่าง การทำงานของมันจริงๆคือ

include ‘class.’ . $class_name . ‘.inc’;

นั้นคือมันจะทำการ include ชื่อไฟล์ที่มีรูปแบบ class.ชื่อคลาส.inc ทั้งหมดเท่านั้นเอง เพราะฉะนั้นเราก็ต้องปรับเปลี่ยนไปตามการตั้งชื่อไฟล์คลาสที่เราสร้างขึ้นนครับ

Downlaod Source Code

Leave a Reply

Your email address will not be published. Required fields are marked *