Req #6418 [Com]: Multiple class extends ordering error
| From: | tom at tomwardrop dot com | Date: | Thu, 03 Jun 2010 00:50:50 +0000 |
| Subject: | Req #6418 [Com]: Multiple class extends ordering error | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-151034@lists.php.net to get a copy of this message | ||
Edit report at http://bugs.php.net/bug.php?id=6418&edit=1
ID: 6418
Comment by: tom at tomwardrop dot com
Reported by: nathan at cjhunter dot com
Summary: Multiple class extends ordering error
Status: Wont fix
Type: Feature/Change Request
Package: Feature/Change Request
Operating System: Linux 2.0.36
PHP Version: 4.0.1pl2
New Comment:
I don't know the internals of PHP, but maybe someone who does can
respond to this. I agree with the comment by bjori@php.net...
"You need to declare the class before you use it.
The other way around doesn't make sense and will not ever
be supported."
However, since when was declaring a class considered to be "using" a
class? If possible, I propose that PHP check for the availability of
extended classes and interfaces at the time an instance is created, or
when the first static call is made, rather than when the class is
declared. This is no doubt the most logical approach, but I have no idea
whether this is technically possible to implement.
We can call this feature, just-in-time class checking :-)
I look forward to hearing a response from someone who knows the part of
the PHP core that handles this.
Previous Comments:
------------------------------------------------------------------------
[2007-01-07 11:26:07] bjori@php.net
You need to declare the class before you use it.
The other way around doesn't make sense and will not ever
be supported.
With the "class per file" approach you can use autoload()
or spl_autoload()
------------------------------------------------------------------------
[2006-07-15 10:20:15] info at triin dot net
I had some quite hard time figuring out what is wrong with my code -
this defenetly is a bug, not a feature request.
I had a lot of PHP files (class in each file) and at the beginning of
each one there were the require_once statements to include all the other
classes that were used by that class. And suddenly there was a weird
collision...
------------------------------------------------------------------------
[2002-09-09 09:04:35] scallop at iki dot fi
Yes, this is a feature that is definately needed in PHP.
I am currently working on a project which has very complex class
hierarchy (dozens of classes extending each other). Due to complex class
hierarchy and the huge amount of code, I am developing classes so that
each class is in it's own file. And to make it all simple, I use a small
script to combine all this classes into one huge file.
It is always possible to create a system that checks class dependencies
and creates a combined classfile with classes in proper order.
However, I think this is a feature that _should_ be provided by php.
(tested on versions 4.2.3, 4.3.0 - still not implemented)
I hope I explained my self clear enough.
See my report (marked as duplicate):
http://bugs.php.net/bug.php?id=19312
------------------------------------------------------------------------
[2000-08-31 08:48:21] stas@php.net
Yes, you cannot do this in PHP. In fact, you even shouldn't try doing
this - why would you need to define class without knowing what it
extends? I move it to feature request in the meantime, in case something
will explain why this could be useful.
------------------------------------------------------------------------
[2000-08-29 12:20:10] nathan at cjhunter dot com
Multiple class extends creates ordering error
The below..
<?
class c extends b {}
class b extends a {}
class a {}
?>
gives an error 'Fatal error: Class c: Cannot inherit from undefined
class b in test.html on line 4',
but..
<?
class b extends a {}
class a {}
// class c moved to bottom
class c extends b {}
?>
works fine.
I imagine this could be fixed by first ordering the classes by their
given dependencies and then process them one by one.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=6418&edit=1