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 關注
- 186 瀏覽
添加回答
舉報