我已经制作了一个__autoload函数(在autoload.php中):
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;
}
它给我一个这样的错误:
警告:include_once(pdo // .php):无法打开流:没有这样的文件 或目录 第15行的controller / autoload / autoload.php
警告:include_once():无法打开'pdo // .php'以包含它 (include_path ='。:/ usr / lib / php:/ usr / local / lib / php')in 第15行的controller / autoload / autoload.php
致命错误:未找到“PDO”类 第7行的controller / core / database.php
我尝试过使用“new \ PDO”,但这并没有改变任何东西。 我也试过使用“使用PDO”,但这给了我更多的错误,也许我错了。
感谢。
答案 0 :(得分: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。