Frameworks MVC avec code maison. Quelle Router ?

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour à tous, je viens prendre vos conseils Svp:

J'ai créer un Frameworks MVC avec du code maison. Mon router marche bien. Mais mon router accepte que POST et GET. Je n'ai pas PUT et DELETE…

Pour des projets pro, pensez-vous que ça suffit ? Ou vous me conseillez de me tourner vers une librairie (Alto router ? Slim ? …) ?

Merci beaucoup.

+0 -0

Si tu dois pouvoir développer une API REST tu auras besoin des verbes PUT (éventuellement PATCH) et DELETE, c'est une évidence.

Pour un projet pro, c'est pas sérieux du tout.

Je (mais c'est plus ma façon de voir le truc) me sers aussi de HEAD assez souvent. Les autres verbes sont plutôt utilisés "plus bas niveau" (OPTIONS, TRACE, …)

Honnêtement un router qui ne gère que deux méthodes HTTP, j'aurais du mal (en tant qu'utilisateur de ton framework) à comprendre pour quelle raison. Pourquoi deux méthodes HTTP ?

Happiness is a warm puppy

+0 -0
Auteur du sujet

Honnêtement un router qui ne gère que deux méthodes HTTP, j'aurais du mal (en tant qu'utilisateur de ton framework) à comprendre pour quelle raison. Pourquoi deux méthodes HTTP ?

Javier

Merci pour vos réponses. Pourquoi que POST et GET? Car ce frameworks, actuellement me sert que pour site vitrine (avec CMS fait maison basé sur mon frameworks). Donc j'ai besoin que de GET et de POST. Et je ne suis pas sur d'avoir actuellement les compétences pour développer un gros router qui gère aussi PUT, DELETE… (J'ai débuté la programmation en Février).

J'envisage d'utiliser mon Frameworks pour un projet Pro, donc voilà pourquoi pour le routing j'envisage de me tourner vers un librairie (fait par des développeurs largement meilleurs que moi).

Lumen c'est trop gros pour ce que dont j'ai besoin.

Silex, je 'ai essayé vite fait hier soir, j'ai pas trop aimé. Car on ne peut visiblement pas faire ceci :

1
2
3
<?php
$router->get('/contact', 'ContactController@getContact', 'nom_de_la_route');
$router->post('/contact', 'ContactController@postContact');

On est visiblement obligé de coder beaucoup de lignes de code pour chaque route.

Je pense me tourner vers Slim. Mais avec Slim, j'ai l’impression qu'on est obligé aussi de faire ceci (c'est déjà mieux que Silex):

1
2
3
4
5
6
<?php
// ceci est le Fichier routes.php
$app->get('/article/{slug}', function ($request, $response, $args) {
    $classe = new App\Http\Controllers\Site\ArticleController();
    $classe->show($args['slug']);
})->setName('nom_de_la_route');

Merci

Édité par stephweb

+0 -0
Staff

Moi j'utilise ce petit router : http://altorouter.com/ . Il faut juste que tu codes toi-même la fonction de processing, il donne un exemple de code ici http://altorouter.com/usage/processing-requests.html .

Exemple :

1
2
3
<?php
$router->map('GET|POST','/admin.htm',       'CtrlAdmin#displayIndex',   'admin');
$router->map('GET|POST','/admin/logout.htm',    'CtrlAdmin#logout',     'logout');

Tu peux facilement coder la fonction pour qu'elle reconnaisse la structure Class@Method (ou avec un # comme j'utilise moi)

Édité par Thunderseb

Responsable de la validation - TodoFox - Le JavaScript, c'est bon, mais pas jQuery ! Séries

+0 -0
Auteur du sujet

Du coup j'ai choisi Slim. Dans mes routes, je me suis codé une petite function:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<?php
/**
* @param string $classMethod - Classe et sa method
* @param $arguments - Eventuels $request, $response, $args des closures
*/
function load($classMethod, $arguments=null) {
    $instance = explode('@', $classMethod);

    $class = new $instance[0]();

    if ($arguments) {
        return $class->$instance[1]($arguments);
    }
    return $class->$instance[1]();
}

qui me permet de faire ceci:

1
2
3
4
<?php
$app->get('/', function () {
    load('App\Http\Controllers\Site\Pages\HomeController@getHome');
})->setName('home');

Au lieu de ceci à chaque fois:

1
2
3
4
5
<?php
$app->get('/', function () {
    $class = new App\Http\Controllers\Site\Pages\HomeController();
    $class->getHome();
})->setName('home');

Et le router de Slim 3, me parait + poussé que Alto Router. Merci à tous

Édité par stephweb

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte