PHP:Получить имя класса переданной переменной?

StackOverflow https://stackoverflow.com/questions/2266921

  •  20-09-2019
  •  | 
  •  

Вопрос

У меня есть функция, которая получает класс, передаваемый ей в качестве параметра.Я хотел бы получить имя переданного класса в виде строки.

Я попытался поместить этот метод в переданный класс:

function getClassName()
    {
        return __CLASS__;
    }

но если класс расширен, я предполагал, что это вернет имя подкласса, но оно все равно возвращает имя суперкласса, что мне кажется странным.

Итак, если $var передается функции в качестве параметра, есть ли способ получить строку имени класса?

Спасибо!!

Это было полезно?

Решение

Видеть get_class, это должно быть именно то, чего вы пытаетесь достичь.

$class_name = get_class($object);

Другие советы

Самый простой способ получить имя класса без пространства имен:

$class = explode('\\', get_called_class());
echo end($class);

Или с помощью preg_replace

echo preg_replace('/.*([\w]+)$/U', '$1', get_called_class());

__ CLASS __ с возвратом имени класса, в котором реализован метод.

Если вы хотите получить имя класса переданного объекта, вы можете использовать:

get_class($param);

Кроме того, если вы используете PHP5, предоставленные классы отражения также будут полезны.

Использовать get_class:

$className = get_class($object);

Прямо из документации php: http://uk.php.net/manual/en/function.get-class.php

<?php

abstract class bar {
    public function __construct()
    {
        var_dump(get_class($this));
        var_dump(get_class());
    }
}

class foo extends bar {
}

new foo;

?>

The above example will output:

string(3) "foo"
string(3) "bar"

вы также можете добавить метод в переданный класс(ы), возвращающий это:

var_dump(get_known_class());

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top