2014-01-06 124 views
0

我已經做了__autoload函數像這樣(在autoload.php):「新PDO」 &__autoload功能奇怪的行爲

function __autoload($name) { 
    $arrName = explode('_', $name); 
     $typename = strtolower(array_shift($arrName)); 
     $moduleName = strtolower(array_shift($arrName)); 
    if(count($arrName) > 0){ 
     $className = strtolower(array_shift($arrName)); 
    } else { 
     $className = $moduleName; 
    } 
    $location = '' . $typename . '/' . $moduleName . '/' . $className . '.php'; 
    include_once($location); 
} 

(我與MVC(模型 - 視圖 - 控制器)結構工作)。

我打電話了 「新PDO」(在database.php中):

private static $pdo; 

     private static function getDB() { 
      self::$pdo = new PDO("mysql:host=localhost;dbname=something",'something','something'); 
      return self::$pdo; 
     } 

它給了我這樣的錯誤:

Warning: include_once(pdo//.php): failed to open stream: No such file or directory in controller/autoload/autoload.php on line 15

Warning: include_once(): Failed opening 'pdo//.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in controller/autoload/autoload.php on line 15

Fatal error: Class 'PDO' not found in controller/core/database.php on line 7

我一直在使用「新的嘗試\ PDO「,但這並沒有改變任何東西。 我也嘗試使用「使用PDO」,但那給了我更多的錯誤,也許我用它錯了。

謝謝。

+0

PDO沒有_,因此您可以使用自動裝載機將PD從PDO陣列中移出並處理很多其他問題。在包含它之前,您可能需要檢查$ location是否是一個文件('is_file()')。如果成功則返回true或false。 – Luceos

+0

更進一步,不要忘記檢查file_exist是否包含它 – dev

+0

謝謝,這幫助了很多,我現在看到的唯一的問題是類「PDO」沒有找到..但我會盡力找出它。 –

回答

0

我已經解釋這是怎麼回事的評論:

// This gives array(1) { [0]=> string(3) "PDO" } 
$arrName = explode('_', $name); 

// This gives string(3) "pdo" 
$typename = strtolower(array_shift($arrName)); 

// This gives string(0) "" 
$moduleName = strtolower(array_shift($arrName)); 

// This returns FALSE 
if (count($arrName) > 0) 
{ 
    $className = strtolower(array_shift($arrName)); 
} 

else 
{ 

    // This gives string(0) "" 
    $className = $moduleName; 

} 

// This gives string(9) "pdo//.php" 
$location = '' . $typename . '/' . $moduleName . '/' . $className . '.php'; 

然而,正如我假設你正在使用(或者至少嘗試使用)的PHP Data Objects擴展,你需要確保它是installed

+0

感謝您的幫助,我現在只有一個錯誤:未找到'PDO'類。但我會盡我所能來解決它​​。 –

+0

看我的編輯。安裝。 – MichaelRushton