Updated FETCH_OBJ_W example and opcode results to reflect correct behavior. Fixes bug #63600.

FETCH_W is for writing to object properties. FETCH_OBJ_W is for writing to properties of objects that are properties of other objects.


git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@329160 c90b9560-bf6c-de11-be94-00142212c4b1
This commit is contained in:
Sherif Ramadan 2013-01-16 14:20:30 +00:00
parent 3357667fc8
commit 6910ef70cb

View file

@ -8,12 +8,12 @@
<![CDATA[
<?php
/*
* Fetch the "prop-name" property value of this object. Write-only?
* Fetch an object from the property of this object and write to the property of the fectched object.
* opcode number: 85
*/
$x = new A();
$a = 'x';
$$a->num = 1;;
$foo = new stdclass;
$foo->bar = new stdclass;
$foo->bar->baz = 'quix';
?>
]]>
</programlisting>
@ -21,27 +21,28 @@ $$a->num = 1;;
<section xml:id="internals2.opcodes.fetch-obj-w.listing">
<title>PHP opcodes</title>
<simpara>Function name: (null)</simpara>
<simpara>Compiled variables: !0=$x, !1=$a </simpara>
<simpara>Compiled variables: !0 = $foo</simpara>
<informaltable>
<tgroup cols="7">
<thead>
<row>
<entry>line</entry><entry>#</entry><entry>op</entry>
<entry>fetch</entry><entry>ext</entry><entry>return</entry>
<entry>line</entry><entry>#</entry>
<entry>op</entry><entry>fetch</entry>
<entry>ext</entry><entry>return</entry>
<entry>operands</entry>
</row>
</thead>
<tbody>
<row>
<entry>6</entry><entry>0</entry>
<entry>2</entry><entry>0</entry>
<entry>ZEND_FETCH_CLASS</entry><entry></entry>
<entry></entry><entry>:0</entry>
<entry>'A'</entry>
<entry>4</entry><entry>:0</entry>
<entry>'stdclass'</entry>
</row>
<row>
<entry></entry><entry>1</entry>
<entry>NEW</entry><entry></entry>
<entry></entry><entry>$1</entry>
<entry></entry><entry></entry>
<entry>:0</entry>
</row>
<row>
@ -54,34 +55,58 @@ $$a->num = 1;;
<entry></entry><entry>3</entry>
<entry>ASSIGN</entry><entry></entry>
<entry></entry><entry></entry>
<entry>!0,$1</entry>
<entry>!0</entry>
</row>
<row>
<entry>7</entry><entry>4</entry>
<entry>ASSIGN</entry><entry></entry>
<entry>3</entry><entry>4</entry>
<entry>ZEND_FETCH_CLASS</entry><entry></entry>
<entry>4</entry><entry>:5</entry>
<entry>'stdclass'</entry>
</row>
<row>
<entry></entry><entry>5</entry>
<entry>NEW</entry><entry></entry>
<entry></entry><entry></entry>
<entry>!1,'x'</entry>
</row>
<row>
<entry>8</entry><entry>5</entry>
<entry>FETCH_W</entry><entry>local</entry>
<entry></entry><entry>$5</entry>
<entry>!1</entry>
<entry>:5</entry>
</row>
<row>
<entry></entry><entry>6</entry>
<entry>ZEND_ASSIGN_OBJ</entry><entry></entry>
<entry></entry><entry></entry>
<entry>$5,'num'</entry>
<entry>DO_FCALL_BY_NAME</entry><entry></entry>
<entry>0</entry><entry></entry>
<entry></entry>
</row>
<row>
<entry></entry><entry>7</entry>
<entry>ZEND_OP_DATA</entry><entry></entry>
<entry>ZEND_ASSIGN_OBJ</entry><entry></entry>
<entry></entry><entry></entry>
<entry>1</entry>
<entry>!0, 'bar'</entry>
</row>
<row>
<entry>9</entry><entry>8</entry>
<entry></entry><entry>8</entry>
<entry>ZEND_OP_DATA</entry><entry></entry>
<entry></entry><entry></entry>
<entry></entry>
</row>
<row>
<entry>4</entry><entry>9</entry>
<entry>FETCH_OBJ_W</entry><entry></entry>
<entry></entry><entry></entry>
<entry>!0, 'bar'</entry>
</row>
<row>
<entry></entry><entry>10</entry>
<entry>ZEND_ASSIGN_OBJ</entry><entry></entry>
<entry></entry><entry></entry>
<entry>'baz'</entry>
</row>
<row>
<entry></entry><entry>11</entry>
<entry>ZEND_OP_DATA</entry><entry></entry>
<entry></entry><entry></entry>
<entry>'quix'</entry>
</row>
<row>
<entry>5</entry><entry>12</entry>
<entry>RETURN</entry><entry></entry>
<entry></entry><entry></entry>
<entry>1</entry>
@ -90,4 +115,4 @@ $$a->num = 1;;
</tgroup>
</informaltable>
</section>
</section>
</section>