1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-24 07:42:22 +01:00
Files
2025-04-23 03:57:30 +03:00

191 lines
4.4 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 54c9db669dc89cabc3fa9d5f75af088957e1fd2c Maintainer: sergey Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="reflectionparameter.getattributes" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>ReflectionParameter::getAttributes</refname>
<refpurpose>Получает атрибуты</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis role="ReflectionParameter">
<modifier>public</modifier> <type>array</type><methodname>ReflectionParameter::getAttributes</methodname>
<methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>name</parameter><initializer>&null;</initializer></methodparam>
<methodparam choice="opt"><type>int</type><parameter>flags</parameter><initializer>0</initializer></methodparam>
</methodsynopsis>
<para>
Метод возвращает все атрибуты, которые объявили в параметре, в виде массива <type>ReflectionAttribute</type>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<variablelist>
&reflection.getattributes.param.name;
&reflection.getattributes.param.flags;
</variablelist>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Массив атрибутов в виде объекта <classname>ReflectionAttribute</classname>.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Простой пример</title>
<programlisting role="php">
<![CDATA[
<?php
#[Attribute]
class Fruit {}
#[Attribute]
class Red {}
function fruitBasket(
#[Fruit]
#[Red]
string $apple
) {}
$reflection = new ReflectionFunction('fruitBasket');
$parameter = $reflection->getParameters()[0];
$attributes = $parameter->getAttributes();
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Array
(
[0] => Fruit
[1] => Red
)
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Фильтрация результатов по названию класса</title>
<programlisting role="php">
<![CDATA[
<?php
#[Attribute]
class Fruit {}
#[Attribute]
class Red {}
function fruitBasket(
#[Fruit]
#[Red]
string $apple
) {}
$reflection = new ReflectionFunction('fruitBasket');
$parameter = $reflection->getParameters()[0];
$attributes = $parameter->getAttributes('Fruit');
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Array
(
[0] => Fruit
)
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Фильтрация результатов по названию класса, с наследованием</title>
<programlisting role="php">
<![CDATA[
<?php
interface Color {}
#[Attribute]
class Fruit {}
#[Attribute]
class Red implements Color {}
function fruitBasket(
#[Fruit]
#[Red]
string $apple
) {}
$reflection = new ReflectionFunction('fruitBasket');
$parameter = $reflection->getParameters()[0];
$attributes = $parameter->getAttributes('Color', ReflectionAttribute::IS_INSTANCEOF);
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Array
(
[0] => Red
)
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><methodname>ReflectionClass::getAttributes</methodname></member>
<member><methodname>ReflectionClassConstant::getAttributes</methodname></member>
<member><methodname>ReflectionFunctionAbstract::getAttributes</methodname></member>
<member><methodname>ReflectionProperty::getAttributes</methodname></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->