LV 1
- A NEW QUEST BEGINS -

MARKO

THE MODULAR PHP FRAMEWORK

~ Pragmatically Opinionated ~

PRESS START
GITHUB DOCS SLACK
PHP 8.5+ v0.x DEV 2026
WORLD 1 - POWER-UPS

Equip Your Build

Every feature is a power-up. Equip what you need, leave the rest. No forced load-outs.

1 app/ Your code wins WINS
2 modules/ Third-party
3 vendor/ Base packages
LEGENDARY

Module System

Everything is a module. Vendor, third-party, and app code all follow the same pattern. Equip, swap, or remove at will.

+99 FLEX +50 ORG
EPIC

Preferences

Swap any class implementation with a single attribute. Like changing weapons mid-battle. No config files needed.

+80 PWR +70 SPD
EPIC

Plugins

Before and After hooks on any method. Modify behavior without touching source code. Like enchanting your gear.

+75 MAG +60 DEF
RARE

Events & Observers

Decouple "something happened" from reactions. Dispatch events, observers react. Clean signal system.

+65 INT +55 WIS
LEGENDARY

Pure PHP Config

No XML. No YAML. No DSL. PHP 8.5+ attributes and native code. Your IDE actually understands everything.

+99 SAN +90 JOY
RARE

Helpful Errors

Loud errors that guide you to the fix. Like helpful NPCs who tell you exactly where to go. No more cryptic stack traces.

+70 LCK +85 SAN
WORLD 2 - SPELL BOOK

Learn the Spells

Real PHP attributes. Real power. Each spell (attribute) unlocks a new ability for your application.

ProductController.php
// Swap any class. One attribute.

#[Preference(replaces: FlatRate::class)]
class ZoneShipping extends FlatRate
{
    public function calculate(
        Cart $cart,
    ): Rate {
        return $this->rateByAddress(
            $cart->address,
        );
    }
}
// Enchant any method. Before & After hooks.

#[Plugin(target: OrderService::class)]
class OrderLogger
{
    #[Before]
    public function beforePlace(
        Order $order,
    ): ?Order {
        $this->logger->info(
            'Placing order',
            ['id' => $order->id],
        );
        return null;
    }
}
// React to events. Decoupled & clean.

#[Observer(UserCreatedEvent::class)]
class SendWelcomeEmail
{
    public function handle(
        UserCreatedEvent $event,
    ): void {
        $user = $event->getUser();
        $this->mailer->send(
            new WelcomeEmail($user),
        );
    }
}
// Fast travel. PHP attributes as routes.

class ProductController
{
    #[Get('/products/{id}')]
    public function show(
        int $id,
    ): Response {
        $product = $this->productRepo->find($id);
        return new Response($product);
    }
}
MODULARITY WITHOUT LIMITS
WORLD 3 - BOSS BATTLE

Defeat the Legacy Dragon

The old ways are powerful but broken. Time for a new hero to rise.

LEGACY FRAMEWORK
HP
  • ConfigXML HELL
  • CacheCONSTANT FLUSH
  • ErrorsCRYPTIC
  • GeneratedEVERYWHERE
  • PatternsOVERCOMPLICATED
  • LearningMONTHS
VS
MARKO
HP
  • ConfigPURE PHP
  • CacheNO CACHE HELL
  • ErrorsHELPFUL NPCS
  • GeneratedNONE
  • PatternsSIMPLE
  • LearningHOURS
A wild LEGACY FRAMEWORK appeared!
MARKO uses PURE PHP CONFIG!
XML Hell takes 9999 damage!
MARKO uses PREFERENCE SWAP!
It's super effective! -8888 HP!
MARKO uses HELPFUL ERRORS!
Cryptic Stack Traces are eliminated!
Developer Sanity restored to MAX!
LEGACY FRAMEWORK was defeated!
You gained: Productivity +9999, Joy +MAX
WORLD 4 - AI COMPANION

Summon Your AI Ally

Marko's clean architecture means AI agents can build, test, and ship modules effortlessly. Your most powerful party member.

> AI_COMPANION.EXE - PARTY MEMBER #2
> Integrate blog with product category pages
Scanning blog and catalog modules...
Creating CategoryPostsPlugin with #[After]...
Adding #[Get] route for /categories/{id}/posts...
Writing Pest tests (8 tests, 21 assertions)...
All tests passing.
Integration ready. No XML. No cache to flush.
> Ship it
Deployed. QUEST COMPLETE! +5000 XP
AI-FRIENDLY
Clean patterns that AI agents understand instantly
NO GENERATED FILES
What you write is what runs. No compiled intermediaries.
SIMPLE PATTERNS
Attributes > abstractions. Less boilerplate, more building.
GUILD HALL

Join the Guild

Marko is early-stage and open source. Join the founding guild. Shape the architecture. Build the future of PHP.

8.5 PHP VERSION
0 XML FILES
0 CACHE FLUSHES
MAX EXTENSIBILITY