我已经为php编写了一个快速自动加载脚本,虽然看起来好像自动加载正在覆盖php扩展等等。
我正在为pdo创建一个数据库类,我需要在类中实现PDO。这个问题是PHP认为PDO是一个与我的数据库类位于同一名称空间的类。
的index.php;
use database\db;
require_once "core/inc.php";
$db = DB::instance();
芯/ inc.php;
spl_autoload_register(function($a) {
$file;
if(file_exists($file = dirname(__DIR__) . DIRECTORY_SEPARATOR . "module" . DIRECTORY_SEPARATOR . str_replace("\\", DIRECTORY_SEPARATOR, strtolower($a)) . ".php"))
require_once $file;
});
模块/数据库/ db.php中;
namespace database;
$this->_pdo = new PDO('mysql:host=' . $config->get('database/ip') . ';dbname=' . $config->get('database/db'), $config->get('database/un'), $config->get('database/pw'));
我之前在PHP中没有真正触及名称空间,所以我无法找到一个可行的解决方案。虽然我还没有成功完成这项任务,但我一直在研究相当多并试图找到解决办法。
任何帮助将不胜感激,
欢呼声。
答案 0 :(得分:1)
告诉您的代码PDO在全局(\
)命名空间中,而不在指定的命名空间中
namespace database;
$this->_pdo = new \PDO('mysql:host=' . $config->get('database/ip') . ';dbname=' . $config->get('database/db'), $config->get('database/un'), $config->get('database/pw'));