我有 index.php
<?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);
}
}
我有Gold_MySQL.class文件 _controller / MySQL.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没有带小写字母的文件。
答案 0 :(得分:3)
听起来您的文件名区分大小写,并且您尝试在错误的情况下加载文件。即您可能需要gold_mysql.php
而不是Gold_MySql.php
?
答案 1 :(得分:2)
这听起来像是服务器文件系统的区分大小写的问题。 检查路径和文件名是否正确。
linux / unix注意案例。 窗户没有。
note:这回答了问题的先前版本
答案 2 :(得分:0)
可能是你要覆盖包含路径。在index.php中尝试类似
的内容<?php
set_include_path(
implode(PATH_SEPARATOR,
array(
realpath('./_controller'),
realpath('./_resources'),
get_include_path()
))
);
并删除Autoloader类中的set_include_path()调用。
恕我直言,如果您使用的是Zend Framework,最好编写两个分离器自动加载器并将它们推送到Zend的自动加载器堆栈。