การแนะนำสู่ OOP ใน PHP
ตอนนี้เราจะมาศึกษา OOP ใน PHP กัน ลองมาดูตัวอย่างจากชีวิตจริง แล้วค่อยนำมันมาใช้ใน PHP
ในฐานะตัวอย่างลองพิจารณารถยนต์ มันมีล้อ สี ประเภทร่างรถ ปริมาตรเครื่องยนต์ และอื่นๆ นอกจากนั้นคนขับ สามารถสั่งคำสั่งให้มันได้: วิ่ง, หยุด, เลี้ยวขวา, เลี้ยวซ้าย เป็นต้น
เราสามารถพูดได้ว่ามีคลาสของรถยนต์อยู่ ซึ่งมีคุณสมบัติร่วมกัน (ทุกคันมีล้อและทุกคัน สามารถรับคำสั่งได้)
รถยนต์คันหนึ่งที่จอดอยู่บนถนน - นี่คือตัวแทนของคลาสนี้ หรือพูดอีกนัยหนึ่ง คืออ็อบเจกต์ของคลาสนี้ อ็อบเจกต์ทั้งหมด ของคลาสนี้มีคุณสมบัติ: จำนวนล้อ, สี, ประเภทร่างรถ และเมธอด: วิ่ง, หยุด, เลี้ยวขวา, เลี้ยวซ้าย
กล่าวคือตัวคลาสเองนั้นคือพิมพ์เขียว ที่โรงงานใช้ผลิตรถยนต์ ส่วนอ็อบเจกต์ คือตัวรถยนต์เองที่ถูกสร้างมาจากพิมพ์เขียวเหล่านั้น
ใน PHP คลาสถูกสร้างด้วยคีย์เวิร์ด
class ตามด้วยชื่อ
ของคลาสนั้น ลองสร้างคลาสCarกัน:
<?php
class Car
{
// โค้ดตรงนี้ ก็คือพิมพ์เขียว PHP ของรถยนต์
}
?>
ตอนนี้ให้ระบุในพิมพ์เขียวของเราว่ารถยนต์ใดๆ ที่สร้างจากพิมพ์เขียวนี้จะ มีคุณสมบัติสำหรับสีและคุณสมบัติสำหรับปริมาณ น้ำมันเชื้อเพลิง
เพื่อการนี้ ภายในคลาสให้เขียนคุณสมบัติ
$color และคุณสมบัติ$fuel:
<?php
class Car
{
// กำหนดคุณสมบัติ (โดยพื้นฐานคือตัวแปรของคลาส):
public $color; // สีของรถยนต์
public $fuel; // ปริมาณน้ำมันเชื้อเพลิง
}
?>
ตอนนี้ลองสร้างเมธอดของคลาสเรากัน
ใน PHP เมธอด เหมือนกับฟังก์ชันทั่วไป ถูกประกาศ
ด้วยคีย์เวิร์ดfunction
โดยหน้าคีย์เวิร์ดนี้จะเขียนคีย์เวิร์ด
public
ตามที่ได้กล่าวไว้ข้างต้น รถยนต์ของเรา สามารถวิ่งได้ สามารถเลี้ยวได้ สามารถหยุดได้ มาสร้างเมธอดที่สอดคล้องกันในคลาสของเรากัน:
<?php
class Car
{
public $color; // สีของรถยนต์
public $fuel; // ปริมาณน้ำมันเชื้อเพลิง
// คำสั่งวิ่ง:
public function go()
{
// โค้ด PHP บางอย่าง
}
// คำสั่งเลี้ยว:
public function turn()
{
// โค้ด PHP บางอย่าง
}
// คำสั่งหยุด:
public function stop()
{
// โค้ด PHP บางอย่าง
}
}
?>
เราทำพิมพ์เขียวของรถยนต์ของเราเสร็จแล้ว ตอนนี้ต้องไปที่โรงงานและสร้าง อ็อบเจกต์ของคลาสนี้ (นั่นคือ รถยนต์คันหนึ่งโดยเฉพาะ)
ใน PHP สิ่งนี้ทำได้ด้วยคีย์เวิร์ด
new หลังจากที่เขียนชื่อคลาส:
<?php
new Car;
?>
อย่างไรก็ตาม หากเพียงแค่สร้างอ็อบเจกต์ของคลาส - สิ่งนี้จะไม่นำไปสู่ผลใด (นี่เหมือนกับ การประกาศอาร์เรย์แล้วไม่ได้เก็บมันไว้ที่ไหน) เราต้องการตัวแปรสำหรับ เก็บอ็อบเจกต์นี้
ให้ตัวแปรนี้ชื่อว่า$myCar
- เก็บอ็อบเจกต์ที่เราสร้างไว้ในนั้น:
<?php
$myCar = new Car;
?>
หลังจากสร้างรถยนต์แล้ว สามารถเข้าถึง
คุณสมบัติของมันได้ การเข้าถึงคุณสมบัติเกิดขึ้น
ผ่านเครื่องหมายลูกศร-> ลองกำหนด
คุณสมบัติของอ็อบเจกต์ของเรากัน:
<?php
$myCar = new Car; // สั่งให้โรงงานสร้างรถยนต์
// กำหนดคุณสมบัติของอ็อบเจกต์:
$myCar->color = 'red'; // ทาสีแดง
$myCar->fuel = 50; // เติมน้ำมันเชื้อเพลิง
?>
เรียบร้อย รถยนต์ของเราถูกสร้างแล้ว ทาสีแล้วและเติมน้ำมันแล้ว ตอนนี้เราสามารถสั่งคำสั่งให้มันผ่าน เมธอดของรถยนต์คันนี้ได้
การเข้าถึงเมธอดก็เกิดขึ้นผ่าน เครื่องหมายลูกศรเช่นกัน แต่ ต่างจากคุณสมบัติ หลังจาก ชื่อเมธอดต้องเขียนเครื่องหมายวงเล็บ มาลองสั่งอ็อบเจกต์ของเรากัน:
<?php
$myCar->go();
$myCar->turn();
$myCar->stop();
?>