Web Development

PHP: Magic constants 🪄

ในบทความนี้จะเป็นการแนะนำ Magic constants ในภาษา PHP ที่เราสามารถเรียกใช้งานได้เลย

30 สิงหาคม 20232 นาที
0
PHP: Magic constants 🪄
Table of Contents

__LINE__

เมื่อเรียกใช้งานจะ return ค่าเป็นชื่อหมายเลขบรรทัดของไฟล์ที่ใช้งาน

PHP Logo
<?php echo 'This is line ' . __LINE__; // This is line 2

__FILE__

เมื่อใช้งาน จะ return ค่าเป็นชื่อเป็น path ของไฟล์ที่ใช้งาน รวมถึงชื่อไฟล์ด้วย

PHP Logo
<?php echo 'This is file ' . __FILE__; // This is file /home/user/scripts/code.php

__DIR__

จะเหมือนกับ __FILE__ แต่จะ return ค่าเป็นชื่อเฉพาะ path ของไดเร็กทอรีที่ใช้งาน

PHP Logo
<?php echo 'This is dir ' . __DIR__; // This is dir /home/user/scripts

__FUNCTION__

เมื่อใช้ในฟังก์ชัน จะ return ค่าเป็นชื่อของฟังก์ชันนั้นๆ

PHP Logo
<?php function magic() { echo 'This is function ' . __FUNCTION__; } magic(); // This is function magic

__CLASS__

เมื่อเรียกใช้งานในคลาส จะ return ค่า เป็นชื่อของคลาสปัจจุบัน

PHP Logo
<?php class MagicClass { public function Frostbite(){ return __CLASS__; } } $obj = new MagicClass(); echo $obj->Frostbite(); // MagicClass

__TRAIT__

ก็เหมือนกันกับ __CLASS__ แต่เอามาใช้กับ trait

PHP Logo
<?php trait MagicTrait { public function IceBlast() { echo 'This is trait ' . __TRAIT__; } } class IceMan { use MagicTrait; } $obj = new IceMan(); $obj->IceBlast(); // This is trait MagicTrait

__METHOD__

เมื่อใช้งานจะ return ค่าเป็นชื่อของ method ในคลาสหรือ trait นั้นๆ ที่ใช้งานอยู่

PHP Logo
<?php trait MagicTrait { public function IceBlast() { echo 'This is trait ' . __METHOD__; } } class IceMan { use MagicTrait; } $obj = new IceMan(); $obj->IceBlast(); // This is trait IceMan::IceBlast

__NAMESPACE__

เมื่อเรียกใช้งานจะ return ค่าเป็นชื่อของเนมสเปซที่ใช้งานอยู่

PHP Logo
<?php namespace MyWorld; echo 'This is namespace ' . __NAMESPACE__; // This is namespace MyWorld

ClassName::class

เมื่อเรียกใช้งานจะ return ทุกอย่างใน class นั้นๆ

PHP Logo
<?php class IceMan { public function IceBlast() { echo 'This is class ' . __METHOD__; } } $obj = new IceMan(); $obj->IceBlast(); // This is class IceMan::IceBlast

เราจะเห็นการเขียนแบบนี้บ่อยๆ ใน Framework ต่างๆ ของ PHP เช่น ใน Laravel

PHP Logo
use App\Http\Controllers\UserController; Route::get('/user', [UserController::class, 'index']);
Tags:PHP

คลิกเพื่อแสดงความคิดเห็น