<?xml version="1.0" encoding="utf-8"?> <!-- $Revision$ --> <refentry xml:id="reflectionproperty.construct" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> <refnamediv> <refname>ReflectionProperty::__construct</refname> <refpurpose>Construct a ReflectionProperty object</refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <methodsynopsis> <modifier>public</modifier> <methodname>ReflectionProperty::__construct</methodname> <methodparam><type>mixed</type><parameter>class</parameter></methodparam> <methodparam><type>string</type><parameter>name</parameter></methodparam> </methodsynopsis> <para> </para> &warn.undocumented.func; </refsect1> <refsect1 role="parameters"> &reftitle.parameters; <para> <variablelist> <varlistentry> <term><parameter>class</parameter></term> <listitem> <para> The class name, that contains the property. </para> </listitem> </varlistentry> <varlistentry> <term><parameter>name</parameter></term> <listitem> <para> The name of the property being reflected. </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1 role="returnvalues"> &reftitle.returnvalues; <para> &return.void; </para> </refsect1> <refsect1 role="errors"> &reftitle.errors; <para> Trying to get or set private or protected class property's values will result in an exception being thrown. </para> </refsect1> <refsect1 role="examples"> &reftitle.examples; <para> <example> <title><methodname>ReflectionProperty::__construct</methodname> example</title> <programlisting role="php"> <![CDATA[ <?php class String { public $length = 5; } // Create an instance of the ReflectionProperty class $prop = new ReflectionProperty('String', 'length'); // Print out basic information printf( "===> The%s%s%s%s property '%s' (which was %s)\n" . " having the modifiers %s\n", $prop->isPublic() ? ' public' : '', $prop->isPrivate() ? ' private' : '', $prop->isProtected() ? ' protected' : '', $prop->isStatic() ? ' static' : '', $prop->getName(), $prop->isDefault() ? 'declared at compile-time' : 'created at run-time', var_export(Reflection::getModifierNames($prop->getModifiers()), 1) ); // Create an instance of String $obj= new String(); // Get current value printf("---> Value is: "); var_dump($prop->getValue($obj)); // Change value $prop->setValue($obj, 10); printf("---> Setting value to 10, new value is: "); var_dump($prop->getValue($obj)); // Dump object var_dump($obj); ?> ]]> </programlisting> &example.outputs.similar; <screen> <![CDATA[ ===> The public property 'length' (which was declared at compile-time) having the modifiers array ( 0 => 'public', ) ---> Value is: int(5) ---> Setting value to 10, new value is: int(10) object(String)#2 (1) { ["length"]=> int(10) } ]]> </screen> </example> <example> <title>Getting value from private and protected properties using <classname>ReflectionProperty</classname> class</title> <programlisting role="php"> <![CDATA[ <?php class Foo { public $x = 1; protected $y = 2; private $z = 3; } $obj = new Foo; $prop = new ReflectionProperty('Foo', 'y'); $prop->setAccessible(true); /* As of PHP 5.3.0 */ var_dump($prop->getValue($obj)); // int(2) $prop = new ReflectionProperty('Foo', 'z'); $prop->setAccessible(true); /* As of PHP 5.3.0 */ var_dump($prop->getValue($obj)); // int(2) ?> ]]> </programlisting> &example.outputs.similar; <screen> <![CDATA[ int(2) int(3) ]]> </screen> </example> </para> </refsect1> <refsect1 role="seealso"> &reftitle.seealso; <para> <simplelist> <member><methodname>ReflectionProperty::getName</methodname></member> <member><link linkend="language.oop5.decon.constructor">Constructors</link></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 -->