PHP Slim Framework Créer Contrôleur
Je suis en création d'une API à l'aide de la Slim framework. Actuellement, je utiliser un seul fichier à créer la voie et de passer une fermeture à elle:
$app->get('/', function($req, $resp){
//Code...
})
Mais je me rends compte que mon dossier a connu une croissance rapide. Ce que je veux faire est d'utiliser des contrôleurs de la place, donc je vais avoir une classe de contrôleur et il suffit de passer l'instance/méthodes statiques pour la route, comme ci-dessous
class HomeController
{
public static function index($req, $resp){}
}
et passer ensuite la fonction de la route
$app->get('/', HomeController::index);
J'ai essayé ceci, mais il ne fonctionne pas, et je me demande si il ya une manière que je peux l'utiliser pour gérer mes fichiers.
OriginalL'auteur James Okpe George | 2015-12-30
Vous devez vous connecter pour publier un commentaire.
Tournez le régulateur dans un foncteur:
puis route comme ceci:
Pour référence, voir
OriginalL'auteur localheinz
PHP 5.6
Slim 2.6.2
Mise à jour: PHP 5.6 Slim 3.0.0
Le problème avec la classe de routage basé sur la Slim 3.0 est l'accès à
$this
/$app
. Je pense que vous aurez besoin d'utiliserglobal $app
pour y accéder.Dans mon projet de compagnie-je utiliser les groupes de routes avec
require_once
. Quelque chose commeNe semble pas que la beauté qu'elle pourrait l'être avec les classes pures, mais fonctionne comme prévu avec toutes les fonctionnalités accessibles sans code supplémentaire.
lorsque vous utilisez le bon espace de noms et d'utiliser composer, vous ne devez pas appeler require() sur votre propre parce que autoload.php va le faire pour vous.
OriginalL'auteur CrazyCrow
Lisse & court chemin pour utiliser un contrôleur comme un objet (pas de manière statique)
Le Contrôleur\Maclasse est résolu grâce à l'utilisation du PSR autoload
Bien que cela fonctionne, contrôleur de la création de l'instance devrait être fait à l'intérieur de dépendance conteneur d'inscription
OriginalL'auteur Cedric
Voici un exemple:
Contrôleur de
Application
Profit!
Cette méthode est décrite dans la documentation cliquez sur moi
le passage d'un conteneur à un contrôleur est une mauvaise pratique. voir en.wikipedia.org/wiki/Single_responsibility_principle et en.wikipedia.org/wiki/Dependency_injection
Je vous entends. Vous avez raison, que le récipient est trop grand pour glisser dans vos classes.
OriginalL'auteur Ivan Dudarev
Nikic Rapide de l'Itinéraire est très minime routeur, de sorte que certaines des subtilités de la plus grande de cadres sont supprimés. Voici une solution de base:
routes.php
contrôleur
utiliser \Psr\Http\Message\ServerRequestInterface de la Demande;
utiliser \Psr\Http\Message\ResponseInterface comme Réponse;
OriginalL'auteur user3791372