包括正确/错误的课程

时间:2015-05-20 10:58:59

标签: php class oop include

这有效......

类/ API.class.php

abstract class API
{
    stuff.
}

api.php

require_once 'classes/API.class.php';

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

这不起作用......

...但导致“致命错误:无法在D:\ xampp -...重新声明类API”

类/ API.class.php

abstract class API
{
    stuff.
}

类/ 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();

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

1 个答案:

答案 0 :(得分:1)

只是一个快速的建议,但请查看Composer为您处理自动加载的能力。这样你就不需要做任何require陈述。 https://getcomposer.org/doc/04-schema.md#autoload

但是对你原来的问题。这样做的典型方法是从具体类的定义中require_once抽象类,然后从require_once开始使用它的具体类。请注意,该路径基于原始调用文档,因此从require_once "API.php";/classes/MyApi.php并从/api.php调用将无法正常工作,因此请使用require_once __DIR__ . '/API.php'; /classes/MyApi.php