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

BlackOpsThe PHP Framework

Stable 1.1.0
composer create-project blackops/skeleton my-app 1.1.0
GenerateReport.phpPHP
#[Route(method: 'POST', path: '/reports')]
#[Deferred]
final readonly class GenerateReport implements Operation
{
    public function handle(
        GenerateReportValue $value,
        ExecutionContext $context,
    ): ReportGenerated
    {
        return new ReportGenerated(
            $value->reportName,
            '/reports/generated/' . $value->reportName . '.json',
        );
    }
}
Lifecycle JournalDurable
  1. Receivedoperation.received
  2. Acceptedoperation.accepted
  3. Runningattempt.started
  4. Finalizingattempt.succeeded
  5. Completedoperation.completed
01

BlackOpsの特徴

Operation

#[Route]で同期API、#[Deferred]で非同期化します。HTTPリクエストもコンソールコマンドもJobも、すべてはOperationで統一されます。

Operationを始める

Journal

受理・試行・リトライ・拒否・完了をFrameworkが自動でJournalへ記録します。「なぜ失敗したか」をFrameworkが記録します。

Journalを読む

Headless

BlackOpsはフロントエンドを持ちません。代わりに、JavaScript向けに接続クライアントのコードを自動生成します。フロントエンドはNext.jsでもNuxtでもSvelteKitでもお好きなFrameworkと組み合わせられます。

Frontendを接続する
02

最初のOperationを始める