View Issue Details

IDProjectCategoryView StatusLast Update
0001835Common[All Projects] Generalpublic2016-11-13 17:05
ReporterXenosAssigned ToXenos 
PriorityurgentSeverityfeatureReproducibilityN/A
Status CloseResolutionfixed 
Product Version1.0.4 
Target VersionFixed in Version3.0.0 
Summary0001835: Les handlers doivent être de vraies facades
DescriptionLà, ce sont un peu des tas de boue-fourre-tout.

Il me faut rectifier les choses avant que ca ne dégénère, et séparer clairement la partie factory (qui fera ses décorations), le formatter HTML, et le handler à proprement parler (ainsi que la factory des URIs?!). A rajouter à cela, une facade pour accéder à tout ce petit monde, facade qui sera donc l'élément appelé par le reste de l'univers.
TagsNo tags attached.
Attach Tags

Relationships

child of 0001841 CloseXenos Comment gérer les input exceptions? 
child of 0001842 CloseXenos Appliquer les changements de structure à tous les projets 

Activities

Xenos

Xenos

2016-10-30 21:40

administrator   ~0002709

J'isole donc clairement chaque rôle dans une classe dédiée:
• Handler = Controller
• HtmlFormatter = vue (pour le HTML), à imbriquer dans un template HTML
• UriFactory = construire les URI qui pointent vers ce handler
• Parameters = Récupérer les données entrantes du handler et les valider
• Factory = Créer le Handler avec ses décorateurs
• Facade = Instancier les différents composants cités ci-dessus

De plus, j'ai clairement séparé le htaccess généré du htaccess de base (pour que les deux ne se marchent pas dessus.

Egalement, je laisse tomber le fichier de signature des sources PDO générées: je versionne tous les PDO générés, et point barre. C'est plus lourd, mais plus simple (et quand les classes anonymes seront là, je n'aurai plu de problème de lourdeur).

Je fais en plusieurs phases:
- D'abord, je commit le résultat brut (Eclerd)
- Puis je ferai des classes centralisées pour certains éléments récurrents (ie: une classe Parameters qui fourni juste un ID, une classe UriFactory qui fait de même, des ParametersRetriever pour les types de données usuels, etc)
- Puis je dégagerai tout le legacy associé
- Et enfin, j'appliquerai les changements à tous les autres projets
- Une fois cela fait et testé, je déploie le tout avant de rattaquer des tickets courants.
Xenos

Xenos

2016-10-31 09:55

administrator   ~0002710

Last edited: 2016-11-06 23:50

Les différentes classes d'un package "Handler" sont donc considérées privées: cela me permettra d'en faire des anonymous class plus tard (PHP 7) et cela m'évitera d'aller foutre le boxon dans le code: chaque package "handler" est un peu un micro-service (nano-service) qui traite la requête demandée. Si je veux m'en servir, je dois donc utiliser la Facade du service.

Un check (commit-hook) se charge de s'assurer que je n'ai pas utilisé les classes "privées" d'un package handler dans un autre package handler (seule la facade d'un handler peut donc être utilisée ailleurs dans le projet).
Xenos

Xenos

2016-11-01 15:37

administrator   ~0002712

Last edited: 2016-11-06 23:50

C'est maintenant bien mieux structuré: je n'ai plus des responsabilités qui se marchent dessus, et PHP7 limitera énormément le nombre de fichiers.

Il y a surement matière à améliorer encore (surtout le côté gestion des exceptions d'input), mais cela me semble suffisant pour l'instant (sauf les input exceptions donc).

A appliquer ensuite à tous les projets.

Issue History

Date Modified Username Field Change
2016-10-28 23:05 Xenos New Issue
2016-10-28 23:05 Xenos Status New => Accepted
2016-10-28 23:05 Xenos Priority normal => urgent
2016-10-30 08:30 Xenos Assigned To => Xenos
2016-10-30 08:30 Xenos Status Accepted => In progress
2016-10-30 21:40 Xenos Note Added: 0002709
2016-10-31 09:55 Xenos Note Added: 0002710
2016-11-01 15:37 Xenos Note Added: 0002712
2016-11-01 15:37 Xenos Status In progress => Ready
2016-11-01 15:37 Xenos Resolution open => fixed
2016-11-01 15:44 Xenos Relationship added child of 0001841
2016-11-01 15:45 Xenos Relationship added child of 0001842
2016-11-06 23:49 AutoUpdater Status Ready => Resolved
2016-11-06 23:50 AutoUpdater Fixed in Version => 3.0.0
2016-11-13 17:05 Xenos Status Resolved => Close