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

ในหนังสือหรือที่ไหนๆ มักจะเปรียบเทียบว่า มันเป็นเสมือนรถ ที่รถทุกแบบจะต้องมีคุณสมบัติวิ่งได้ มีล้อ มีสี นี่คือ properties พร้อพเพอตี้ และรถกำลังวิ่ง 120 กม. ต่อชั่วโมง นี่คือ method เมธอด และรถเราสามารถนำไปแต่งเติมได้ เช่น ติดปลายท่อสแตนเลส เปลี่ยนสปอยเลอร์ นี่คือการสืบทอดคลาส โอ้ยยยย….. OOP มันคือยักษ์ น่ากลัวและเข้าใจยากเสียเหลือเกิน

class ftp_base {
	var $LocalEcho;
	var $Verbose;
	var $OS_local;
	var $OS_remote;
 
	function SendMSG($message = "", $crlf=true) {
		if ($this->Verbose) {
			echo $message.($crlf?CRLF:"");
			flush();
		}
		return TRUE;
	}
}

อันที่จริงแล้ว OOP มันไม่ได้เป็นอะไรเลย มันคือกลุ่มของตัวแปรและฟังก์ชั่น ตัวแปร พี่หรั่งเรียกเสียใหม่ว่า properties ฟังก์ชั่นพี่แกก็เปลี่ยนชื่อซะว่า method ก็แค่นั้นเอง จากตัวอย่างด้านบน

properties : LocalEcho,Verbose,OS_local,OS_remote
method : SendMSG

properties มันก็คือ ตัวแปร ตัวแปรธรรมดาๆนี่แหละ ตัวแปรที่เราประกาศใช้กันอยู่ทุกวันนี่แหละ เพียงแค่เพิ่มกฎเข้าไปนิดหนึ่งว่า ใช้ var เพื่อประกาศนะจ๊ะ
method มันก็คือฟังก์ชั่น ฟังก์ชั่นที่เราก็เขียนๆกันอยู่ทุกวันนี่แหละ

OOP มันคือยักหรือเปล่าล่ะ

ทีนี้เวลาจะนำโค้ด ftp_base ไปใช้งานล่ะ มันก็เหมือนเรียกใช้ฟังก์ชั่นนั่นแหละ เพียงแต่เพิ่มกฎมาิจิ๊ดดดนึงว่า เติมคำว่า new ด้วยนะ

class ftp_base {
	var $LocalEcho;
	var $Verbose;
	var $OS_local;
	var $OS_remote;
 
	function SendMSG($message = "", $crlf=true) {
		if ($this->Verbose) {
			echo $message.($crlf?CRLF:"");
			flush();
		}
		return TRUE;
	}
}
 
// ก็แค่เนี้ย
$ftp = new ftp_base();

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

$ftp = new ftp_base();
$ftp->Verbose = TRUE;
$ftp->SendMSG();

แค่นี้เอง OOP ไม่ใช่ยักษ์ซะหน่อย