The core of the ImpulsePHP framework: component engine, rendering system, state management, etc.

Maintainers

Package info

github.com/ImpulsePHP/core

pkg:composer/impulsephp/core

Statistics

Installs: 16

Dependents: 4

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0-beta 2025-08-03 09:20 UTC

This package is auto-updated.

Last update: 2026-04-11 17:12:40 UTC


README

impulsephp/core est le socle du framework ImpulsePHP. Il fournit :

  • le bootstrap de l'application ;
  • le conteneur de services ;
  • les providers ;
  • la couche HTTP ;
  • les pages, composants et layouts ;
  • les renderers ;
  • le cache HTML ;
  • les collecteurs d'assets, logs et profils.

Installation

composer require impulsephp/core

Configuration minimale

<?php

return [
    'template_engine' => null,
    'template_path' => 'views',
    'providers' => [],
    'middlewares' => [],
    'locale' => 'fr',
    'supported' => ['fr', 'en'],
    'cache' => [
        'enabled' => true,
        'ttl' => 600,
    ],
    'devtools' => false,
];

Démarrage rapide

use Impulse\Core\App;

require_once __DIR__ . '/vendor/autoload.php';

App::boot();

Exemple de page

namespace App\Page;

use App\Layout\DefaultLayout;
use Impulse\Core\Attributes\PageProperty;
use Impulse\Core\Component\AbstractPage;

#[PageProperty(
    route: '/',
    name: 'home',
    title: 'Accueil',
    layout: DefaultLayout::class
)]
final class HomePage extends AbstractPage
{
    public function template(): string
    {
        return <<<HTML
            <h1>Accueil</h1>
        HTML;
    }
}

Exemple de composant

namespace App\Component;

use Impulse\Core\Attributes\Action;
use Impulse\Core\Component\AbstractComponent;

final class CounterComponent extends AbstractComponent
{
    public function setup(): void
    {
        $this->state('count', 0);
    }

    #[Action]
    public function increment(): void
    {
        $this->count++;
    }

    public function template(): string
    {
        return <<<HTML
            <button>{$this->count}</button>
        HTML;
    }
}

HTTP

Redirection simple

use Impulse\Core\Http\Response;

return Response::redirect('/login');

Redirection par nom de page

return Response::redirectToPage('login');

Message flash

return Response::redirectToPage('login')
    ->withFlash('registered', '1');

Puis sur la requête suivante :

$registered = $request->getFlash('registered');

DevTools provider

Pour initialiser les DevTools dans un projet :

return [
    'env' => 'dev',
    'devtools' => [
        'enabled' => true,
        'address' => 'tcp://127.0.0.1:9567',
    ],
    'providers' => [
        Impulse\Core\Provider\DevToolsProvider::class,
    ],
];

Documentation détaillée

La documentation détaillée est disponible dans docs/.

Principaux guides :

Tests

composer test

Licence

MIT