PHPAML PLATFORM

Cinq composants. Un seul flux PHP.

Framework, View, Engine, Data et i18n restent utilisables séparément. Assemblez uniquement les capacités nécessaires à votre application, sans imposer toute la plateforme.

01

PHPAML Framework

HTTP, routes, MVC, middlewares, injection, validation et sécurité avec un cycle de requête explicite.

02

AML View

Pages déclaratives, composants, layouts, état réactif, propriétés calculées et effets.

03

AML Engine

Événements, collections et navigation client sans rechargement complet ni JavaScript manuel.

04

PHPAML Data

Entités typées, requêtes, relations, migrations et transactions SQL ou MongoDB.

05

PHPAML i18n

Catalogues JSON, paramètres, pluriels, résolution de langue et langues de secours.

FRAMEWORKMovieRoute.php
phpaml — zsh
final class MovieRoute extends Route
{
    protected string $prefix = '/api/v1';

    protected function routes(): void
    {
        $this->get('/movies', [MovieController::class, 'index']);
        $this->get('/movies/{id}', [MovieController::class, 'show']);
    }
}
VIEWReactiveCounter.php
phpaml — zsh
final class Counter extends Page
{
    #[State] public int $count = 0;

    public function body(): View
    {
        return VStack(
            Heading('AML View')->size(42),
            Text(StateRef::to('count', $this->count)),
            Button('Add one')->onClick(
                ClientAction::increment('count')
            )
        )->gap(16);
    }
}
ENGINESearchPage.php
phpaml — zsh
#[Effect(
    dependencies: ['query'],
    debounce: 300,
    concurrency: 'latest'
)]
protected function search(): EffectPlan
{
    return Effects::run(
        ClientAction::set('loading', true)
    );
}

Button('Account')->onClick(
    Navigate('/account')
);
DATAUserRepository.php
phpaml — zsh
$users = $db->users()
    ->where('active', '=', true)
    ->orderBy('name')
    ->limit(20)
    ->all();

$db->transaction(function ($db) use ($lesson) {
    $db->lessons()->add($lesson);
    $db->saveChanges();
});
I18Nnavigation.json
phpaml — zsh
aml install i18n
aml i18n:add fr

// src/locales/fr/navigation.json
{
  "account": "Mon compte",
  "lessons": "Mes leçons"
}

Text(__('navigation.account'));