PHP OOP - ลักษณะ
PHP - ลักษณะคืออะไร?
PHP รองรับการสืบทอดเดียวเท่านั้น: คลาสย่อยสามารถสืบทอดจากพาเรนต์เดียวเท่านั้น
แล้วถ้าคลาสต้องการสืบทอดพฤติกรรมหลายอย่างล่ะ? ลักษณะ OOP ช่วยแก้ปัญหานี้ได้
ลักษณะที่ใช้ในการประกาศวิธีการที่สามารถใช้ได้ในหลายคลาส ลักษณะสามารถมีเมธอดและเมธอดนามธรรมที่สามารถใช้ได้ในหลายคลาส และเมธอดสามารถมีตัวแก้ไขการเข้าถึงใดๆ (สาธารณะ ส่วนตัว หรือที่ได้รับการป้องกัน)
ลักษณะถูกประกาศด้วยtrait
คำสำคัญ:
ไวยากรณ์
<?php
trait TraitName {
// some code...
}
?>
หากต้องการใช้คุณลักษณะในชั้นเรียน ให้ใช้
use
คีย์เวิร์ด:
ไวยากรณ์
<?php
class MyClass {
use TraitName;
}
?>
ลองดูตัวอย่าง:
ตัวอย่าง
<?php
trait message1 {
public function msg1() {
echo "OOP is fun! ";
}
}
class Welcome {
use
message1;
}
$obj = new Welcome();
$obj->msg1();
?>
ตัวอย่างที่อธิบาย
ในที่นี้ เราประกาศคุณลักษณะหนึ่งอย่าง: ข้อความ1 จากนั้น เราสร้างคลาส: ยินดีต้อนรับ ชั้นเรียนใช้คุณลักษณะนี้ และวิธีการทั้งหมดในคุณลักษณะนี้จะพร้อมใช้งานในชั้นเรียน
หากคลาสอื่นจำเป็นต้องใช้ฟังก์ชัน msg1() ให้ใช้คุณสมบัติ message1 ในคลาสเหล่านั้น ซึ่งจะช่วยลดความซ้ำซ้อนของโค้ด เนื่องจากไม่จำเป็นต้องประกาศวิธีการเดียวกันซ้ำแล้วซ้ำอีก
PHP - การใช้หลายลักษณะ
ลองดูตัวอย่างอื่น:
ตัวอย่าง
<?php
trait message1 {
public function msg1() {
echo "OOP is fun! ";
}
}
trait message2 {
public function msg2()
{
echo "OOP reduces code duplication!";
}
}
class Welcome {
use message1;
}
class Welcome2 {
use message1, message2;
}
$obj = new Welcome();
$obj->msg1();
echo "<br>";
$obj2 =
new Welcome2();
$obj2->msg1();
$obj2->msg2();
?>
ตัวอย่างที่อธิบาย
ในที่นี้ เราประกาศคุณสมบัติสองประการ: ข้อความ1 และข้อความ2 จากนั้น เราสร้างสองคลาส: Welcome และ Welcome2 คลาสแรก (ยินดีต้อนรับ) ใช้คุณสมบัติ message1 และคลาสที่สอง (Welcome2) ใช้ทั้งคุณสมบัติ message1 และ message2 (คุณสมบัติหลายรายการถูกคั่นด้วยเครื่องหมายจุลภาค)