Traits เป็นกลไกสำหรับการใช้ code ซ้ำในภาษาที่เป็น single inheritance เช่น PHP
Traits มีความคล้ายคลึงกับ class ต่างกันที่ Traits เป็นเพียงกลุ่มของ method เท่านั้น จึงไม่สามารถเรียกใช้งานแบบ instance ได้ นอกจากนั้น มันยังมีความสามารถเพิ่มเติม คือ การเรียกใช้ class member ของ class ที่เรียกใช้มันได้ โดยไม่ต้อง inherit อีกด้วย
ตัวอย่างการใช้งาน
สมมติว่า เราสร้าง Traits ชื่อ Sample.php ขึ้นมาที่ app/Traits ของโปรเจคเรา โดยมีโค้ดดังนี้<?php namespace App\Traits; trait Sample { public static function printClass(){ echo __CLASS__; } }แล้วเรานำ traits นี้ไปเรียกใช้ใน User และ Admin Models ดังนี้
- User Model มีโค้ดดังนี้
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use App\Traits\Sample; class Users extends Model { use Sample; }
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use App\Traits\Sample; class Admin extends Model { use Sample; }หลังจากนั้น ลองเรียกใช้ method ภายใน traits ผ่านทาง Model ทั้ง 2 Model ด้วยโค้ดดังนี้
User::printClass(); Admin::printClass();ผลลัพธ์ที่ได้ จะเป็นดังนี้
App\Models\User App\Models\Admin
No comments:
Post a Comment