ดูเหมือนคุณจะตอบคำถามของคุณเอง get_class
จะได้รับชื่อชั้น มันเป็นขั้นตอนและอาจเป็นสิ่งที่ทำให้เกิดความสับสน ดูเอกสารประกอบ php สำหรับget_class
นี่คือตัวอย่างของพวกเขา:
<?php
class foo
{
function name()
{
echo "My name is " , get_class($this) , "\n";
}
}
$bar = new foo();
echo "Its name is " , get_class($bar) , "\n";
$bar->name();
เพื่อให้เหมือนตัวอย่างของคุณมากขึ้นคุณสามารถทำสิ่งต่างๆเช่น:
<?php
class MyClass
{
public static function getClass()
{
return get_class();
}
}
ตอนนี้คุณสามารถทำได้:
$className = MyClass::getClass();
อย่างไรก็ตามสิ่งนี้ค่อนข้าง จำกัด เพราะถ้าชั้นเรียนของฉันขยายออกไปมันจะยังคงส่งคืน 'MyClass' เราสามารถใช้get_called_class
แทนได้ซึ่งอาศัยLate Static Bindingซึ่งเป็นคุณสมบัติที่ค่อนข้างใหม่และต้องใช้ PHP> = 5.3
<?php
class MyClass
{
public static function getClass()
{
return get_called_class();
}
public static function getDefiningClass()
{
return get_class();
}
}
class MyExtendedClass extends MyClass {}
$className = MyClass::getClass();
$className = MyExtendedClass::getClass();
$className = MyExtendedClass::getDefiningClass();