0

問題があります。次のインターフェイス ( http://pastebin.com/c11xbdxh ) があり、上記のインターフェイスを実装する次のクラスがあります ( http://pastebin.com/m1zGNfSm )。

クラスを動的にロードするために、次の autoload 関数を使用しています。

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());

あなたの親切な助けをありがとう:)

4

2 に答える 2

0

「エラーも出力も取得しない」とは、通常、error_reporting 設定によって致命的または解析エラーが発生することを意味します。ログを確認します。error_reporting(E_ALL)できればiniファイルで設定されていることを確認してください。

$fileName読み取れない場合のデバッグ出力を追加します。これにより、洞察が得られる可能性があります。

于 2013-09-22T14:48:46.943 に答える
0

オートローディングはファイルからクラスをロードするだけで、インターフェースはロードしません。

関数に基づいた短いコードを、class_implements私が書いたオートロード関数に追加しただけです。

あなたのすべての助けに感謝します:D

于 2013-09-22T15:47:24.790 に答える