首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

Phalcon CLI 應用開發全攻略:從引導到任務鏈調用

     編輯:C++ 入門

Phalcon CLI 應用開發全攻略:從引導到任務鏈調用

Phalcon 是高性能 PHP 框架,其 CLI 應用模塊專為後台任務、定時腳本、命令行工具設計。本文系統梳理結構、引導、任務定義、參數處理與任務鏈調用。

最小目錄結構

app/
├── config/
│   └── config.php
├── tasks/
│   └── MainTask.php
└── cli.php          # 入口文件

引導文件 cli.php 詳解

registerDirs([APPLICATION_PATH . '/tasks']);
$loader->register();

// 4. 載入配置(可選)
if (is_readable(APPLICATION_PATH . '/config/config.php')) {
    $config = include APPLICATION_PATH . '/config/config.php';
    $di->set('config', $config);
}

// 5. 創建 Console 應用
$console = new ConsoleApp();
$console->setDI($di);

// 6. 解析命令行參數 argv -> arguments 數組
$arguments = [];
foreach ($argv as $k => $arg) {
    if ($k == 1) $arguments['task'] = $arg;
    elseif ($k == 2) $arguments['action'] = $arg;
    elseif ($k >= 3) $arguments['params'][] = $arg;
}

// 7. 定義全局常量(供任務內部使用)
define('CURRENT_TASK', $argv[1] ?? null);
define('CURRENT_ACTION', $argv[2] ?? null);

try {
    $console->handle($arguments);
} catch (\Phalcon\Exception $e) {
    echo $e->getMessage(); exit(255);
}

任務類 MainTask.php



運行示例

$ php app/cli.php
This is the default task and the default action

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

任務鏈調用:在一個 Action 中調用另一 Action

  1. 在 DI 中共享 Console 實例:$di->setShared('console', $console);
  2. 任務中注入 $this->console 並調用 handle():
class MainTask extends \Phalcon\CLI\Task {
    public function mainAction() {
        echo "\nDefault action\n";
        $this->console->handle([
            'task' => 'main',
            'action' => 'test'
        ]);
    }
    public function testAction() {
        echo "\nI will get printed too!\n";
    }
}

更優雅的方式是繼承基類封裝 runTask($task, $action, $params) 方法。

進階技巧

  • 配置文件:config.php 返回數組,可配置數據庫、日誌、路徑等;
  • 異常處理:捕獲 \Phalcon\Exception 統一退出碼 255;
  • 參數驗證:Action 簽名聲明 array $params,框架自動綁定;
  • 輸出格式:使用 PHP_EOL 換行,sprintf 格式化,避免雙引號轉義。

常見坑點

  1. 忘記 registerDirs 掃描 tasks 目錄,導致找不到 Task 類;
  2. argv[0] 是腳本路徑,業務參數從 argv[1] 開始;
  3. CLI 環境下無 $_GET/$_POST,所有輸入來自 $argv 或配置文件;
  4. 長時間運行腳本需設置 set_time_limit(0) 並妥善處理信號。

掌握上述核心流程,即可用 Phalcon 快速構建健壯、可維護的命令行應用與後台任務系統。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved