包括 类 完成 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=].
这有效...
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=].