包括 类 完成 right/wrong

Including classes done right/wrong

这有效...

classes/API.class.php

abstract class API
{
    stuff.
}

api.php

require_once 'classes/API.class.php';

class MyAPI extends API
{
    stuff;
}
$API = new MyAPI();

这不行...

...但会导致 "Fatal error: Cannot redeclare class API in D:\xampp-..."

classes/API.class.php

abstract class API
{
    stuff.
}

classes/MyAPI.class.php

class MyAPI extends API
{
    stuff;
}

api.php

require_once 'classes/API.class.php';
require_once 'classes/MyAPI.class.php';

$API = new MyAPI();

你能解释一下吗为什么? 以及如何正确地做到这一点?

只是一个简短的建议,但请查看 Composer 为您处理自动加载的能力。这样您就不需要执行任何 require 语句。 https://getcomposer.org/doc/04-schema.md#autoload

但是对于你原来的问题。典型的做法是 require_once 从具体 class 的定义中提取抽象 class 然后 require_once 从你打算的地方提取具体 class用它。请注意,该路径是基于原始调用文档的,因此从 /classes/MyApi.php 调用 require_once "API.php"; 并从 /api.php 调用是行不通的,因此在 [=] 中使用 require_once __DIR__ . '/API.php'; 14=].