Có vẻ như bạn đã trả lời câu hỏi của chính mình. get_classsẽ giúp bạn có được tên lớp. Đó là thủ tục và có thể đó là những gì đang gây ra sự nhầm lẫn. Hãy xem tài liệu php choget_class
Đây là ví dụ của họ:
<?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
Để làm cho nó giống với ví dụ của bạn hơn, bạn có thể làm điều gì đó như:
<?php
class MyClass
{
public static function getClass()
{
return get_class();
}
}
Bây giờ bạn có thể làm:
$className = MyClass::getClass();
Tuy nhiên, điều này có phần hạn chế, bởi vì nếu lớp học của tôi được mở rộng, nó vẫn sẽ trả về 'MyClass'. get_called_classThay vào đó, chúng ta có thể sử dụng tính năng này dựa trên Late Static Binding , một tính năng tương đối mới và yêu cầu 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'