1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-26 00:32:15 +01:00
Files
archived-doc-ru/reference/reflection/reflectionproperty/setvalue.xml
Mikhail Alferov cf415e1d6f Обновление перевода (#961)
Co-authored-by: Sergey Panteleev <sergey@php.net>
2024-03-14 22:23:04 +03:00

182 lines
5.5 KiB
XML
Raw 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: 0a8a502764676759e213265a3e1e675c43533dd1 Maintainer: tmn Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="reflectionproperty.setvalue" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>ReflectionProperty::setValue</refname>
<refpurpose>Устанавливает значение свойству</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis role="ReflectionProperty">
<modifier>public</modifier> <type>void</type><methodname>ReflectionProperty::setValue</methodname>
<methodparam><type>object</type><parameter>object</parameter></methodparam>
<methodparam><type>mixed</type><parameter>value</parameter></methodparam>
</methodsynopsis>
<methodsynopsis>
<modifier>public</modifier> <type>void</type><methodname>ReflectionProperty::setValue</methodname>
<methodparam><type>mixed</type><parameter>value</parameter></methodparam>
</methodsynopsis>
<para>
Метод задаёт, или изменяет, значение свойства.
</para>
<note>
<simpara>
Начиная с PHP 8.3.0 вызов метода с единственным аргументом устарел,
вместо него вызывают метод
<methodname>ReflectionClass::setStaticPropertyValue</methodname>.
</simpara>
</note>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>object</parameter></term>
<listitem>
<para>
Чтобы метод изменил нестатическое свойство, в метод передают объект.
Если свойство статическое, <emphasis>нужно</emphasis> передать значение &null;.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>value</parameter></term>
<listitem>
<para>
Новое значение.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.void;
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.3.0</entry>
<entry>
Вызов метода с единственным аргументом устарел,
вместо него для изменения статического свойства вызывают
метод <methodname>ReflectionClass::setStaticPropertyValue</methodname>.
</entry>
</row>
<row>
<entry>8.1.0</entry>
<entry>
Доступ к закрытым и защищённым свойствам сразу получают
методом <methodname>ReflectionProperty::getValue</methodname>.
Раньше свойства требовалось сделать доступными
методом <methodname>ReflectionProperty::setAccessible</methodname>,
иначе метод выбрасывал исключение <classname>ReflectionException</classname>.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>
Пример использования метода <methodname>ReflectionProperty::setValue</methodname>
</title>
<programlisting role="php">
<![CDATA[
<?php
class Foo
{
public static $staticProperty;
public $property;
protected $privateProperty;
}
$reflectionClass = new ReflectionClass('Foo');
// С PHP 8.3 больше не нужно вызывать метод setValue для установки
// значения статического свойства, вместо него вызвают метод setStaticPropertyValue()
$reflectionClass->setStaticPropertyValue('staticProperty', 'foo');
var_dump(Foo::$staticProperty);
$foo = new Foo;
$reflectionClass->getProperty('property')->setValue($foo, 'bar');
var_dump($foo->property);
$reflectionProperty = $reflectionClass->getProperty('privateProperty');
$reflectionProperty->setAccessible(true); // Требуется только до PHP 8.1.0
$reflectionProperty->setValue($foo, 'foobar');
var_dump($reflectionProperty->getValue($foo));
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
string(3) "foo"
string(3) "bar"
string(6) "foobar"
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><methodname>ReflectionProperty::getValue</methodname></member>
<member><methodname>ReflectionProperty::setAccessible</methodname></member>
<member><methodname>ReflectionClass::setStaticPropertyValue</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
-->