我的index.phpPHP自動加載磁帶機和Unix區分大小寫的文件系統內
<?php
include('_controller/Autoloader.php');
Gold_Autoloader::init();
$mysql = new Gold_MySQL();
_controller/Autoloader.php
<?php
class Gold_Autoloader
{
public static $loader;
public static function init()
{
if (self::$loader == NULL)
self::$loader = new self();
return self::$loader;
}
public function __construct()
{
spl_autoload_register(array($this, 'controller'));
spl_autoload_register(array($this, 'resources'));
}
public function resources($className)
{
$className = preg_replace('#Gold_#', '', $className);
$className = preg_replace('#_#', DIRECTORY_SEPARATOR, $className);
set_include_path(PROJECT_ROOT . '_resources');
spl_autoload_extensions('.php');
spl_autoload($className);
}
public function controller($className)
{
$className = preg_replace('#Gold_#', '', $className);
$className = preg_replace('#_#', DIRECTORY_SEPARATOR, $className);
set_include_path(PROJECT_ROOT . '_controller');
spl_autoload_extensions('.php');
spl_autoload($className);
}
}
而且我有文件_controller/MySQL的。帶有Gold_MySQL.class的php。 在windows系統這個代碼工作,包括MySQL.php,但在主辦這次代碼不工作((
[Thu Jan 27 12:55:57 2011] [error] PHP Fatal error: Class 'Gold_MySQL' not found in /home/u91167/youd0main.com/www/index_.php on line 5
編輯
如何讓讓Unix的可以看看任何文件?Zend公司沒有文件以小寫字母。
僅供參考,您對DIRECTORY_SEPARATOR的使用是多餘的。當包含文件時,Windows仍然會接受Unix分隔符,即。 C:/folder/MyClass.php仍然有效。當爆炸系統生成的路徑時,應使用DIRECTORY_SEPARATOR,如$ _SERVER ['DOCUMENT_ROOT']。 ...我只是偏好。 – Cobby 2011-01-28 01:25:54
另外,你不需要使用preg_replace,因爲你實際上並沒有使用任何正則表達式,所以切換到str_replace,它仍然可以工作,只是更快一點。 – Cobby 2011-01-28 01:27:00