Obtener nombre de clase en PHP

Habdul Hazeez 30 enero 2023
  1. Use la resolución de nombre de clase para obtener el nombre de clase en PHP
  2. Use la constante __CLASS__ para obtener el nombre de la clase en PHP
  3. Use la función get_class() para obtener el nombre de la clase en PHP
  4. Use la clase de reflexión para obtener el nombre de la clase en PHP
  5. Use ::class en el objeto para obtener el nombre de la clase en PHP
Obtener nombre de clase en PHP

Este tutorial discutirá cómo obtener un nombre de clase PHP con resolución de nombre de clase, constante PHP __CLASS__ y el método get_class(). Aprenderá su uso para la resolución de nombres de clase dentro y fuera de una clase.

Use la resolución de nombre de clase para obtener el nombre de clase en PHP

Puede obtener un nombre de clase a través de la resolución de nombres de clase cuando tiene un espacio de nombres en su código. El resultado es un nombre de clase totalmente calificado (FQCN).

Esta característica está disponible en PHP como ClassName::class. Es útil cuando tiene un espacio de nombres en su PHP.

En el siguiente ejemplo de código, la resolución del nombre de clase a través de ClassName::class devolverá el nombre de clase de la clase asociada:

<?php
    namespace YourNameSpace;

    // Define a class
    class HelloClassName {}

    // Get the class name from ::class
    echo HelloClassName::class;
?>

Producción :

YourNameSpace\HelloClassName

Si desea utilizar esta función en un método de clase, puede obtener el nombre de la clase a través del método estático. Escribirás esto como static::class.

El siguiente ejemplo de código muestra cómo obtener un nombre de clase en un método de clase.

<?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();
?>

Producción :

YourNameSpace\HelloClassName

Use la constante __CLASS__ para obtener el nombre de la clase en PHP

La constante __CLASS__ es parte de la constante predefinida de PHP. Puede usarlo dentro de una clase para obtener un nombre de clase.

El siguiente código obtendrá el nombre de la clase a través de la constante __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();
?>

Producción :

Hello

Use la función get_class() para obtener el nombre de la clase en PHP

PHP proporciona una función get_class(). Esta función devolverá el nombre de la clase. Se puede utilizar en la programación de procedimientos y orientada a objetos. Primero, echaremos un vistazo al estilo procedimental.

El siguiente bloque de código define una clase con una sola función. La función dentro de la clase devolverá el nombre de la clase cuando su argumento sea la palabra clave this.

Para obtener el nombre de la clase, crea un objeto de la clase; luego, le pasas el nombre del objeto a 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);
?>

Producción :

The class name is: Hello

Al principio, para el estilo OOP, puedes devolver la función get_class() desde una clase estática.

<?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;
?>	

Producción :

Hello

Este método tiene sus limitaciones porque cuando extiende la clase, la clase extendida devolverá el nombre de la clase principal y no la clase extendida. Para resolver esto, puedes usar get_ named_class().

La función get_called class() se basa en Enlace estático tardío. Con esta función, PHP devolverá el nombre de la clase que llama. Resuelve la situación en la que la clase extendida devuelve el nombre de su clase principal en lugar del suyo propio.

<?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";
?>

Producción :

Hello class name: Hello
Extended Hello class name: ExtendHello
Extended Hello parent class name: Hello

Use la clase de reflexión para obtener el nombre de la clase en PHP

Reflection Class es una forma concisa de obtener un nombre de clase en PHP. Creas una clase; dentro de esta clase, cree una función que devuelva una nueva clase Reflection.

La clase Reflection debe tener su argumento establecido en $this. Luego, puede obtener el nombre de la clase a través del método getShortName() disponible con la clase Reflection.

<?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();
?>

Producción :

Hello

Use ::class en el objeto para obtener el nombre de la clase en PHP

La función ::clase funcionaba en clases antes de PHP 8. Desde PHP, cuando creas un objeto a partir de una clase, puedes obtener el nombre de clase del objeto creado con ::clase.

Encontrará un ejemplo en el siguiente bloque de código.

<?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;
?>

Producción :

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

Artículo relacionado - PHP Class