marko  by marko-php

Modular PHP framework for enterprise extensibility

Created 5 months ago
391 stars

Top 73.1% on SourcePulse

GitHubView on GitHub
Project Summary

Summary

Marko is a modular PHP 8.5+ framework designed for enterprise-grade extensibility and modern developer experience. It solves the challenge of customizing third-party modules without patches or forks, allowing developers to override any component cleanly. Marko targets developers seeking a flexible PHP environment that balances rapid development with deep customization capabilities.

How It Works

Marko's core is its true modularity, separating interfaces from implementations to enable easy driver swapping (database, cache, mail). Key features include a "Preferences" system for remapping interfaces via configuration and a "Plugins" system for intercepting public methods with #[Before] and #[After] hooks. Configuration, routing, and other elements are declared using PHP attributes, offering automatic discovery and IDE support, replacing traditional XML/YAML. This approach simplifies customization and enhances maintainability.

Quick Start & Requirements

Install via Composer:

composer create-project marko/skeleton my-app

Requires PHP 8.5+ and Composer 2.x. Documentation is available at marko.build/docs.

Highlighted Details

  • Composable Packages: Developers can include only necessary components.
  • Driver Swapping: Easy replacement of core drivers (database, cache, etc.) without application code changes.
  • Attribute-Driven Development: Features like routing, plugins, and observers use PHP attributes for automatic discovery.
  • "Loud Errors": Provides detailed, actionable error messages.

Maintenance & Community

Actively developed by Mark Shust. The project is a monorepo with stable architecture but APIs may evolve before the 1.0 release. No specific community channels were detailed in the README.

Licensing & Compatibility

Licensed under the permissive MIT License, generally compatible with commercial and closed-source applications.

Limitations & Caveats

The framework is in active development, with APIs subject to change before the stable 1.0 release. Early adopters should anticipate potential API evolution.

Health Check
Last Commit

1 week ago

Responsiveness

Inactive

Pull Requests (30d)
30
Issues (30d)
1
Star History
9 stars in the last 30 days

Explore Similar Projects

Feedback? Help us improve.