2012-04-07 50 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

在您所提供的代碼 - 位置類文件的在文件結構中也很重要。