php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #25377 Class variables can be added out of class definition
Submitted: 2003-09-03 04:16 UTC Modified: 2003-11-22 14:54 UTC
Votes:1
Avg. Score:4.0 ± 0.0
Reproduced:1 of 1 (100.0%)
Same Version:0 (0.0%)
Same OS:0 (0.0%)
From: forseti at oak dot rpg dot pl Assigned:
Status: Not a bug Package: Class/Object related
PHP Version: 5CVS-2003-09-03 (dev) OS: Windows 98 SE
Private report: No CVE-ID: None
 [2003-09-03 04:16 UTC] forseti at oak dot rpg dot pl
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.

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2003-11-18 15:36 UTC] sniper@php.net
This is actually a feature, not bug.

 [2003-11-22 14:54 UTC] helly@php.net
Class variables can NOT be added onnly object variables can. That makes PHP a language between class oriented and real object oriented languages.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun Mar 03 18:01:32 2024 UTC