Cette partie de la documentation consacrée au Framework décrit le fonctionnement du CMS en interne et s'adresse aux développeurs curieux et expérimentés et non pas aux utilisateurs du CMS. Pour cette raison, la documentation complète du Framework n'est disponible et maintenue qu'en Anglais : The Framework
Les contrôleurs
Définitions
Les contrôleurs sont des classes PHP qui sont responsables de la gestion des requêtes HTTP et de la génération des réponses correspondantes. Ils sont situés dans le répertoire src/Controller
.
Les méthodes de ces contrôleurs sont responsables de la gestion des requêtes HTTP. Elles doivent retourner une instance de la classe Qwwwest\Namaskar\Response
, représentant la réponse HTTP renvoyée par le contrôleur.
les attributs
Les attributs sont une nouvelle fonctionnalité introduite dans le langage dans PHP8 qui permet d'ajouter des métadonnées et des annotations à des éléments du code tels que les classes, les propriétés, les méthodes et les paramètres de fonction.
Un attribut est un commentaire qui permet d'ajouter des informations supplémentaires à votre code pour fournir des instructions spécifiques aux outils de développement, aux frameworks ou aux bibliothèques qui analysent et utilisent ces attributs. Les attributs peuvent être utilisés pour diverses fonctionnalités, telles que la configuration des routes, la validation des données, la définition de contraintes, la gestion des autorisations, etc.
Les attributs sont définis en utilisant le préfixe #[NomAttribut]
, suivi de parenthèses, éventuellement avec des paramètres, pour spécifier les détails supplémentaires. L'exemple suivant va rendre tout cela plus clair :
Les contrôleurs utilisent des attributs pour définir les routes. Vous pouvez utiliser l'attribut #[Route]
pour spécifier le chemin de la route, les méthodes HTTP acceptées et d'autres options telles que les exigences de validation et les noms de route. Voici un exemple d'utilisation de l'attribut #[Route]
:
<?php
namespace App\Controller;
use Qwwwest\Namaskar\Response;
use Qwwwest\Namaskar\AbstractController;
class MyController extends AbstractController
{
#[Route('/my-route', methods: ['GET'], name: 'my_route')]
public function myRoute(): Response
{
// Processing logic
return new Response('Hello, Route!');
}
}
Un Objet Qwwwest\Namaskar\Response
est renvoyée par le contrôleur. On utilise cette classe pour spécifier le contenu, les en-têtes, les codes de statut et d'autres détails de la réponse.
Redirections
Pour effectuer une redirection dans vous pouvez utiliser la méthode redirect()
de l'objet de réponse ($this->response
) dans vos contrôleurs. Voici un exemple de redirection :
<?php
namespace App\Controller;
use Qwwwest\Namaskar\Response;
class MyController extends AbstractController
{
public function redirectToHome(): Response
{
return $this->response->redirect('/');
}
}
Dans cet exemple, la méthode redirectToHome()
redirige vers la page d'accueil en utilisant la méthode redirect()
de l'objet de réponse.
Gestion des erreurs 404
Pour gérer les erreurs 404, vous pouvez utiliser une méthode spéciale dans votre contrôleur :
<?php
namespace App\Controller;
use Qwwwest\Namaskar\Response;
class ErrorController extends AbstractController
{
public function notFound(): Response
{
$content = 'Page not found';
$statusCode = 404;
return new Response($content, $statusCode);
}
}
Dans cet exemple, la méthode notFound()
génère une réponse avec le contenu "Page not found" et le code de statut 404, indiquant une erreur 404.