我在命名空间中组织了一些类,如下所示:
的src /碱/ BaseObject.php
<?php
namespace API\bases;
use \API\system\Database as Database;
class BaseObject {
protected $db = null;
public function __construct() {
$this->db = Database::instance();
}
}
的src /对象/ user.php的
<?php
namespace API\objects;
class User extends \API\bases\BaseObject {
}
的src / autoload.php
<?php
spl_autoload_register(
function($class) {
$path_parts = explode("\\", $class);
if ($path_parts[0] == 'API') {
array_shift($path_parts);
}
require(__DIR__ . DIRECTORY_SEPARATOR . implode(DIRECTORY_SEPARATOR, $path_parts) . ".php");
}
);
我已经实现了其他类,但在这种情况下,当我实例化一个User对象时,它会返回这个致命的:
Fatal error: Class 'API\bases\BaseObject' not found in /realpath/to/api/src/objects/User.php on line 4
User.php:4
是class User extends \API\bases\BaseObject {
行。对我来说,它没有意义,因为我也以同样的方式在另一个类继承中使用它。你看到我跳过了什么吗?
编辑:值得注意的是我手动要求上课,并且告诉could not redeclare class
,所以无论如何它似乎都被发现了。
答案 0 :(得分:0)
我不知道为什么,因为我已经重写了三次类,但看起来在BaseObject类中有一个空间给出了问题。我删除了BaseObject
和开放花括号之间的空格,它有效。