PHP 4.0 Bug #8565 Updated: parent:: doesn't work with nested include/require
| From: | stas@php.net | Date: | Mon, 08 Jan 2001 19:10:56 +0000 |
| Subject: | PHP 4.0 Bug #8565 Updated: parent:: doesn't work with nested include/require | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-43438@lists.php.net to get a copy of this message | ||
ID: 8565
Updated by: stas
Reported By: jalal@php.net
Old-Status: Open
Status: Analyzed
Bug Type: Scripting Engine problem
Assigned To:
Comments:
The reason for this is simple - parent:: is the compile-time
definition and require/include is run-time, so when it meets
parent:: it does not know yet who it's parent is. I am not
sure it's resolvable now, but I'm leaving it for Zeev/Andi's
attention.
Previous Comments:
---------------------------------------------------------------------------
[2001-01-08 10:00:11] hholzgra@php.net
it will work if you include/require/require_once both
.inc files from the file but not for nested includes
(extended class including base class to be extended)
:(
---------------------------------------------------------------------------
[2001-01-05 14:37:23] jalal@php.net
The following code gives the error:
file: base.inc
<?php
class Base {
function Base(){}
function doit() {
echo "Class Base->doit()n";
}
}
?>
file: a.inc
<?php
include("base.inc");
class A extends Base {
function A(){}
function doit() {
parent::doit();
echo "Class A->doit()n";
}
}
?>
file: extend-test.php
<?php
include("a.inc");
$a = new A();
$a->doit();
?>
x:>php -f extend-test.php
Fatal error: No parent class available in this context in a.inc on line 6
---------------------------------------------------------------------------
[2001-01-05 12:42:19] hholzgra@php.net
sorry, but i can't believe this as i
use this feature almost daily
can you pleas provide an example of
code _not_ working ?
---------------------------------------------------------------------------
[2001-01-05 12:22:36] jalal@php.net
the parent:: operator will work if both the parent and sub class are in the same physical file, but
not if they are in a separate file.
This works:
<?php
class Base {
function doit() {
echo "Class Base->doit()n";
}
}
class A extends Base {
function doit() {
parent::doit();
echo "Class A->doit()n";
}
}
?>
but if the two classes are in separate files, the following error is reported:
Fatal error: No parent class available in this context in a.inc on line 6
Of course, this may be an undocumented feature, but I can see no reason for it.
---------------------------------------------------------------------------
Full Bug description available at: http://bugs.php.net/?id=8565