Схоже, ви відповіли на власне запитання. get_classдасть вам назву класу. Це процедурно, і, можливо, саме це спричиняє плутанину. Погляньте на документацію до php дляget_class
Ось їх приклад:
<?php
class foo
{
function name()
{
echo "My name is " , get_class($this) , "\n";
}
}
// create an object
$bar = new foo();
// external call
echo "Its name is " , get_class($bar) , "\n"; // It's name is foo
// internal call
$bar->name(); // My name is foo
Щоб зробити його більш схожим на ваш приклад, ви можете зробити щось на зразок:
<?php
class MyClass
{
public static function getClass()
{
return get_class();
}
}
Тепер ви можете зробити:
$className = MyClass::getClass();
Однак це дещо обмежено, оскільки, якщо мій клас буде розширено, він все одно поверне "MyClass". get_called_classНатомість ми можемо використовувати відносно нову функцію , яка спирається на пізнє статичне прив’язування та вимагає 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(); // 'MyClass'
$className = MyExtendedClass::getClass(); // 'MyExtendedClass'
$className = MyExtendedClass::getDefiningClass(); // 'MyClass'