Holen Sie sich den Klassennamen in PHP

Habdul Hazeez 30 Januar 2023
  1. Verwenden Sie die Klassennamenauflösung, um den Klassennamen in PHP zu erhalten
  2. Verwenden Sie die Konstante __CLASS__, um den Klassennamen in PHP zu erhalten
  3. Verwenden Sie die Funktion get_class(), um den Klassennamen in PHP zu erhalten
  4. Verwenden Sie die Reflexionsklasse, um den Klassennamen in PHP abzurufen
  5. Verwenden Sie ::class für das Objekt, um den Klassennamen in PHP zu erhalten
Holen Sie sich den Klassennamen in PHP

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 avatar Habdul Hazeez avatar

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

Verwandter Artikel - PHP Class