2012-04-07 66 views
0

我有一个文件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中没有这样的文件或目录。对于我使用的所有版本它给我错误 不能有人帮助我?

+0

小心使用问题标题中的&符号;我只停留在这里,因为我认为'__autoload'通过引用返回。 – Dan 2013-03-22 20:23:45

回答

0
define(CLASS_DIR, "/path_to_your_classes_to_load/"); 

require_once CLASS_DIR . str_replace('\\', '/', ltrim($className, '\\')) . '.php'; 
+0

不要工作。 与: 命名空间数据库; 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

0

您需要替换“\”与“/”添加一个“.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

在您所提供的代码 - 位置类文件的在文件结构中也很重要。