コンテンツにスキップ
BlackOps1.xは試験的なバージョンです。Production Readyは2.xを予定しています。Releases
BlackOps
Esc
navigateopen⌘Jpreview
このページの内容

ConsoleCommand

ConsoleCommandからOperationを起動する責務と、HTTP/Deferredとの境界を確認する。

Console Commandは、TerminalからOperationを起動するApplication入口です。#[ConsoleCommand]を付けたOperationへScalar入力を渡し、HTTP Adapterとは別のProcess Boundaryで同じOperation Modelを実行します。

Operationへ#[ConsoleCommand]を付けてBuildすると、Project Rootのphp blackops <command>として実行できます。入力、Validation、Authorization、Outcomeの例はOperation Commandを参照してください。

役割

  • HTTP Requestの代わりにBlackOps CLIが入力を受け取る
  • Build-time DiscoveryされたCommandへConstructor DIを適用する
  • OperationのExecution Contextへ固定されたConsole Actorを渡す
  • Throwableの詳細やCredentialを標準出力へ書かず、終了Codeと安全なFailure分類を返す

Console入口はDomain処理を別実装に複製しません。OperationのValue、Handler、Outcome、JournalはHTTPと同じ契約を使います。Operationの基本形はAuthoringを参照してください。

HTTP/Deferredとの違い

Console Commandは入力を受け取ったProcess内でOperationを実行する入口です。#[Route]はHTTP入力をInlineへ接続し、#[Deferred]はDurable受付とWorker実行へ接続します。ConsoleからDeferred Operationを起動する場合も、受付後のStatus/OutcomeはInline and Deferredと同じLifecycleで確認します。

ApplicationはCommand実行者の権限、Process Supervisor、環境変数、終了Codeの扱いを所有します。FrameworkはOSのユーザー権限やSchedulerを提供しません。