19-02-2010, 06:33 PM
(19-02-2010, 05:51 PM)Tho a écrit : Je dois dire que je vois mal comment le développeur peut ne pas vérifier à plusieurs endroits de son appli s'il n'y a pas des erreurs d'accès, et autres petites choses à vérifier un peu partout. Les erreurs d'application sont gérées en dev, mais en production, elles sont généralement tronquées (si mes infos sont bonnes). Pour la maintenance, ça ne m'a jamais vraiment posé de problème, si le log de l'erreur a enregistré toutes les traces..
Regarde l'exemple qui suit. C'est bidon à lire et ça te permettra probablement de cerner les intérêts d'une gestion robuste des erreurs.
## application_controller.rb
class ApplicationController < ActionController::Base
rescue_from User::NotAuthorized, :with => :user_not_authorized
private
def user_not_authorized
flash[:error] = "You don't have access to this section."
redirect_to :back
end
end
## clients_controller.rb
class ClientsController < ApplicationController
# Check that the user has the right authorization to access clients.
before_filter :check_authorization
# Note how the actions don't have to worry about all the auth stuff.
def edit
@client = Client.find(params[:id])
end
private
# If the user is not authorized, just throw the exception.
def check_authorization
raise User::NotAuthorized unless current_user.admin?
end
end
(19-02-2010, 05:51 PM)Tho a écrit : Genre un petit système de news ? (archi simplifié, et je ne met pas les structures des classes)
Code PHP :<?php
if ($_GET["action"] == NewsManager::ACTION_DELETE)
if (isset($_SESSION["user"]) && $_SESSION["user"] instanceof User && $_SESSION["user"]["rang"] == User::ADMIN && NewsManager::exists($_GET["news_id"]))
NewsManager::delete($_GET["news_id"]);
else
header("Location: erreur-500.html");
else if (...)
...
Je ne suis pas sûr de comprendre... Quelques questions pour cerner le fonctionnement de ton architecture.
- UsersManager peut s'apparenter à un modèle ?
- Tu as un contrôleur comme ça par "module" (ici le module "news") puis tu fais un genre de switch sur l'action demandée ?
- Que se passe-t-il après la suppression de la news ? Quelle page est rendue (ou redirigée) ?
- Comment sont gérées les vues dans ton système ? Que contiennent-elles ?
- Comment fais-tu pour la partie "cadre" (les blocs html et head, par exemple) ?
(19-02-2010, 05:51 PM)Tho a écrit : On ne va pas partir en troll "mvc caybien/caypasbien" ^^ Je sais bien que cette architecture convient à un tas de gens, seulement moi, je n'arrive pas à m'y retrouver. Je n'aime pas du tout la structure, c'est trop bien organisé pour moi Je préfère avoir ma bonne vieille page qui appelle une action du manager en fonction d'une variable get (ou post).
Tu es quelqu'un d'intelligent, tu dois savoir qu'un code bien rangé c'est facile à maintenir (cela dit, je suis d'accord pour dire que ça fait beaucoup de fichiers ).
Un poète (en 1996) a dit :
Pascal Obispo a écrit :[...]
Toujours regarder devant soi
Sans jamais baisser les bras, je sais...
C'est pas le remède à tout,
Mais faut s'forcer parfois...
[...]
Bon, je déconne, mais quitte à faire un genre de MVC, autant en faire un sérieux, non ? Ou mieux : en utiliser une implémentation sérieuse.
(19-02-2010, 01:13 PM)Sephi-Chan a écrit : Comme chaque outil, on peut mal s'en servir.. Comme je l'ai dit, on va pas faire un troll là-dessus
Un exemple de mauvais usage de MVC ? Le risque quand on veut utiliser un design pattern, c'est de se gourer de design pattern. Mais là, tu sais déjà lequel utiliser et il y a des exemples d'implémentation à la pelle (d'ailleurs, le tiens semble en être un).
(19-02-2010, 05:51 PM)Tho a écrit : Logique, je cherche juste à progresser
Ca veut dire que j'vais devenir aussi doué que toi dans quelques années ? Bon présage, j'espère x')
Tiens c'est marrant, je suis pas sur de la façon dont je dois le prendre... iffle:
Sephi-Chan