我被PHP中的自動加載器和名稱空間所困惑。PHP自動加載器和名稱空間
我的類的資產文件內組織,
-- Assets
-- user
-- User.php
-- database
-- Database.php
這只是一個簡單的版本,也有每個文件夾中多個文件(即用戶數據庫)。
沒有必要擔心衝突的廠商的名字,因爲在這個項目中只有一個供應商(即我),但例如,使用PSR0自動加載:
function autoload($className)
{
$className = ltrim($className, '\\');
$fileName = '';
$namespace = '';
if ($lastNsPos = strripos($className, '\\')) {
$namespace = substr($className, 0, $lastNsPos);
$className = substr($className, $lastNsPos + 1);
$fileName = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR;
}
$fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
require $fileName;
}
我需要聲明命名空間在我的每個班級文件中,並使用new user\User();
來初始化班級。它是不可能通過使用new user_User;
非常感謝
'spl_autoload_extensions('。php');''和'spl_autoload_register();'太棒了! – 2012-07-16 00:03:27
'spl_autoload_register('autoload');'用於設置自動加載器 – 2012-07-16 00:06:43
是的,我知道。我更喜歡內置的自動加載器。 – 2012-07-16 00:07:44