blackops / framework
BlackOps PHP Framework.
Requires
- php: >=8.5
- doctrine/dbal: ^4.4
- doctrine/migrations: ^3.9
- monolog/monolog: ^3.10
- nikic/fast-route: ^1.3
- nyholm/psr7: ^1.8
- psr/clock: ^1.0
- psr/container: ^2.0
- psr/http-factory: ^1.0
- psr/http-message: ^2.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
- psr/log: ^3.0
- symfony/config: ^7.4
- symfony/console: ^7.4
- symfony/dependency-injection: ^7.4
- symfony/stopwatch: ^7.4
- symfony/uid: ^7.4
Requires (Dev)
- carthage-software/mago: 1.42.0
- deptrac/deptrac: 4.6.2
- phpunit/phpunit: 13.2.2
README
BlackOpsは、PHP 8.5向けのHeadless Operation Frameworkです。同期HTTP実行とPostgreSQLを使ったDeferred実行を同じOperation Modelで扱い、Lifecycle Journal、Retry、Outcome、Retention、Project CLIを提供します。
Status
MVP、Phase 9 Project CLI、Phase 10 Documentation WebsiteのRepository内実装はMain Branchで完成しています。ただし、MVP CompleteとProduction Readyは同じ意味ではありません。
Packagistで公開済みのFramework/Skeleton Stable 1.0.0はPhase 8時点のPackageです。make:operation、make:migration、Application Migration Runtimeを含むPhase 9の変更はMain Branchへ実装済みですが、これらを含む新しいStable Releaseはまだ公開していません。
Documentation WebsiteはLocal/CI Buildと公開Artifact境界まで検証済みです。Cloudflare Pages ProjectとGitHub Environment Credentialの外部設定、Preview/Production Deploy、Live Verificationは未完了であり、公開Hostはまだ利用できません。
利用者向けの機能差と制約はCurrent Statusを参照してください。
Installation
公開済みSkeletonからApplicationを作成します。
composer create-project blackops/skeleton my-app
cd my-app
blackops new専用Installerは提供していません。Composer標準のcreate-projectが公式の作成方法です。
Quickstart
生成したApplication Directoryで、Docker Image、Artifact、Databaseを明示的に準備します。
docker compose build app http docker compose run --rm app composer install docker compose run --rm app php bin/blackops blackops:operation:list docker compose run --rm app php bin/blackops blackops:build:compile docker compose run --rm app php bin/blackops blackops:database:migrate docker compose up -d
確認用Endpoint:
curl -H 'X-Sample-Token: local-example' http://127.0.0.1:8080/welcome curl -X POST -H 'Content-Type: application/json' \ -d '{"reportName":"weekly","apiToken":"local-example"}' \ http://127.0.0.1:8080/reports
main Channelの未Release機能も含む詳しい手順は利用者向けQuickstartを参照してください。Stable 1.0.0のCommandと混在させないでください。
Project CLI on Main
Phase 9を含むMain Branchでは、Project Rootに置く薄いblackops EntrypointからFramework所有Generatorを利用できます。
php blackops make:operation Billing/CreateInvoice --type=billing.invoice.create php blackops make:migration CreateOrdersTable php blackops build:compile php blackops database:migrate --dry-run
Framework UpdateはProject Rootのblackopsや生成済みSourceを書き換えません。更新後のCommandとStubは、その後に新規生成するFileへ反映されます。
Development
Frameworkの開発CommandはWSL2内のRepository Rootで、Docker Composeを通して実行します。
docker compose build app docker compose run --rm app composer install docker compose run --rm app mago format --check src tests examples docker compose run --rm app mago lint docker compose run --rm app mago analyze docker compose run --rm app vendor/bin/phpunit docker compose run --rm app vendor/bin/deptrac
同じ品質GateはGitHub Actions CIでmainへのPushとPull Requestごとに実行されます。詳細な環境構築はDevelopment Setupを参照してください。
Documentation
- Framework利用者向けDocumentation
- Installation
- First Typed Self-handled Operation
- Local Runtime
- Framework実装者向けInternals
- Documentation Website Delivery
- Application Bootstrap
- Project Generators and Framework Updates
- Database Migrations
- Data Retention