2

zendforappを使用してコンソールスクリプトを作成できるメカニズムの構築に問題があります。たとえば、次のようになります。

--スクリプト

----index.php

----basecmd.php

basecmdに他のスクリプトのメインクラスが含まれていて、ファイル構造が

include index.php
....
MyClass extends Zend_Console_Getopt{

しかし、index.phpでは、param send as --application_envを使用してAPPLICATION_ENVOIRMENTをスクリプトに設定する必要があります。私の問題は、getoptを使用してparamsを解析するときに設定できることですが、index.phpで設定するにはどうすればよいですか?情報:次のようなエラーを表示する必要があります:'スクリプトを実行するときは常にapplication_envを設定する必要があります'それを行うためのガイドをいただければ幸いです。

4

1 に答える 1

4

私が正しく理解している場合は、index.phpが正しく機能するように変数/定数を設定するbasecmd.phpを呼び出して、CLI/CMDからアプリケーションを実行しようとしています。

basecmd.phpは次のようになります。

#!/usr/bin/env php
<?php
// basecmd.php
require_once 'path/to/Zend/Console/Getopt.php';
try {
    $opts = new Zend_Console_Getopt(
        array(
            'app-env|e=s' => 'Application environment',
            'app-path|ap=s' => 'Path to application folder',
            'lib-path|lp=s' => 'Path to library',
            // more options
        )
    );
    $opts->parse();
    if (!($path = $opts->getOption('ap'))) { // cli param is missing
        throw new Exception("You must specify application path");
    }
    define('APPLICATION_PATH', $path);
    // process other params and setup more constants/variables
} catch (Zend_Console_Getopt_Exception $e) {
    echo $e->getUsageMessage();
    exit;
} catch (Exception $e) {
    echo $e->getMessage() . "\n";
    exit;
}
// it is wise to setup another constant so application can determine is it a web or cli call
define('RUN_VIA', 'cli');
// if all done correctly include application loader script
include 'index.php';

そして、index.phpで、定数または変数がすでに定義されているかどうかをテストする必要があります。

<?php
// index.php
defined('APPLICATION_PATH') // is it defined
    or define('APPLICATION_PATH', '../application'); // no? then define it
defined('RUN_VIA')
    or define('RUN_VIA', 'web');
// ... rest of the code

これがあなたが軌道に乗るのに役立つことを願っています;)

于 2012-09-02T10:48:02.603 に答える