ID: 31701
Updated by: [EMAIL PROTECTED]
Reported By: attibln at gmx dot net
-Status: Open
+Status: Wont fix
Bug Type: Feature/Change Request
Operating System: linux
PHP Version: 5.0.3
New Comment:
This won't change in the nearest future.
Previous Comments:
------------------------------------------------------------------------
[2005-01-29 18:01:43] attibln at gmx dot net
thx :)
------------------------------------------------------------------------
[2005-01-28 23:19:46] [EMAIL PROTECTED]
Reclassified as feature request as there is no bug here.
------------------------------------------------------------------------
[2005-01-26 19:50:17] attibln at gmx dot net
Well, there sould be a Notice then.
We agree, this behaviour is not (really) object oriented behaviour, do
we? So if it's kept for backward compatibility php5+ should show a
notice.
------------------------------------------------------------------------
[2005-01-26 09:05:56] [EMAIL PROTECTED]
THis is wanted behavior, as not to break scripts with PHP 4.
------------------------------------------------------------------------
[2005-01-26 03:10:37] attibln at gmx dot net
Description:
------------
Defining an attribute within a method is possible even if it was not
declared in the class.
This is some kind of hidden/ghost attributes ... if they have not been
declared - e.g. public name etc. - it will be quite hard to understand
a class using those "ghost attribute". Especially when the are defined
in method bar() and later on used in method foo().
My system:
gentoo 2.4.26-gentoo-r9
apache 2.0.51-r1
PHP Version 5.0.3 / Zend Engine v2.0.3
(php) use flags:
-adabas +apache2 -bcmath -berkdb -birdstep +bzlib -calendar -cdb
-cpdflib +crypt -ctype +curl +curlwrappers -db2 -dba -dbase -dbm
-dbmaker -dbx -debug -dio -empress -empress-bcs -esoob +exif -fam
-fdftk -filepro -flatfile -frontbase -ftp +gd -gd-external -gdbm -gmp
-hyperwave-api -iconv -imap -informix -ingres -inifile -interbase
-iodbc +jpeg -kerberos -ldap -libedit -mcve +memlimit -mhash +mime
-ming -mnogosearch -msession -msql -mssql +mysql -mysqli +ncurses -nis
+nls -oci8 -odbc -oracle7 -ovrimos +pcntl -pcre -pfpro +png -posix
+postgres -qdbm -readline -recode -sapdb -sasl +session -shared
-sharedmem +simplexml -snmp +soap +sockets -solid -spell +spl -sqlite
+ssl -sybase -sybase-ct -sysvipc +tidy -tiff +tokenizer -truetype -wddx
+xml2 -xmlrpc -xpm +xsl +zlib
Reproduce code:
---------------
<?php
class MyDestructableClass {
function __construct() {
$this->nev = "MyDestructableClass";
}
function show_nev()
{
print( '<br />nev is ' . $this->nev );
}
}
$obj = new MyDestructableClass();
$obj->show_nev();
?>
Expected result:
----------------
There should be an Error messagen ( or at least a warning) saying:
Use of undeclared attribute in ... on line ...
Actual result:
--------------
regarding my "example":
nev is MyDestructableClass
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=31701&edit=1