Zend Framework 2は、フルスタックにコミットすることなく、モジュールを簡単に使用できる「随意」設計を採用していると主張しています。優れたデータベースアクセス層が必要です。オンラインのドキュメントと推奨事項から、Zend\Dbの外観が気に入っています。Zend /Dbフォルダーを/libディレクトリーに配置しましたが、PHPにZend \ Db \ Adapter\Adapterクラスを認識させるのに問題があります。使用しようとすると、致命的なエラーが発生し続けます。
致命的なエラー:6行目の/home/username/public_html/test.phpにクラス'Zend \ Db \ Adapter\Adapter'が見つかりません
.htaccessでZF2_PATHを設定してみました。
SetEnv ZF2_PATH /home/username/public_html/lib/Zend
コードにインクルードパスを設定してみました:
set_include_path( $_SERVER['DOCUMENT_ROOT'] . '/lib' . PATH_SEPARATOR . get_include_path() );
Zend\Loaderを明示的にロードしてインスタンス化しようとしました。
require_once 'lib/Zend/Loader/StandardAutoloader.php';
$zendLoader = new Zend\Loader\StandardAutoloader();
$zendLoader->register();
これらのどれも効果がありませんでした。Zend / Db / Adapter / Adapter.phpを明示的に要求しようとしましたが、表示されているエラーは修正されましたが、依存関係の1つで同じエラーが発生するため、実用的な解決策ではありません。
私はここで何が間違っているのですか?ZF2は、この種のモジュラー使用のために実際に設計されたものではありませんか、それとも何かが足りませんか?
編集:私は自分のオートロード関数を書くことでこれを機能させました:
function autoloader($class) {
$path = explode('\\', $class);
foreach ($path as $p) {
$cp .= DIRECTORY_SEPARATOR . $p;
}
include __DIR__ . '/lib/' . $cp . '.php';
}
spl_autoload_register(autoloader);
この種の意味は理にかなっています-フレームワークの残りの部分なしでdbモジュールを使用している場合、フレームワークが自動ロードを実行することは期待できません-Zend\Loaderを手動でロードする理由がまだわかりません。問題を解決しませんでした。Zend \ Loaderのポイントの自動ロードを処理していませんか?とにかく、私は今のところ実行可能な解決策を持っていますが、より良い解決策があれば私はそれを聞いてみたいです。