Sembra che si risposto alla tua domanda. get_class
otterrai il nome della classe. È procedurale e forse è ciò che sta causando la confusione. Date un'occhiata alla documentazione di PHP per get_class
Ecco il loro esempio:
<?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
Per renderlo più simile a tuo esempio si potrebbe fare qualcosa di simile:
<?php
class MyClass
{
public static function getClass()
{
return get_class();
}
}
Ora si può fare:
$className = MyClass::getClass();
Questo è un po 'limitato, tuttavia, perché se la mia classe è esteso esso restituirà ancora "MyClass". Possiamo invece utilizzare get_called_class
, che si basa su Late Static Binding, una funzione relativamente nuova e richiede 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'
fonte
2013-02-27 04:11:44
Potrebbe fare un esempio particolare quando potrebbe essere utile in php? Se hai codificato il nome della classe, puoi racchiuderlo tra virgolette e ottenere ciò che desideri. – zerkms
Sfortunatamente i rifacimenti automatici (ad esempio negli IDE) come RenameClass di solito non rinominano le stringhe di questo nome di classe. Quindi sarebbe bello avere un qualche tipo di modo statico per ottenere il nome della classe, a parte il 'public $ __ CLASS__ = __CLASS __;' balla con ogni altra classe ... – EricSchaefer
Possibile duplicato di [Come posso ottenere il nome della classe da una chiamata statica in una classe PHP estesa?] (https://stackoverflow.com/questions/506705/how-can-i-get-the-classname-from-a-static-call-in-an-extended-php -class) – Theraot