程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Phalcon 之命令行應用(Command Line Applications)

Phalcon 之命令行應用(Command Line Applications)

編輯:C++入門知識

Phalcon 之命令行應用(Command Line Applications)


CLI應用即是運行在命令行窗體上的應用。 主要用來實現後台任務, 命令行工具等。

結構(Structure)?

最小結構的CLI程序如下:

  • app/config/config.php
  • app/tasks/MainTask.php
  • app/cli.php <– 啟動文件

    創建引導(Creating a Bootstrap)?

    普通的MVC程序中, 啟動文件用來啟動整個應用。 和web應用不同, 此處應用中我們使用cli.php來作為啟動文件。

    下面是一個簡單的啟動文件示例:

    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;
         }
     }
    
     // 定義全局的參數, 設定當前任務及action
     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);
     }
    

    上面的代碼可以使用如下方式執行:

    $ php app/cli.php
    

    這樣程序會直接執行默認的任務及action.

    任務(Tasks)?

    這裡的任務同於web應用中的控制器。 任一 CLI 應用程序都至少包含一個mainTask 及一個 mainAction, 每個任務至少有一個mainAction, 這樣在使用者未明確的 指定action時 此mainAction就會執行。

    下面即是一個mainTask的例子( app/tasks/MainTask.php ): .. code-block:: php

    class MainTask extends PhalconCLITask {

    public function mainAction() {echo “nThis is the default task and the default action n”;

    }

    }

    處理動作參數(Processing action parameters)?

    CLI應用中, 開發者也可以在action中處理傳遞過來的參數, 下面的例子中已經對傳遞過來的參數進行了處理。

    
    
    
    

    我們可以使用下面的命令行及參數執行程序:

    $ php app/cli.php main test world universe
    
    hello world
    best regards, universe
    

    鏈中運行任務(Running tasks in a chain)?

    CLI應用中可以在一個action中執行另一action. 要實現這個需要在 DI 中設置console.

    setShared('console', $console);
    
    try {
        // handle incoming arguments
        $console->handle($arguments);
    }
    

    然後開發者即可在一個action中使用用其它的action 了. 下面即是例子:

    console->handle(array(
               'task' => 'main',
               'action' => 'test'
            ));
        }
    
        public function testAction() {
            echo '\nI will get printed too!\n';
        }
    }
    

    當然, 通過擴展 \Phalcon\CLI\Task 來實現如上操作會是一個更好主意。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved