实现接口和自动加载类

时间:2013-09-22 14:09:58

标签: php mysql interface pdo autoload

我有一个问题,我有以下界面(http://pastebin.com/c11xbdxh) 我有以下类实现上面的接口(http://pastebin.com/m1zGNfSm)。

我正在使用以下自动加载功能来动态加载类:

function autoloadClass($className)
{
      $classParts = explode("\\", $className);
      $fileName = SYSTEM_CORE_PATH . DIRECTORY_SEPARATOR . "classes" . DIRECTORY_SEPARATOR . strtolower(str_replace('_', DIRECTORY_SEPARATOR, end($classParts)) . '.class.php');

      if (is_readable($fileName)) {
          if (SYSTEM_DEBUG) {
               include_once($fileName);
          } else {
               @include_once($fileName);
          }
      }
 }
spl_autoload_register("autoloadClass");

当我创建一个新的对象类(在自动加载代码下)时,我没有得到任何输出错误......

try {
$db = new Core\Infrastructure\MySQL(array('user' => DB_USER, 'pass' => DB_PASS, 'host' => DB_HOST, 'name' => DB_NAME));
} catch (PDOException $pdoE) {
    echo $pdoE->getMessage();
} catch (Exception $e) {
    echo $e->getMessage();
}

echo "<pre>ddd";
$db->runQuery("SELECT * FROM `users`;");
print_r( $db->fetchData());

感谢您的帮助:)

2 个答案:

答案 0 :(得分:1)

“任何输出都不会出现任何错误”通常表示error_reporting设置所导致的致命或分析错误。检查日志。确保设置error_reporting(E_ALL),最好是在ini文件中。

$fileName无法读取时添加调试输出。这可能会提供一个见解。

答案 1 :(得分:0)

好的我已修复它,自动加载只从文件中加载类,它不会加载接口。

我只是简单地将基于class_implements函数的短代码添加到我写的自动加载函数中。

感谢您的所有帮助:D