PHP OOP - คลาสและออบเจกต์
คลาสคือเทมเพลตสำหรับออบเจ็กต์ และอ็อบเจ็กต์คือตัวอย่างของคลาส
OOP เคส
สมมติว่าเรามีคลาสชื่อ Fruit ผลไม้สามารถมีคุณสมบัติ เช่น ชื่อ สี น้ำหนัก ฯลฯ เราสามารถกำหนดตัวแปรเช่น $name, $color และ $weight เพื่อเก็บค่าของคุณสมบัติเหล่านี้
เมื่อวัตถุแต่ละชิ้น (แอปเปิ้ล กล้วย ฯลฯ) ถูกสร้างขึ้น วัตถุจะสืบทอดคุณสมบัติและพฤติกรรมทั้งหมดจากคลาส แต่วัตถุแต่ละชิ้นจะมีค่าคุณสมบัติต่างกัน
กำหนดคลาส
คลาสถูกกำหนดโดยใช้class
คำสำคัญ ตามด้วยชื่อของคลาสและวงเล็บปีกกาคู่หนึ่ง ({}) คุณสมบัติและวิธีการทั้งหมดอยู่ในเครื่องมือจัดฟัน:
ไวยากรณ์
<?php
class Fruit {
// code goes here...
}
?>
ด้านล่างเราประกาศคลาสชื่อ Fruit ซึ่งประกอบด้วยสองคุณสมบัติ ($name และ $color) และสองวิธี set_name() และ get_name() สำหรับการตั้งค่าและรับคุณสมบัติ $name:
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
?>
หมายเหตุ:ในคลาส ตัวแปรจะเรียกว่าคุณสมบัติ และฟังก์ชันเรียกว่าเมธอด!
กำหนดวัตถุ
ชั้นเรียนไม่มีอะไรเลยหากไม่มีวัตถุ! เราสามารถสร้างวัตถุหลายชิ้นจากชั้นเรียน แต่ละอ็อบเจ็กต์มีคุณสมบัติและเมธอดทั้งหมดที่กำหนดไว้ในคลาส แต่จะมีค่าคุณสมบัติต่างกัน
ออบเจ็กต์ของคลาสถูกสร้างขึ้นโดยใช้new
คีย์เวิร์ด
ในตัวอย่างด้านล่าง $apple และ $banana เป็นตัวอย่างของคลาส Fruit:
ตัวอย่าง
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
$apple = new Fruit();
$banana = new Fruit();
$apple->set_name('Apple');
$banana->set_name('Banana');
echo $apple->get_name();
echo "<br>";
echo $banana->get_name();
?>
ในตัวอย่างด้านล่าง เราได้เพิ่มเมธอดอีกสองวิธีในคลาส Fruit สำหรับการตั้งค่าและรับคุณสมบัติ $color:
ตัวอย่าง
<?php
class Fruit {
// Properties
public $name;
public $color;
// Methods
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
function set_color($color) {
$this->color = $color;
}
function get_color() {
return $this->color;
}
}
$apple = new Fruit();
$apple->set_name('Apple');
$apple->set_color('Red');
echo "Name: " . $apple->get_name();
echo "<br>";
echo "Color: " . $apple->get_color();
?>
PHP - $this คำสำคัญ
คีย์เวิร์ด $this อ้างถึงอ็อบเจ็กต์ปัจจุบัน และใช้ได้เฉพาะในเมธอด
ดูตัวอย่างต่อไปนี้:
ตัวอย่าง
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
?>
แล้วเราจะเปลี่ยนค่าของคุณสมบัติ $name ได้ที่ไหน? มีสองวิธี:
1. ภายในคลาส (โดยเพิ่มเมธอด set_name() และใช้ $this):
ตัวอย่าง
<?php
class Fruit {
public $name;
function set_name($name) {
$this->name = $name;
}
}
$apple = new Fruit();
$apple->set_name("Apple");
echo $apple->name;
?>
2. นอกคลาส (โดยเปลี่ยนค่าคุณสมบัติโดยตรง):
ตัวอย่าง
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
$apple->name = "Apple";
echo $apple->name;
?>
PHP - อินสแตนซ์ของ
คุณสามารถใช้instanceof
คีย์เวิร์ดเพื่อตรวจสอบว่าอ็อบเจ็กต์เป็นของคลาสเฉพาะหรือไม่:
ตัวอย่าง
<?php
$apple = new Fruit();
var_dump($apple instanceof
Fruit);
?>