[PHP] Trait ใช้งานยังไง?
Trait ใน PHP จะเหมือนกับเป็นลูกผสมระหว่าง class แม่ที่ทำมาให้ extends และ interface โดยที่ trait นั้นสามารถถูกเรียกใช้ได้หลาย trait ใน class เดียวกัน เหมือนการ implements interface แต่ตัว trait นั้นไม่ต้องประกาศ function เป็น abstract เลย
ประโยชน์ของ trait คือการที่เรารวมเอา "ลักษณะ" ของโค้ดที่ใช้งานบ่อยมาไว้ในที่เดียวเพื่อให้สะดวกต่อการนำไปใช้ซ้ำ
คุณสมบัติของ Trait
- เรียกใช้ได้มากกว่า 1 trait เหมือนการ implements interface
- อยากประกาศ function หรือ property ก็ทำได้หมด ทั้ง public, protected, private หรือ static (ข้อนี้จะให้ความรู้สึกเหมือน extends class)
- การเรียกใช้ trait จะเสมือนกับการก๊อปโค้ดทั้งยวงใน trait ไปแปะใน class ที่เรียกใช้ และใช้งานได้ตามนั้นเลย โดยเฉพาะ scope หากประกาศเป็น private ไว้ ก็จะใช้ได้เฉพาะภายใน class ที่เรียกใช้ trait
<?php
trait ExampleTrait {
private privateFunc() {
echo 'This is private function';
}
}
class ParentClass {
use ExampleTrait; //เรียกใช้ trait หากมีมากกว่า 1 ขั้นด้วย ,
public function parentFunc() {
$this->privateFunc(); // อันนี้เรียกใช้งานได้
}
}
class ChildClass extends ParentClass {
public function childFunc() {
$this->privateFunc(); // อันนี้จะ error เพราะเข้าถึง function ไม่ได้
}
}
อาจจะยังมองภาพ ต้องลองหาอ่านโค้ดตัวอย่างเยอะ ๆ และแหล่งหนึ่งที่แนะนำก็คงไม่พ้น Laravel เหมือนเดิม ตามนี้เลย
ความคิดเห็น
แสดงความคิดเห็น