SPL_AUTOLOAD_REGISTER 覆盖 PHP 扩展
SPL_AUTOLOAD_REGISTER overriding PHP Extensions
我已经为 php 编写了一个快速自动加载脚本,尽管自动加载似乎覆盖了 php 扩展等。
我正在为 pdo 创建一个数据库 class,我需要在 class 中实现 PDO。这个问题是 PHP 认为 PDO 是 class 位于与我的数据库 class.
相同的名称空间中
index.php;
use database\db;
require_once "core/inc.php";
$db = DB::instance();
core/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;
});
module/database/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 中没有真正接触过命名空间,所以我找不到可行的解决方案。尽管我还没有成功完成这项任务,但我已经进行了大量研究并试图找到修复方法。
如有任何帮助,我们将不胜感激,
干杯。
告诉您的代码 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'));
我已经为 php 编写了一个快速自动加载脚本,尽管自动加载似乎覆盖了 php 扩展等。
我正在为 pdo 创建一个数据库 class,我需要在 class 中实现 PDO。这个问题是 PHP 认为 PDO 是 class 位于与我的数据库 class.
相同的名称空间中index.php;
use database\db;
require_once "core/inc.php";
$db = DB::instance();
core/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;
});
module/database/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 中没有真正接触过命名空间,所以我找不到可行的解决方案。尽管我还没有成功完成这项任务,但我已经进行了大量研究并试图找到修复方法。
如有任何帮助,我们将不胜感激,
干杯。
告诉您的代码 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'));