PHP: Получить имя класса переданной VAR? - PullRequest
4 голосов
/ 15 февраля 2010

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

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

function getClassName()
    {
        return __CLASS__;
    }

но если класс будет расширен, я предположил, что это вернет имя подкласса, но все равно вернет имя суперкласса, которое я нахожу странным

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

Спасибо !!

Ответы [ 6 ]

12 голосов
/ 15 февраля 2010

См. get_class , это именно то, чего вы пытаетесь достичь.

$class_name = get_class($object);
11 голосов
/ 30 ноября 2011

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

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

Или с preg_replace

echo preg_replace('/.*([\w]+)$/U', '$1', get_called_class());
1 голос
/ 15 февраля 2010

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

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

get_class($param);

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

0 голосов
/ 15 февраля 2010

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

var_dump (get_called_class ());

0 голосов
/ 15 февраля 2010

Прямо из документации по 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"
0 голосов
/ 15 февраля 2010

Использование get_class :

$className = get_class($object);
...