2010-09-02 4 views
0

J'écris mon propre petit MVC et j'ai une question ... Je passe $_SERVER['REQUEST_URI'] à la classe Router qui me renvoie le contrôleur, c'est l'action et le tableau des paramètres GET. (Par exemple routeur a dit que je devrais appeler App_Controller->index()). Donc, je devrais créer l'instance de App_Controller et appeler la méthode index(). Donc, je fais quelque chose comme $controller = new $controller_name etc Mais que se passe-t-il si le contrôleur n'est pas trouvé par spl_autoload_register() (J'utilise Autoload).Appel d'un contrôleur non existant, comment générer une exception?

Comment puis-je générer une exception sur le fait que le contrôleur est introuvable? Ou peut-être que je fais quelque chose de mal?

Merci.

Répondre

0

Vous pouvez le vérifier en utilisant class_exists qui a un paramètre $ autoload (défini sur true par défaut, et essaie donc de charger automatiquement la classe).

if(!class_exists($controller_name)) throw new Exception('Controller does not exist'); 
$controller = new $controller_name(); 
+0

Très bien, merci beaucoup! Absolument la même chose à propos de la vérification de l'existence de la méthode de classe, n'est-ce pas? (en utilisant 'method_exists') – Kirzilla

+0

@Kirzilla effectivement, oui, fonctionne de la même manière et considère le chargement automatique. Je l'ai utilisé moi-même dans une situation similaire (et j'ai été surpris qu'il fonctionne avec le chargement automatique;)). – Max

Questions connexes