LonghornPHP 2026

ReflectionParameter::getClass

(PHP 5, PHP 7, PHP 8)

ReflectionParameter::getClassПолучает объект ReflectionClass для отражаемого параметра или null

Внимание

Начиная с PHP 8.0.0 функция УСТАРЕЛА. Полагаться на функцию настоятельно не рекомендуют.

Описание

#[\Deprecated]
public function ReflectionParameter::getClass(): ? ReflectionClass

Метод получает объект ReflectionClass для отражаемого параметра или null.

Начиная с PHP 8.0.0 метод устарел и им не рекомендуют пользоваться. Вместо него лучше вызывать метод ReflectionParameter::getType() , чтобы получить экземпляр отражения параметра — ReflectionType , а затем опросить этот объект, чтобы определить тип параметра.

Внимание

Функцию пока не задокументировали; для знакомства доступен только список аргументов.

Список параметров

Сигнатура функции не содержит параметров.

Возвращаемые значения

Метод возвращает объект класса ReflectionClass или null , если тип не объявили или если объявленный тип не принадлежит классу или интерфейсу.

Примеры

Пример #1 Пример получения объекта ReflectionParameter для отражаемого параметра

<?php
function foo(Exception $a) {}
$functionReflection = new ReflectionFunction('foo');
$parameters = $functionReflection->getParameters();
$aParameter = $parameters[0];
echo $aParameter->getClass()->name;
?>

Список изменений

Версия Описание
8.0.0 Метод устарел в пользу метода ReflectionParameter::getType() .

Смотрите также

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей 5 notes

up
11
infernaz at gmail dot com
15 years ago
The method returns ReflectionClass object of parameter type class or NULL if none.
<?php
class A {
 function b(B $c, array $d, $e) {
 }
}
class B {
}
$refl = new ReflectionClass('A');
$par = $refl->getMethod('b')->getParameters();
var_dump($par[0]->getClass()->getName()); // outputs B
var_dump($par[1]->getClass()); // note that array type outputs NULL
var_dump($par[2]->getClass()); // outputs NULL
?>
up
10
tom at r dot je
14 years ago
ReflectionParameter::getClass() will cause a fatal error (and trigger __autoload) if the class required by the parameter is not defined. 
Sometimes it's useful to only know the class name without needing the class to be loaded.
Here's a simple function that will retrieve only the class name without requiring the class to exist:
<?php
function getClassName(ReflectionParameter $param) {
 preg_match('/\[\s\<\w+?>\s([\w]+)/s', $param->__toString(), $matches);
 return isset($matches[1]) ? $matches[1] : null;
}
?>
up
7
Dylan
5 years ago
For php version >=8
ReflectionParamter::getType() is the recommended way to replace the deprecated methods:
- getClass()
e.g: $name = $param->getType() && !$param->getType()->isBuiltin() 
 ? new ReflectionClass($param->getType()->getName())
 : null;
- isArray()
e.g: $isArray = $param->getType() && $param->getType()->getName() === 'array';
- isCallable()
e.g: $isCallable = $param->getType() && $param->getType()->getName() === 'callable';
This method is available in PHP 7.0 and later.
up
1
tarik at bitstore dot ru
5 years ago
You may use this one function instead depricated
 /**
 * Get parameter class
 * @param \ReflectionParameter $parameter
 * @return \ReflectionClass|null
 */
 private function getClass(\ReflectionParameter $parameter):?\ReflectionClass
 {
 $type = $parameter->getType();
 if (!$type || $type->isBuiltin())
 return NULL;
// This line triggers autoloader!
 if(!class_exists($type->getName()))
 return NULL;
 
 return new \ReflectionClass($type->getName());
 }
up
-4
richard dot t dot rohrig at gmail dot com
6 years ago
Example of how to use getClass() in conjunction with getConstructor() to build the dependencies of a class. 
private function buildDependencies(ReflectionClass $reflection)
 {
 $constructor = $reflection->getConstructor();
 if (!$constructor) {
 return [];
 }
 $params = $constructor->getParameters();
 return array_map(function ($param) {
 $className = $param->getClass();
 if (!$className) {
 throw new Exception();
 }
 $className = $param->getClass()->getName();
 return $this->make($className);
 }, $params);
 }
+Добавить

AltStyle によって変換されたページ (->オリジナル) /