Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 类别';子类';找不到_Php_Oop - Fatal编程技术网

Php 类别';子类';找不到

Php 类别';子类';找不到,php,oop,Php,Oop,我对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"; } } 然而,我得到的是 In bas

我对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";
  }
}
然而,我得到的是

In baseclass
In subclass
Fatal error: Class 'SubClass' not found in (...) on line 6
使用requires或includes都会产生相同的结果。
也就是说,如果我将基类和子类放在同一个文件中,结果与预期的一样。这让我相信,在PHP中,您无法扩展在另一个文件夹中定义的类,这似乎很奇怪。有办法解决这个问题吗?

您需要首先定义类,然后调用它:

class SubClass extends BaseClass {
  function __construct () {
    echo "In the SubClass constructor\n";
    parent::__constructor();
  }
}

$elt = new SubClass();
echo $elt->id;

有没有办法绕过这个问题?我的类定义会很长,我不喜欢把我的逻辑放在文件的底部。谢谢在单独的文件中定义每个类怎么样。把它们包括在你的逻辑文件里?你也可以退房
In baseclass
In subclass
Fatal error: Class 'SubClass' not found in (...) on line 6
class SubClass extends BaseClass {
  function __construct () {
    echo "In the SubClass constructor\n";
    parent::__constructor();
  }
}

$elt = new SubClass();
echo $elt->id;