Web Development
PHP: Namespace
ชื่อ Class เหมือนกัน จะเรียกใช้ที่เดียวกันได้อย่างไรกันนะ ลองใช้ Namespace ดูสิ

ใน PHP เราก็จะมีการสร้าง Class แยกไว้ในแต่ละไฟล์ เพื่อที่จะให้ง่ายในการจัดการ ทีนี้แน่นอนมันอาจจะมีบางครั้งที่ชื่อ Class ในแต่ละไฟล์อาจจะซ้ำกัน แต่จะทำยังไงถ้าเราจำเป็นต้องใช้ Class จากไฟล์นั้นๆ พร้อมกัน คำตอบคือเราใช้ Namespace ในการแยกชื่อ Class กันเอง เรามาดูตัวอย่างกันหน่อย
สร้าง Class
- ผมสร้างไฟล์
firstClass.php
แล้วสร้าง ClassOrder
และ methodhandle
ซึ่งก็ไม่ได้ทำอะไรมาก แค่echo
ออกมา

<?php
namespace Car;
class Order
{
public function handle()
{
echo "Car done";
}
}
จะเห็นว่าผมมีการสร้าง Namespace ชื่อ Car
ไว้ใต้ tag <?php
- ต่อมาผมจะสร้างไฟล์
secondClass.php
แล้วก็สร้าง methodhandle
เหมือนกัน

<?php
namespace Hotel;
class Order
{
public function handle()
{
echo "Hotel done";
}
}
การเรียกใช้
จากนั้นเราก็จะเรียกใช้งาน Class ทั้งสอง โดยผมจะสร้างไฟล์ index.php
ขึ้นมา แล้วก็เรียกใช้งาน Class ทั้งสอง ดังนี้

<?php
require_once 'firstClass.php';
require_once 'secondClass.php';
$car = new Car\Order();
$hotel = new Hotel\Order();
จะเห็นว่าผมใช้ตัวแปร $car
มารับ Class Order
จาก Namespace Car
และใช้ตัวแปร $hotel
มารับ Class Order
จาก Namespace Hotel
แล้วก็เรียกใช้งาน method handle
ของทั้งสองตัว ดังนี้

<?php
$car->handle();
$hotel->handle();
ก็จบไปสำหรับการใช้ Namespace ใน PHP ซึ่งเราจะเห็นการใช้ Namespace กันอยู่บ่อยๆ ใน Framework ต่างๆ สำหรับใครที่กำลังสงสัยในเรื่องนี้อยู่ ก็หวังว่าบทความนี้จะช่วยให้เข้าใจมากขึ้นนะครับ
แหล่งอ่านเพิ่มเติม
Reference
คลิกเพื่อแสดงความคิดเห็น