<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 命令行應用(Command Line Applications) # 命令行應用(Command Line Applications) CLI應用即是運行在命令行窗體上的應用。 主要用來實現后臺任務, 命令行工具等。 ### 結構(Structure) 最小結構的CLI程序如下: - app/config/config.php - app/tasks/MainTask.php - app/cli.php <– 主要啟動文件 ### 創建引導(Creating a Bootstrap) 普通的MVC程序中,啟動文件用來啟動整個應用。和web應用不同, 此處應用中我們使用cli.php來作為啟動文件。 下面是一個簡單的啟動文件示例: ``` <pre class="calibre14">``` <?php use Phalcon\DI\FactoryDefault\CLI as CliDI, Phalcon\CLI\Console as ConsoleApp; define('VERSION', '1.0.0'); // 使用CLI工廠類作為默認的服務容器 $di = new CliDI(); // 定義應用目錄路徑 defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__))); /** * 注冊類自動加載器 */ $loader = new \Phalcon\Loader(); $loader->registerDirs( array( APPLICATION_PATH . '/tasks' ) ); $loader->register(); // 加載配置文件(如果存在) if (is_readable(APPLICATION_PATH . '/config/config.php')) { $config = include APPLICATION_PATH . '/config/config.php'; $di->set('config', $config); } // 創建console應用 $console = new ConsoleApp(); $console->setDI($di); /** * 處理console應用參數 */ $arguments = array(); foreach ($argv as $k => $arg) { if ($k == 1) { $arguments['task'] = $arg; } elseif ($k == 2) { $arguments['action'] = $arg; } elseif ($k >= 3) { $arguments['params'][] = $arg; } } // 定義全局的參數, 設定當前任務及動作 define('CURRENT_TASK', (isset($argv[1]) ? $argv[1] : null)); define('CURRENT_ACTION', (isset($argv[2]) ? $argv[2] : null)); try { // 處理參數 $console->handle($arguments); } catch (\Phalcon\Exception $e) { echo $e->getMessage(); exit(255); } ``` ``` 上面的代碼可以使用如下方式執行: ``` <pre class="calibre14">``` $ php app/cli.php 這樣程序會直接執行默認的任務及默認動作. ``` ``` ### 任務(Tasks) 這里的任務同于web應用中的控制器。 任一 CLI 應用程序都至少包含一個mainTask 及一個 mainAction, 每個任務至少有一個mainAction, 這樣在使用者未明確的 指定action時 此mainAction就會執行。 下面即是一個mainTask的例子( app/tasks/MainTask.php ): ``` <pre class="calibre14">``` <?php class MainTask extends \Phalcon\CLI\Task { public function mainAction() { echo "\nThis is the default task and the default action \n"; } } ``` ``` ### 處理動作參數(Processing action parameters) CLI應用中, 開發者也可以在action中處理傳遞過來的參數, 下面的例子中已經對傳遞過來的參數進行了處理。 如果你使用下面的參數和動作運行應用程序: ``` <pre class="calibre14">``` <?php class MainTask extends \Phalcon\CLI\Task { public function mainAction() { echo "\nThis is the default task and the default action \n"; } /** * @param array $params */ public function testAction(array $params) { echo sprintf('hello %s', $params[0]) . PHP_EOL; echo sprintf('best regards, %s', $params[1]) . PHP_EOL; } } ``` ``` 我們可以使用下面的命令行及參數執行程序: ``` <pre class="calibre14">``` $ php app/cli.php main test world universe hello world best regards, universe ``` ``` ### 鏈中運行任務(Running tasks in a chain) CLI應用中可以在一個action中執行另一action. 要實現這個需要在 DI 中設置console. ``` <pre class="calibre14">``` <?php $di->setShared('console', $console); try { // Handle incoming arguments $console->handle($arguments); } catch (\Phalcon\Exception $e) { echo $e->getMessage(); exit(255); } ``` ``` 然后開發者即可在一個action中使用用其它的action了. 下面即是例子: ``` <pre class="calibre14">``` <?php class MainTask extends \Phalcon\CLI\Task { public function mainAction() { echo "\nThis is the default task and the default action \n"; $this->console->handle( array( 'task' => 'main', 'action' => 'test' ) ); } public function testAction() { echo "\nI will get printed too!\n"; } } ``` ``` 當然, 通過擴展 `Phalcon\Cli\Task` 來實現如上操作會是一個更好主意。 | - [索引](# "總目錄") - [下一頁](# "隊列(Queueing)") | - [上一頁](# "注釋解析器(Annotations Parser)") |
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看