php/docs/index.md
Snider 755c6b7134
Some checks failed
CI / PHP 8.3 (push) Failing after 2m16s
CI / PHP 8.4 (push) Failing after 2m3s
docs: add human-friendly documentation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:02:41 +00:00

4 KiB

title description
core/php Go-powered PHP/Laravel development toolkit with FrankenPHP embedding, service orchestration, CI pipelines, and Coolify deployment.

core/php

forge.lthn.ai/core/php is a Go module that provides a comprehensive CLI toolkit for PHP and Laravel development. It covers the full lifecycle: local development with service orchestration, code quality assurance, Docker/LinuxKit image building, and production deployment via the Coolify API.

The module also embeds FrankenPHP, allowing Laravel applications to be served from a single Go binary with Octane worker mode for sub-millisecond response times.

Quick Start

As a standalone binary

# Build the core-php binary
core build
# -- or --
go build -o bin/core-php ./cmd/core-php

# Start the Laravel development environment
core-php dev

# Run the CI pipeline
core-php ci

As a library in a Go application

import php "forge.lthn.ai/core/php"

// Register commands under a "php" parent command
cli.Main(
    cli.WithCommands("php", php.AddPHPRootCommands),
)

Package Layout

File / Directory Purpose
cmd/core-php/main.go Binary entry point -- registers all commands and calls cli.Main()
cmd.go Top-level command registration (AddPHPCommands, AddPHPRootCommands)
cmd_dev.go dev, logs, stop, status, ssl commands
cmd_build.go build (Docker/LinuxKit) and serve (production container) commands
cmd_ci.go ci command -- full QA pipeline with JSON/Markdown/SARIF output
cmd_deploy.go deploy, deploy:status, deploy:rollback, deploy:list commands
cmd_packages.go packages link/unlink/update/list commands
cmd_serve_frankenphp.go serve:embedded and exec commands (CGO only)
cmd_commands.go AddCommands() convenience wrapper
handler.go FrankenPHP HTTP handler (Handler) -- CGO build tag
bridge.go Native bridge -- localhost HTTP API for PHP-to-Go calls
php.go DevServer -- multi-service orchestration (start, stop, logs, status)
services.go Service interface and concrete implementations (FrankenPHP, Vite, Horizon, Reverb, Redis)
detect.go Project detection: Laravel, FrankenPHP, Vite, Horizon, Reverb, Redis, package managers
dockerfile.go Auto-generated Dockerfiles from composer.json analysis
container.go DockerBuildOptions, LinuxKitBuildOptions, ServeOptions, and build/serve functions
deploy.go Deployment orchestration -- Deploy(), Rollback(), DeployStatus()
coolify.go Coolify API client (CoolifyClient) with deploy, rollback, status, and list operations
quality.go QA tools: Pint, PHPStan/Larastan, Psalm, Rector, Infection, security checks, audit
testing.go Test runner detection (Pest/PHPUnit) and execution
ssl.go SSL certificate management via mkcert
packages.go Composer path repository management (link/unlink local packages)
env.go Runtime environment setup for embedded apps (CGO only)
extract.go Extract() -- copies an embed.FS Laravel app to a temporary directory
workspace.go Workspace configuration (.core/workspace.yaml) for multi-package repos
i18n.go Locale registration for internationalised CLI strings
services_unix.go Unix process group management (SIGTERM/SIGKILL)
services_windows.go Windows process termination
.core/build.yaml Build configuration for core build

Dependencies

Module Role
forge.lthn.ai/core/cli CLI framework (Cobra wrapper, TUI styles, output helpers)
forge.lthn.ai/core/go-i18n Internationalisation for command descriptions and messages
forge.lthn.ai/core/go-io Filesystem abstraction (Medium interface) for testability
forge.lthn.ai/core/go-process Process management utilities
github.com/dunglas/frankenphp FrankenPHP embedding (CGO, optional)
gopkg.in/yaml.v3 YAML parsing for workspace configuration

Licence

EUPL-1.2