Bug #13165 Updated: Definate problem with classes and included files
| From: | eye at eye-home dot net | Date: | Thu, 17 Jan 2002 22:27:00 +0000 |
| Subject: | Bug #13165 Updated: Definate problem with classes and included files | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-77373@lists.php.net to get a copy of this message | ||
ID: 13165
Comment by: eye@eye-home.net
Old Reported By: colin@maven.com.au
Reported By: eye@eye-home.net
Status: Analyzed
Bug Type: Documentation problem
Operating System: RedHat 7.1
PHP Version: 4.0.6
New Comment:
Isn't this the same bug as http://bugs.php.net/bug.php?id=13882 (and
therefore solved in version 4.1.1?)
if not it still seems a bug to me: whenever A includes B and B includes
C, it should not be necessary that A has to include C
Previous Comments:
------------------------------------------------------------------------
[2001-10-21 20:49:20] sniper@php.net
This is not a bug. Classes must be defined in order.
They can be in different order if they are in same file
though. (Zeev can explain this better :)
Reclassified as documentation problem as this isn't
explained anywhere.
--Jani
------------------------------------------------------------------------
[2001-09-11 01:18:21] colin@maven.com.au
Just wondering if there has been any progress on this report? Thanks.
------------------------------------------------------------------------
[2001-09-06 02:11:38] colin@maven.com.au
There is *definately* a problem in PHP 4.0.6 with classes, inheritance,
and included/required files. Here is an example:
// ======================
// test.php:
<?php
include("children.php");
?>
// ======================
// ======================
// children.php
<?php
include_once("parent.php");
class Child2 extends Child1
{
}
class Child1 extends Parent
{
}
?>
// ======================
// ======================
// parent.php
<?php
class Parent
{
}
?>
// ======================
You can try this out for yourself and see what I mean. If you bring up
"test.php" in your browser, you should receive this error:
Fatal error: Class child2: Cannot inherit from undefined class child1
Why does this happen, even though all files are being included
correctly? Well, I know one way of preventing the error, and that is
by re-ordering the classes in "children.php" so that Child1() is listed
first. This removes the error, **however**, if the Parent() class is
NOT in a separate file, and is actually part of the same file (i.e.
"children.php"), the order of the class definitions does NOT matter.
Why is this?
------------------------------------------------------------------------
Edit this bug report at http://bugs.php.net/?id=13165&edit=1