1

MVC構造なしでいくつかのZendコンポーネントを使用しようとしています。たとえば、私がこのディレクトリ構造を持っている場合:

  • /
  • / Zend
  • / images
  • / css

    include('Zend / Db.php'); $ db = Zend_Db :: factory($ db_config ['adapter']、$ db_config); //使用する準備ができて

しかし、私がこの構造を持ちたい場合:

  • /
  • / images
  • / Lib
    • ゼンド
    • OtherLib
  • / css

    include('Lib / Zend / Db.php'); $ db = Zend_Db :: factory($ db_config ['adapter']、$ db_config); //使用する準備ができて

しかし、ここでは、他のファイルとクラスが見ているために失敗します:/libの代わりにZend/ Zend

フォルダレベルに関係なく、すべてのファイルのZend_Dbクラスにアクセスするにはどうすればよいですか?

ありがとう!

4

3 に答える 3

4

include_pathLib/Zendにディレクトリを追加することをお勧めします。これを行うと、Zendクラスを正しくロードできるようになります。

何かのようなもの:

set_include_path(implode(PATH_SEPARATOR, array(
    '/path/to/Lib',  // <-- change this to the actual path where the Zend dir is uploaded
    get_include_path(),
)));

これにより、libディレクトリがinclude_pathの最初のパスとして追加されます。他のライブラリファイルをさらに含める場合はget_include_path()、既存のパスが最初に検索されるように、後で移動することをお勧めします。

または、使用することがわかっているZendファイルを手動で要求することもできます(たとえばLib/Zend/Db.phpLib/Zend/Db/Pdo/Mysql.phpなどですが、これは面倒で忘れやすいため、include_pathメソッドを使用します。

于 2012-04-24T18:15:00.730 に答える
1

Libディレクトリをインクルードパス(ではなくLib/Zend)に追加する必要があります。

set_include_path(
    $_SERVER['DOCUMENT_ROOT'].'/Lib' . PATH_SEPARATOR .
    get_include_path()
);

その後、クラスを要求した後、それらを使用できます。

require_once 'Zend/Db.php';
$db = Zend_Db::factory( $db_config['adapter'], $db_config );

コメントで、すべてのスクリプトに共通のconfig.phpファイルが含まれていると述べたので、これを使用してZFオートローダーをセットアップできます。これにより、すべてがはるかに簡単になります(インクルードパスを設定した後にこれを配置してください)。

require_once 'Zend/Loader/Autoloader.php';
$autoloader = Zend_loader_Autoloader::getInstance();

その後、他のZFファイルを含める必要がないため、必要に応じてクラスをインスタンス化するだけです。同じオートローダーを使用して、libから独自のクラスをロードしたり、他のライブラリからクラスをロードしたりすることもできます。

于 2012-04-24T19:35:57.470 に答える
0

初期化するには*ZF

require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();

これで、ZFコンポーネントを自由に呼び出すことができ、自動的に自動ロードされます。

*Libディレクトリはphpincludepathの一部である必要があります。これはdrew010による言及として簡単に行うことができます

set_include_path(implode(PATH_SEPARATOR, array(
    '/path/to/Lib',  // <-- change this to the actual path where the Zend dir is uploaded
    get_include_path(),
)));
于 2012-04-25T04:26:35.383 に答える