Download the PHP package sugatasei/bredala-router without Composer

On this page you can find all versions of the php package sugatasei/bredala-router. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package bredala-router

Bredala/Router

Routeur de requètes pour PHP : associe un couple méthode + URI à un gestionnaire, puis résout une requète entrante.

Pas de middleware, pas de conteneur d'injection, pas de groupes de routes : uniquement un registre de routes et un résolveur. Le routeur ne lit aucune superglobale, n'émet aucun header et ne produit aucune sortie.

Installation

Claude Code

Ce package fournit un skill Claude Code dans skills/bredala-router/ qui documente les patterns d'usage et les pièges de la librairie (placeholders {nom} et non regex, {all} qui se déploie en plusieurs arguments, run() qui résout sans exécuter, etc.).

Dans un projet qui dépend de sugatasei/bredala-router, copie-le une fois dans .claude/skills/ après composer install pour que Claude Code le charge automatiquement (le nom du dossier doit correspondre au name déclaré dans SKILL.md) :

Router

Bredala\Router\Router Enregistrement et résolution des routes.

Construction

Enregistrement

Toutes ces méthodes sont fluides et retournent static.

Le quatrième argument décide de la nature de la route :

Attention : le test porte sur la véracité de $method. Passer '', 0 ou null produit silencieusement une CallableRoute.

Réenregistrer le même couple méthode + URI écrase la route précédente, sans avertissement.

Wildcards

Les paramètres d'URL s'écrivent {nom}, où nom est une clé de la table de wildcards. Ce ne sont pas des expressions régulières : le motif est échappé par preg_quote() avant substitution.

Table par défaut :

Placeholder Expression régulière Correspond à
{all} (.*) n'importe quoi, y compris /
{any} ([^/]+) un segment de chemin non vide
{id} ([0-9]+) entier non signé
{num} (-?[0-9]+) entier éventuellement négatif, sans décimales
{hex} ([A-Fa-f0-9]+) hexadécimal
{size} (xs\|sm\|md\|lg) l'un de ces quatre littéraux
{uuid} ([a-fA-F0-9]{8}-…-[a-fA-F0-9]{12}) UUID canonique 8-4-4-4-12

Un {nom} absent de la table est traité littéralement : /p/{nope} ne résout que l'URI littérale /p/{nope}.

Résolution

run() cherche d'abord une correspondance exacte, puis parcourt dans l'ordre d'enregistrement les URI contenant {. Les motifs sont ancrés aux deux extrémités : /user/{id} ne correspond ni à /user/42/edit, ni à /user/42/, ni à /user/42?x=1. Il faut donc ne passer que le chemin :

Une correspondance exacte est toujours prioritaire sur un wildcard, quel que soit l'ordre d'enregistrement. Entre deux routes à wildcard, c'est la première enregistrée qui gagne.

Les méthodes HTTP sont sensibles à la casse : run('get', '/') ne trouve pas une route enregistrée par get('/').

run() résout mais n'exécute pas. C'est à l'appelant d'invoquer execute().

Paramètres capturés

Les valeurs capturées sont toujours des chaînes, transmises positionnellement dans l'ordre du motif.

Chaque capture est ensuite découpée sur /, ce qui rend {all} particulier : une seule capture produit plusieurs arguments.

Déclarer le gestionnaire variadique pour les recevoir :

Une capture vide produit un argument chaîne vide : /files/ donne [''], pas []. Les / en début et fin de capture sont supprimés : /files/a/b/ donne ['a', 'b'].

Routes

Bredala\Router\RouteInterface Interface commune, implémentée par RouteAbstract et ses deux sous-classes.

Bredala\Router\RouteAbstract Classe de base. Son execute() lève systématiquement une RouteException ; les deux sous-classes y retombent quand leur gestionnaire est inutilisable.

Bredala\Router\CallableRoute Exécute call_user_func_array() si le gestionnaire passe is_callable(). Accepte une closure, un nom de fonction, [$objet, 'methode'] ou [Classe::class, 'methodeStatique'].

Bredala\Router\ControllerRoute Lit $callback[0] comme nom de classe et $callback[1] comme nom de méthode, fait new $classname puis appelle la méthode avec les arguments.

L'instanciation se fait sans argument de constructeur et à chaque execute(). Il n'y a pas de conteneur d'injection : un contrôleur avec des paramètres de constructeur obligatoires lève une ArgumentCountError, et un nom de classe inconnu une Error — ni l'une ni l'autre n'est enveloppée dans une RouteException. Pour injecter des dépendances, construire l'objet soi-même et l'enregistrer comme callable :

RouteException

Bredala\Router\RouteException Étend \Exception, sans code particulier. Couvre deux situations :

Il n'existe pas de chemin distinct pour un « 405 Method Not Allowed » : une URI qui existe sous un autre verbe est indiscernable d'une URI inexistante.

Comme les deux cas partagent la même exception, un catch englobant run() et execute() signalera une route mal configurée comme une 404. Pour les distinguer, n'encadrer que run().

Utilisation

Tests


All versions of bredala-router with dependencies

PHP Build Version
Package Version
Requires php Version >=8.5
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package sugatasei/bredala-router contains the following files

Loading the files please wait ...