|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2003-11-18 15:36 UTC] sniper@php.net
[2003-11-22 14:54 UTC] helly@php.net
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Oct 26 13:00:02 2025 UTC |
Description: ------------ Class variables can be added freely out of class declaration context. This can be done by simply assigning a value to existing object's non-existing variable. Resulting modified object remains of his old type. Reproduce code: --------------- <?php class Test { var $a='foo'; } class HintTest { function __construct(Test $var) { echo 'Variable of type Test passed'; } } $test1 = new Test; $test2 = new Test; $test2->b = 'bar'; $test3 = new Test; echo '<pre>test1: ';print_r($test1);echo '</pre>'; echo '<pre>test2: ';print_r($test2);echo '</pre>'; echo '<pre>test3: ';print_r($test3);echo '</pre>'; $hint = new HintTest($test2); ?> Expected result: ---------------- Adding new class variables this way shouldn't be possible because modified object is no longer of the same type. And as last line shows it is treated by engine as such. Actual result: -------------- Modified object is nevertheless treated as if it was of Test type.