laminas/laminas-cli
Console tooling for Laminas applications and components. Provides a CLI entry point, command discovery/registration, and integration helpers to build and run project-specific commands via Composer and your framework configuration.
Pros:
artisan for specific tasks without full migration).Cons:
laminas-cli config keys) may require adjustments.laminas-cli could introduce version conflicts if not managed carefully.artisan calls with vendor/bin/laminas for custom commands.laminas-cli commands (via config/laminas-cli.php).laminas-cli via --container flag or configure a bridge (e.g., Laminas\Cli\Container\LaravelContainerAdapter).Illuminate\Console is Symfony Console-compatible, so commands (e.g., php artisan) can often be reused with minimal changes.laminas-cli supports Symfony Console v6–v8, while Laravel uses v6.3+. Test for conflicts (e.g., symfony/console v7+ may break Laravel’s CLI tools).app.php and laminas-cli config may require synchronization (e.g., shared service bindings).| Risk Area | Severity | Mitigation |
|---|---|---|
| Symfony Version Conflicts | High | Pin symfony/console to a compatible version (e.g., ^6.3) in composer.json. |
| Container Incompatibility | Medium | Implement a PSR-11 adapter for Laravel’s container (e.g., LaravelContainer). |
| Command Registration | Low | Use attribute-based commands (v1.15+) to reduce boilerplate. |
| Performance Overhead | Low | Benchmark laminas-cli vs. native Artisan for critical paths (e.g., migrations). |
| Deprecation Risk | Medium | Monitor Laminas’ roadmap; prefer Laravel-native solutions for long-term projects. |
laminas-cli?
artisan)?artisan usage, or only specific commands (e.g., custom scripts)?schedule:run) interact with laminas-cli?spatie/laravel-command) that could reduce dependency risk?Illuminate\Console\Scheduling\Schedule, while laminas-cli uses Symfony’s Command).bind() vs. Laminas’ factory).laminas-cli supports PHP 8.5 (Laravel’s minimum is 8.1). No issues expected.vendor/bin/laminas vs. artisan).Phase 1: Pilot Integration
laminas-cli via Composer.config/laminas-cli.php:
return [
'commands' => [
'app:generate-report' => \App\Console\GenerateReportCommand::class,
],
];
vendor/bin/laminas app:generate-report.artisan-based equivalent.Phase 2: Container Bridging
DB, Cache).use Illuminate\Container\Container;
use Laminas\Cli\Container\ContainerInterface;
class LaravelContainerAdapter implements ContainerInterface {
public function __construct(private Container $laravelContainer) {}
public function get($id) { return $this->laravelContainer->make($id); }
}
laminas-cli via --container:
vendor/bin/laminas --container=path/to/adapter.php command-name
make:command to generate Symfony-compatible commands.Phase 3: Full Adoption (Optional)
artisan aliases in scripts (e.g., php artisan migrate → vendor/bin/laminas migrate).artisan includes framework-specific features (e.g., queue workers). Ensure laminas-cli can replicate these.| Feature | Laravel Native | laminas-cli | Notes |
|---|---|---|---|
| Command Registration | Service Provider | Config file + Attributes | Prefer attributes for new commands. |
| Dependency Injection | Laravel Container | PSR-11 | Requires adapter. |
| Task Scheduling | schedule:run |
N/A | Use Laravel’s scheduler alongside. |
| Queue Workers | queue:work |
N/A | Not supported; stick with Artisan. |
| Artisan Helpers | make:command, tinker |
N/A | Use Laravel tools for these. |
laminas-cli) during transition.config/laminas-cli.php is explicit.artisan and laminas-cli increases maintenance complexity.laminas-cli and Symfony Console must be kept in sync with Laravel’s versions.How can I help you explore Laravel packages today?