PHP.mk документација

Читање атрибути со Reflection API

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

language.attributes.reflection.php PHP.net прокси Преводот е вчитан
Оригинал на PHP.net
Патека language.attributes.reflection.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + преведен приказ Кодовите, табелите и белешките остануваат читливи во истиот тек.
Читање атрибути со Reflection API

Референца за `language.attributes.reflection.php` со подобрена типографија и навигација.

language.attributes.reflection.php

Читање атрибути со Reflection API

За пристап до атрибути од класи, методи, функции, параметри, својства и константи на класа, користете го getAttributes() За пристап до атрибути од класи, методи, функции, параметри, својства и константи на класата, користете го методот обезбеден од Reflection API. Овој метод враќа низа од инстанци. Овие инстанци може да се прашуваат за името на атрибутот, аргументите и може да се користат за инстанцирање на инстанца на претставениот атрибут. ReflectionAttribute Одвојувањето на рефлектираната репрезентација на атрибутот од неговата вистинска инстанца обезбедува поголема контрола врз ракувањето со грешки, како што се класи на атрибути што недостасуваат, погрешно напишани аргументи или вредности што недостасуваат. Објектите од класата на атрибутот се инстанцираат само по повикувањето на

ReflectionAttribute::newInstance() , осигурувајќи дека валидацијата на аргументите се случува во тој момент.Пример #1 Читање атрибути користејќи Reflection API

Наместо да итерирате преку сите атрибути на рефлектираната инстанца, можете да ги добиете само оние од специфична класа на атрибут со поминување на името на класата на атрибутот како аргумент.

<?php

#[Attribute]
class
MyAttribute
{
public
$value;

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

#[
MyAttribute(value: 1234)]
class
Thing
{
}

function
dumpAttributeData($reflection) {
$attributes = $reflection->getAttributes();

foreach (
$attributes as $attribute) {
var_dump($attribute->getName());
var_dump($attribute->getArguments());
var_dump($attribute->newInstance());
}
}

dumpAttributeData(new ReflectionClass(Thing::class));
/*
string(11) "MyAttribute"
array(1) {
["value"]=>
int(1234)
}
object(MyAttribute)#3 (1) {
["value"]=>
int(1234)
}
*/

Пример #2 Читање специфични атрибути користејќи Reflection API

Hirusha Sharma

<?php

function dumpMyAttributeData($reflection) {
$attributes = $reflection->getAttributes(MyAttribute::class);

foreach (
$attributes as $attribute) {
var_dump($attribute->getName());
var_dump($attribute->getArguments());
var_dump($attribute->newInstance());
}
}

dumpMyAttributeData(new ReflectionClass(Thing::class));

Белешки од корисници 1 белешка

Хируша Шарма
пред 5 години
Fetch properties from functions:

----------------------------------------
Function definition with attributes:
----------------------------------------
#[ReadOnly]
#[Property(type: 'function', name: 'Hello')]
function Hello()
{
    return "Hello";
}

-----------------------------------------
Gather attributes from the function
-----------------------------------------
function getAttributes(Reflector $reflection)
{
    $attributes = $reflection->getAttributes();
    $result = [];
    foreach ($attributes as $attribute)
    {
        $result[$attribute->getName()] = $attribute->getArguments();
    }
    return $result;
}

$reflection = new ReflectionFunction("Hello");
print_r(getAttributes($reflection));

-----------------------------
OUTPUT
-----------------------------
Array
(
    [ReadOnly] => Array
        (
        )

    [Property] => Array
        (
            [type] => function
            [name] => Hello
        )

)
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.