命名空间和__autoload
我有一个文件SQL_config.php:命名空间和__autoload
namespace database;
class SQL_config
{
private $_server="localhost";
private $_user="root";
private $_password="";
private static $_singleton;
private $_connection;
protected function __construct()
{
$this->_connection=mysql_connect($this->_server,$this->_user,$this->_password);
}
public static function getInstance()
{
if(is_null(self::$_singleton))
{
self::$_singleton=new SQL_config();
}
return self::$_singleton;
}
}
和index.php文件:
//namespace database;
//require_once'SQL_config.php';
function __autoload($class)
{
// convert namespace to full file path
//$class = 'database/' . str_replace('\\', '/', $class) . '.php';
//require_once($class);
require_once $class . '.php';
}
$connection=database\SQL_config::getInstance();
并不起作用。警告:require_once(database \ SQL_config.php)[function.require-once]:未能打开流:在第11行的C:\ wamp \ www \ Formular_contact \ index.php中没有这样的文件或目录。对于我使用的所有版本它给我错误 不能有人帮助我?
define(CLASS_DIR, "/path_to_your_classes_to_load/");
require_once CLASS_DIR . str_replace('\\', '/', ltrim($className, '\\')) . '.php';
不要工作。 与: 命名空间数据库; require_once'SQL_config.php'; $ connection = SQL_config :: getInstance(); 工作 但我想使用__autoload()函数。 namespace database; define(“CLASS_DIR”,“database”); 函数__autoload($ class) \t { require_once“CLASS_DIR”。 。str_replace函数( '\\', '/',LTRIM($类, '\\')) 'PHP'; \t} $ connection = SQL_config :: getInstance(); 给出: 致命错误:在第15行的C:\ wamp \ www \ Formular_contact \ index.php中找不到类'database \ SQL_config' – murariubgdn 2012-04-07 11:01:57
您需要替换“\”与“/”添加一个“.PHP”新的类名的结尾,因为它ONY将得到名称,没有昏迷和延伸。并按照路径中所示的方式找到正确的文件夹。
function __autoload($className){
$newClassName= str_replace("\\", "/", $className) .".php";
require_once($newClassName);
}
确保您定位正确的文件夹中的类文件,如
./database/SQL_config.php
如果你的类是在文件夹中“类”试试这个。
function __autoload($className){
$newClassName = "classes/";
$newClassName .= str_replace("\\", "/", $className) .".php";
require_once($newClassName);
}
确保您定位正确的文件夹中的类文件,如
./classes/database/SQL_config.php
在您所提供的代码 - 位置类文件的在文件结构中也很重要。
小心使用问题标题中的&符号;我只停留在这里,因为我认为'__autoload'通过引用返回。 – Dan 2013-03-22 20:23:45