Installation
phil/bot-detection-bundlePrérequis
| Prérequis | Contrainte | Raison |
|---|---|---|
| PHP | >=8.5 | Le code et ses tests utilisent la syntaxe de PHP 8.5 (new Foo()->bar() sans parenthèses). |
symfony/dependency-injection | ^8.2 | PhilBotDetectionBundle étend AbstractBundle. |
symfony/config | ^8.2 | Importé nulle part, mais AbstractBundle implémente une interface de symfony/config, que symfony/dependency-injection n'exige qu'en développement. Sans lui, la classe du bundle ne peut pas se charger. |
Rien d'autre : aucune extension PHP au-delà de celles par défaut, aucun composant HTTP, de cache ou de métriques. L'adaptateur de compteur qu'écrit l'application apporte ses propres dépendances (extension-points.md).
Installer
Le bundle est en 0.1.x-dev (dev-main est un alias de 0.1.x-dev) et n'est pas encore publié sur Packagist. D'ici
là, déclarez un dépôt path vers une copie de travail locale, ou un dépôt vcs :
{
"repositories": [
{ "type": "path", "url": "../phil-bundles/packages/bot-detection-bundle" }
]
}
composer require phil/bot-detection-bundle:^0.1@dev
Les réglages "minimum-stability": "dev" et "prefer-stable": true du bundle ne s'appliquent que lorsqu'il est le
paquet racine (pour exécuter ses tests seul) ; une application a besoin de @dev sur la contrainte, comme ci-dessus, ou
des mêmes réglages de stabilité.
Enregistrer le bundle
// config/bundles.php
return [
// ...
Phil\BotDetectionBundle\PhilBotDetectionBundle::class => ['all' => true],
];
L'enregistrer ne change rien aujourd'hui : le bundle ne déclare aucun service, aucun paramètre ni aucune clé de
configuration (configuration.md). Ses classes fonctionnent par le seul chargeur automatique de
Composer, et son contrôleur Stimulus verdict est trouvé par StimulusBundle grâce à assets/package.json, que le
bundle soit enregistré ou non. L'enregistrer réserve l'alias de configuration phil_bot_detection pour les versions
futures.
Un bundle qui ne fait que réutiliser ses types — phil/analytics-bundle utilise Verdict et RobotVerdictCounter —
n'a pas besoin non plus qu'il soit enregistré.
La suite
- Lisez verdict.md et friction.md pour savoir ce qu'est un verdict et ce qu'il peut faire.
- Écrivez un adaptateur
RobotVerdictCounterpar surface (extension-points.md). - Branchez
VerdictHandlersur chaque surface qui reçoit un verdict (verdict-handling.md). - Placez le contrôleur
verdictsur les pages et les formulaires qui envoient un verdict (browser-signals.md). Une requête venue d'une surface où il n'est pas placé, ou d'un navigateur qui bloque les scripts, ne porte aucun verdict et vautVerdict::Unknown: choisissez la politique de friction en conséquence.