2
我嘗試重構我的代碼並使用自動加載系統。現在,我在做:自動加載名稱空間的類文件
的index.php:
namespace example_com;
use example_com\Core\Application;
require 'Application.php';
$app = new Application();
$app->MyCustomFunction();
我想消除需要線;每當我調用新的Application()或新的Class()時,我都會要求。
我試圖象下面這樣:
的index.php
namespace example_com;
use example_com\Core\Application;
spl_autoload_register(function($className) {
$namespace = str_replace("\\", "/", __NAMESPACE__);
$className = str_replace("\\", "/", $className);
$class = ROOT . (empty($namespace) ? "" : $namespace . "/") . "{$className}.php";
include_once($class);
});
//require 'Application.php';//remove this
$app = new Application();
$app->MyCustomFunction();
Application.php
namespace example_com\Core;
class Application
{
//..contruct, properties, functions
}
= DEBUG OUTOUT =
spl_autoload_register(function($className) { //$className: "example_com/Core/Application"
$namespace = str_replace("\\", "/", __NAMESPACE__); //$namespace: "example_com"
$className = str_replace("\\", "/", $className);
$class = ROOT . (empty($namespace) ? "" : $namespace . "/") . "{$className}.php"; //$className: "example_com/Core/Application" $namespace: "example_com" $class: "example_com/example_com/Core/Application.php"
我打算使用這在s中的不同文件中AME項目
更新1: 文件夾結構
App/
--Controllers/
----XController.php
----YController.php
Core/
--Controllers/
----IBaseController.php
----BaseController.php
--Application.php
index.php
所有的課程都在同一個基礎文件夾中嗎?我想你應該把所有的類都放在同一個文件夾中,這樣你就可以創建一個'spl_autoload_register()',它將加載到頁面頂部(可能在一個包含的配置類型文件中),並覆蓋所有的類你的應用?我不認爲我會按每班製作自動加載器。這可能會減慢你的應用程序。 – Rasclatt
我所有的課程都不在同一個文件夾中。我編輯顯示我的文件夾結構的主題 – reladawrefurhost