ReflectionProperty::hasDefaultValue

(PHP 8)

ReflectionProperty::hasDefaultValueПроверяет, задано ли для свойства значение по умолчанию

Описание

public ReflectionProperty::hasDefaultValue(): bool

Проверяет, задано ли для свойства значение по умолчанию, включая null. Возвращает false для типизированных свойств без заданного значения по умолчанию и для динамически определяемых свойств.

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

У этой функции нет параметров.

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

Если для свойства задано значение по умолчанию (включая null), то возвращает true. Если свойство типизированное и для него не задано значение по умолчанию, либо если это динамически определяемое свойство, то возвращает false.

Примеры

Пример #1 Пример использования ReflectionProperty::hasDefaultValue()

<?php
class Foo {
public
$bar;
public ?
int $baz;
public ?
int $foo = null;
public
int $boing;

public function
__construct()
{
$this->ping = '';
}
}

$ro = new ReflectionObject(new Foo());
var_dump($ro->getProperty('bar')->hasDefaultValue());
var_dump($ro->getProperty('baz')->hasDefaultValue());
var_dump($ro->getProperty('foo')->hasDefaultValue());
var_dump($ro->getProperty('boing')->hasDefaultValue());
var_dump($ro->getProperty('ping')->hasDefaultValue()); // Динамическое свойство
var_dump($ro->getProperty('pong')->hasDefaultValue()); // Неопределённое свойство
?>

Результат выполнения приведённого примера:

bool(true)
bool(false)
bool(true)
bool(false)
bool(false)

Fatal error: Uncaught ReflectionException: Property Foo::$pong does not exist in example.php

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

Добавить

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

up
0
vuryss at gmail dot com
2 days ago
It is useful to note that if this is used on a promoted property, which has a default value, it does not work as expected. The default value is related to the constructor parameter, not to the property itself. So for example, if you reflect this property:

<?php
class SomeClass
{
public function
__construct(
public ?
string $property = null,
) {
}
}
?>

The ReflectionProperty::hasDefaultValue will return false.
To Top