Namespace ใน PHP ใช้แก้ปัญหาชื่อชนกัน (Name Collision) เมื่อสร้างแอปพลิเคชันขนาดใหญ่ หรือรวมไลบรารีภายนอก อาจมีชื่อคลาส ฟังก์ชัน ค่าคงที่ ซ้ำกัน Namespace จัดกลุ่ม classes, interfaces, functions, constants ที่เกี่ยวข้อง
ไวยากรณ์
<?php
namespace MyfirstNamespace {
function welcome() {
echo 'welcome To Namespace';
}
}
?>
Namespace แก้ปัญหา 2 ข้อ:
- 1. ชื่อชนระหว่างโค้ดของคุณ กับ PHP internal classes/functions/constants หรือ third-party
- 2. ย่อชื่อยาว (Extra_Long_Names) เพื่อ readability
หมายเหตุ: Alias ด้วย USE
Namespace แทนที่อยู่ของไฟล์ในแอป ถ้าต้องการย่อ ใช้ "USE" สร้าง alias
<?php
namespace SMTP;
class Mail{}
namespace Mailgun;
class Mail{}
use SMTP\Mail as SMTPMail;
use Mailgun\Mail as MailgunMail;
$smtp_mailer = new SMTPMail();
$mailgun_mailer = new MailgunMail();
?>
คำอธิบาย
มีคลาส Mail ซ้ำ 2 namespace ใช้ alias (SMTPMail, MailgunMail) เพื่อใช้พร้อมกันได้