3 回答

TA贡献2021条经验 获得超8个赞
如果您从与包含文件所在的文件夹不同的文件夹中执行此脚本,它将失败。
根据根路径查找文件(在开头添加 /)或使用某种自动加载器。
这可以由 Composer 轻松管理,您的 composer.json 文件将如下所示:
"autoload": {
"psr-4": {
"dbdata\\": "map/app/"
},
"classmap": [
"any/additional/classes/to/map"
]
}
您需要确保您的 php 文件是命名空间的。然后您还必须vendor/autoload.php在访问任何映射类之前包括

TA贡献1853条经验 获得超6个赞
您需要阅读:1)Php 命名空间 2)Php 自动加载类 3)使用命名空间导入类
简单示例(类文件夹/classes/autoload.php):
spl_autoload_register(function($class) {
// convert namespace to full file path
$class = 'classes/' . str_replace('\\', '/', $class) . '.php';
// Load class if exists
if (file_exists($class)) {
if (!class_exists($class)) {
require_once($class);
}
}
});
类示例(classes/Auth/Login/Auth.php):
<?php
// Create namespace
namespace Auth\Login;
// import other class if needed
use Auth\Login\Mysql;
// class sample with or without extends
class Auth extends Mysql
{
... class methods here ...
}
?>
然后从命名空间(router.php)加载类:
<?php
require_once($_SERVER['DOCUMENT_ROOT'].'/classes/autoload.php');
// Load class
use Auth\Login\Auth;
try{
$r = new Auth();
}catch(Exception $e){
echo '<h4 style="color: #222; font-size: 15px; font-family: Arial">'.$e->getMessage().'<h4>';
}
?>
或者只是从完整路径加载:
require_once($_SERVER['DOCUMENT_ROOT'].'/path-to-class/ClassName.php');
- 3 回答
- 0 关注
- 168 浏览
添加回答
举报