PHP: Namespace

Web Development

PHP: Namespace

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

ประมาณ 1 ปีที่ผ่านมา

1 min read

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

สร้าง Class

  • ผมสร้างไฟล์ firstClass.php แล้วสร้าง Class Order และ method handle ซึ่งก็ไม่ได้ทำอะไรมาก แค่ echo ออกมา
<?php
 
namespace Car;
 
class Order
{
    public function handle()
    {
        echo "Car done";
    }
}

จะเห็นว่าผมมีการสร้าง Namespace ชื่อ Car ไว้ใต้ tag <?php

  • ต่อมาผมจะสร้างไฟล์ secondClass.php แล้วก็สร้าง method handle เหมือนกัน
<?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

Tags:

PHP