Bonsoir,

Voilà j'ai une question simple pour ceux qui connaissent :

Quelle est la différence entre un router et un dispatcher.
Je fais un contrôleur frontal mais ensuite je ne sais pas trop la différence entre les deux vu que le router est censé rerouter vers une ressource et que le dispatcher c'est la même (en quelques sorte).

Je sais que le router est censé rediriger vers une ressource en fonction des paramètres qu'il reçoit et que le dispatcher assure cette redirection mais j'ai du mal avec la manière de l'implémenter.

J'ai beau chercher sur le net je ne trouve pas d'explications convenantes.

Merci de partager votre point de vue.

Juste manière je vous donne mon front controller :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php

final class front_controller
{
    private static $instance;
    private $i_filters, $router, $dispatcher;

    private function __construct()
    {
        $this->router = new 
    }

    private function __clone() {}

    public static function get_instance()
    {
        if ( ! self::$instance instanceof self ) self::$instance = new self;
        return self::$instance;
    }
    
    public function run()
    {
        foreach( $this->i_filters as $filter )
        {
            $filter->pre_process();
        }
        
        // ICI MON ACTION VIA LE ROUTER OU LE DISPATCHER
        
        foreach( array_reverse( $this->i_filters ) as $filter )
        {
            $filter->post_process();
        }
    }
    
    public function set_filter( intercepting_filter $filter )
    {
        $this->i_filters[] = $filter;
    }
    
    public function rem_filter( intercepting_filter $filter )
    {
        foreach( $this->i_filters as $key => $value )
        {
            if ( $filter == $value ) unset($this->i_filters[$key]);
        }
    }
}
Comme vous pouvez le voir j'ai implémenté le patron "intercepting filters" que je trouve très intéressant pour un contrôleur frontal. A l'endroit où j'ai placé le commentaire je pensais utiliser l'injection de dépendances pour placer mon router ou mon dispatcher, en fonction que je souhaite utiliser l'uri, les données post ou get pour mon action (au choix).

Le problème c'est que j'ai du mal à voir la différence entre router et dispatcher. J'ai beau regarder le ZF ou d'autres frameworks, je ne trouve pas tout ça très clair.

Merci pour vos éclaircissements ... peut-être quelques exemples ou autres ....