我遇到了PHP的对象继承问题:
我有两个文件,baseclass.php和subclass.php,以便
//baseclass.php
<?php
echo "In baseclass.php\n";
class BaseClass {
function __construct () {
echo "In BaseClass constructor\n";
$this->id = "NOT IMPLEMENTED";
}
}
和
//subclass.php
<?php
require_once("PATH/baseclass.php");
echo "In subclass.php\n";
$elt = new SubClass();
echo $elt->id;
class SubClass extends BaseClass {
function __construct () {
echo "In the SubClass constructor\n";
parent::__constructor();
}
}
我的预期结果是:
In baseclass
In subclass
In BaseClass constructor
In the SubClass constructor
NOT IMPLEMENTED
然而,我得到的是
In baseclass
In subclass
Fatal error: Class 'SubClass' not found in (...) on line 6
使用要求或包括产生相同的结果。 话虽如此,如果我将BaseClass和SubClass放在同一个文件中,结果就像预期的那样。这会让我相信在PHP中你不能扩展在另一个文件夹中定义的类,这看起来很奇怪。有办法解决这个问题吗?
答案 0 :(得分:2)
首先需要定义类然后调用它:
class SubClass extends BaseClass {
function __construct () {
echo "In the SubClass constructor\n";
parent::__constructor();
}
}
$elt = new SubClass();
echo $elt->id;