ID:               27440
 Updated by:       [EMAIL PROTECTED]
 Reported By:      holliwell at gmx dot net
-Status:           Bogus
+Status:           Open
 Bug Type:         Documentation problem
 Operating System: linux 2.4.20 RH8
 PHP Version:      5CVS-2004-02-29 (dev)
 New Comment:

Nuno, it seems you have following in mind: 
http://de3.php.net/manual/de/migration5.incompatible.php 
<qoute> 
The following example was valid in PHP 4, although it will 
produce a fatal error in PHP 5. 
 
Beispiel B-3. Classes must be declared before used 
<?php 
$test = new fubar(); 
$test->barfu(); 
 
class fubar { 
   function barfu() { 
       echo 'fubar'; 
   } 
} 
?> 
</qoute> 
 
No fatal error is produced, it is just the same thing as 
in PHP 4. It may be bad practice, but it is still possible 
without any error, not even a warning rinning E_STRICT 
enabled. 
 
At least declare before usage is good practice, but in 
some cases not mandatory. So the docs are wrong. 
 
Regards 
Friedhelm 


Previous Comments:
------------------------------------------------------------------------

[2004-04-19 17:02:57] [EMAIL PROTECTED]

This is already stated in the migration chapter a long time ago.

------------------------------------------------------------------------

[2004-03-09 19:58:55] holliwell at gmx dot net

Iliaa, I did not get your point, sorry! 
1.) In php5 its possible to do $c = new someclass , before 
someclass is defined, _without_ throwing an error. 
2.) Wich error are you talking about: 
<qoute> 
since at the time the error is generated 
</qoute> 
3.) be gentle ;-) and do not mark this bogus,  at least a doc bug. 
Or change README.PHP4-TO-PHP5-THIN-CHANGES to reflect 
the current behaviour (which is not throwing an error in this 
case.) 
4.) AFAIK at some stage of php5 using a class before declaring 
was throwing an fatal error. This was changed because of bc.  
So why should it be not possible in E_STRICT mode to throw a 
warning? 
 
Kind regards 
Friedhelm

------------------------------------------------------------------------

[2004-03-09 19:10:10] [EMAIL PROTECTED]

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

In this case raising E_STRICT is not possible since at the 
time the error is generated the parser does not know if the 
class will be declared at a later point. This is just one 
of the PHP 5 <-> 4 incompatibilities that will need to be 
documented. 

------------------------------------------------------------------------

[2004-02-29 18:53:11] holliwell at gmx dot net

yup, so what about at least issue a warning with E_STRICT?

------------------------------------------------------------------------

[2004-02-29 18:42:36] [EMAIL PROTECTED]

It is required if you use inheritance and interfaces, so I think it
should stay like this. declaring classes after using them is IMO not
really nice (and afaik it can hurt some performance), so I think we
should keep advising not to do this.

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/27440

-- 
Edit this bug report at http://bugs.php.net/?id=27440&edit=1

Reply via email to