Bug #46851 [Com]: Strict standards: Declaration of ... should be compatible with that of ...
| From: | gabriel dot delepine at gmail dot com | Date: | Tue, 09 Nov 2010 01:49:37 +0000 |
| Subject: | Bug #46851 [Com]: Strict standards: Declaration of ... should be compatible with that of ... | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-155869@lists.php.net to get a copy of this message | ||
Edit report at http://bugs.php.net/bug.php?id=46851&edit=1
ID: 46851
Comment by: gabriel dot delepine at gmail dot com
Reported by: oliver at teqneers dot de
Summary: Strict standards: Declaration of ... should be
compatible with that of ...
Status: Bogus
Type: Bug
Package: Scripting Engine problem
Operating System: OpenSuSE 11.0
PHP Version: 5.2.8
Block user comment: N
New Comment:
I have exactly the same problem.
Autoload() is called for the subclass before the class. A error E_STRICT
is
throw.
I use PHP 5.3.2-1 on Ubuntu Serveur 10.04
It append for me when I use the design pattern sigleton and when I call
the
function getInstance() of the subclass. This function have to return an
instance
of the subclass but the error E_STRICT is throw.
I check the change log of PHP 5.3.3-1 but I seen nothing about this.
Previous Comments:
------------------------------------------------------------------------
[2010-07-14 21:46:58] demaio at vanylla dot it
I sthis a PHP bug then?
Is this bug going to be fixed?
------------------------------------------------------------------------
[2010-07-11 16:45:07] colder@php.net
What change?
The error is in both cases here, only that in one case, it is not
displayed
because at the time it is emitted, error_reporting does not contain
E_STRICT
(.e. php.ini).
It's not about ensuring class loading order. It is simply that if you
define
classes in a "wrong" order, or if you use autoload, classes loading will
get
postponed at runtime, hence errors will be triggered at runtime i.e.
after the
error_reporting call.
------------------------------------------------------------------------
[2010-07-11 14:48:04] david at customcode dot co dot za
Surely this counts as a bug when you consider it in the context of
applications that make extensive use autoload. I realise I am a bit late
to this party but from what I can see the strict standard was changed in
php 5.2.10 but I can't seem to find any mention of this change in the
changelog. This appears to be a fairly major change potentially
affecting alot of people's code. I would expect at least some
documentation of the rationale behind the change and at least some
guidelines. That being said, surely when it comes to ensuring that
classes are loaded/compiled in the correct order, classes that needed to
be autoloaded should be loaded first before the child class is compiled.
Or am I missing something?
------------------------------------------------------------------------
[2010-06-30 09:48:04] colder@php.net
It is simply related to the fact that if the classes are in the right
order, they
get defined at compile time and hence that strict error happens at
compile-time,
which is before you actually set to display E_STRICT.
------------------------------------------------------------------------
[2010-06-30 03:13:07] mauricio at yoreparo dot com
Also tried on PHP 5.3.2, an issue too.
thanks
------------------------------------------------------------------------
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/bug.php?id=46851
--
Edit this bug report at http://bugs.php.net/bug.php?id=46851&edit=1