Holen Sie sich den Klassennamen in PHP
- Verwenden Sie die Klassennamenauflösung, um den Klassennamen in PHP zu erhalten
-
Verwenden Sie die Konstante
__CLASS__
, um den Klassennamen in PHP zu erhalten -
Verwenden Sie die Funktion
get_class()
, um den Klassennamen in PHP zu erhalten - Verwenden Sie die Reflexionsklasse, um den Klassennamen in PHP abzurufen
-
Verwenden Sie
::class
für das Objekt, um den Klassennamen in PHP zu erhalten
In diesem Tutorial wird erläutert, wie Sie einen PHP-Klassennamen mit Klassennamenauflösung, der PHP-Konstante __CLASS__
und der Methode get_class()
erhalten. Sie lernen seine Verwendung für die Auflösung von Klassennamen in und aus einer Klasse kennen.
Verwenden Sie die Klassennamenauflösung, um den Klassennamen in PHP zu erhalten
Sie können einen Klassennamen über die Klassennamenauflösung erhalten, wenn Sie einen Namespace in Ihrem Code haben. Das Ergebnis ist ein vollständig qualifizierter Klassenname (FQCN).
Dieses Feature ist in PHP als ClassName::class
verfügbar. Es ist nützlich, wenn Sie einen Namensraum in Ihrem PHP haben.
Im folgenden Codebeispiel liefert die Auflösung des Klassennamens via ClassName::class
den Klassennamen der zugehörigen Klasse:
<?php
namespace YourNameSpace;
// Define a class
class HelloClassName {}
// Get the class name from ::class
echo HelloClassName::class;
?>
Ausgabe:
YourNameSpace\HelloClassName
Wenn Sie diese Funktion in einer Klassenmethode verwenden möchten, können Sie den Klassennamen über die statische Methode erhalten. Sie schreiben dies als static::class
.
Das nächste Codebeispiel zeigt, wie ein Klassenname in einer Klassenmethode abgerufen wird.
<?php
namespace YourNameSpace;
// Define the class name
class HelloClassName {
/**
* Define a function that returns
* the class name via static::class
*/
public function getClassName() {
return static::class;
}
}
// Create a new object
$hello_class_name = new HelloClassName();
// Get the class name
echo $hello_class_name->getClassName();
?>
Ausgabe:
YourNameSpace\HelloClassName
Verwenden Sie die Konstante __CLASS__
, um den Klassennamen in PHP zu erhalten
Die Konstante __CLASS__
ist Teil der vordefinierten PHP-Konstante. Sie können es innerhalb einer Klasse verwenden, um einen Klassennamen zu erhalten.
Der folgende Code erhält den Klassennamen über die Konstante __CLASS__
.
<?php
// Define the class
class Hello {
// This function will return the
// class name
function HelloName (){
return __CLASS__;
}
}
// Create a new object
$hello_object= new Hello();
// Get the class name
echo $hello_object->HelloName();
?>
Ausgabe:
Hello
Verwenden Sie die Funktion get_class()
, um den Klassennamen in PHP zu erhalten
PHP stellt eine get_class()
-Funktion zur Verfügung. Diese Funktion gibt den Klassennamen zurück. Sie können es in der prozeduralen und objektorientierten Programmierung verwenden. Zuerst werfen wir einen Blick auf den prozeduralen Stil.
Der nächste Codeblock definiert eine Klasse mit einer einzelnen Funktion. Die Funktion innerhalb der Klasse gibt den Klassennamen zurück, wenn ihr Argument das Schlüsselwort this
ist.
Um den Klassennamen zu erhalten, erstellen Sie ein Objekt aus der Klasse; dann übergeben Sie den Namen des Objekts an get_class()
.
<?php
// Define a class
class Hello {
function class_name() {
echo "The class name is: ", get_class($this);
}
}
// Create a new object
$new_hello_object = new Hello();
// Get the class name
$new_hello_object->class_name();
// Also, you can get the class name
// via an external call
// echo get_class($new_hello_object);
?>
Ausgabe:
The class name is: Hello
Zunächst können Sie für den OOP-Stil die Funktion get_class()
aus einer statischen Klasse zurückgeben.
<?php
// Define a class
class Hello {
public static function class_name() {
return get_class();
}
}
// Get the class name
$class_name = Hello::class_name();
echo $class_name;
?>
Ausgabe:
Hello
Diese Methode hat ihre Grenzen, da die erweiterte Klasse beim Erweitern der Klasse den Namen der übergeordneten Klasse und nicht der erweiterten Klasse zurückgibt. Um dies zu lösen, können Sie get_called_class()
verwenden.
Die Funktion get_called class()
stützt sich auf Late Static Binding. Mit dieser Funktion gibt PHP den Namen der aufrufenden Klasse zurück. Es löst die Situation, in der die erweiterte Klasse den Namen ihrer übergeordneten Klasse und nicht ihren eigenen zurückgibt.
<?php
// Define a class
class Hello {
// A static function that returns the
// name of the class that calls it
public static function called_class_name() {
return get_called_class();
}
// This function will return the
// defining class name
public static function get_defining_class() {
return get_class();
}
}
class ExtendHello extends Hello {
}
$hello_class_name = Hello::called_class_name();
$extended_class_name = ExtendHello::called_class_name();
$extend_hello_parent_class = ExtendHello::get_defining_class();
echo "Hello class name: " . $hello_class_name . "\n";
echo "Extended Hello class name: " . $extended_class_name . "\n";
echo "Extended Hello parent class name: " . $extend_hello_parent_class . "\n";
?>
Ausgabe:
Hello class name: Hello
Extended Hello class name: ExtendHello
Extended Hello parent class name: Hello
Verwenden Sie die Reflexionsklasse, um den Klassennamen in PHP abzurufen
Reflection Class ist eine prägnante Methode, um einen Klassennamen in PHP zu erhalten. Sie erstellen eine Klasse; Erstellen Sie innerhalb dieser Klasse eine Funktion, die eine neue Reflection-Klasse zurückgibt.
Das Argument der Reflection-Klasse sollte auf $this
gesetzt sein. Danach können Sie den Klassennamen über die Methode getShortName()
erhalten, die mit der Reflection-Klasse verfügbar ist.
<?php
// Define a class
class Hello {
// A function that returns the class
// name via reflection
public function HelloClassName() {
return (new \ReflectionClass($this))->getShortName();
}
}
// Create a new class name
$hello_class_name = new Hello();
// Get the class name
echo $hello_class_name->HelloClassName();
?>
Ausgabe:
Hello
Verwenden Sie ::class
für das Objekt, um den Klassennamen in PHP zu erhalten
Das Feature ::class
funktionierte mit Klassen vor PHP 8. Seit PHP können Sie, wenn Sie ein Objekt aus einer Klasse erstellen, den Klassennamen aus dem erstellten Objekt mit ::class
erhalten.
Ein Beispiel finden Sie im folgenden Codeblock.
<?php
namespace YourNameSpace;
// define the class
class HelloClassName {
}
// Create a new object
$hello_class_name = new HelloClassName();
// Get the class name from the object
// via ::class
echo $hello_class_name::class;
?>
Ausgabe:
YourNameSpace\HelloClassName
Habdul Hazeez is a technical writer with amazing research skills. He can connect the dots, and make sense of data that are scattered across different media.
LinkedIn