PHP:Получить имя класса переданной переменной?
Вопрос
У меня есть функция, которая получает класс, передаваемый ей в качестве параметра.Я хотел бы получить имя переданного класса в виде строки.
Я попытался поместить этот метод в переданный класс:
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());