Có vẻ như bạn đã trả lời câu hỏi của chính mình. get_class
sẽ 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_class
Thay 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'