IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> architecture dossiers architecture MVC
Options
toluol
posté 14 Feb 2018, 18:04
Message #1


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 758
Inscrit : 14 Nov 2003
Lieu : Genève
Membre no 11 656



Bonjour,

aha... j'ai l'impression qu'on est peu nombreux à poster des messages (ou des questions) dans cette rubrique de Macbidouille ! ^^
Est-ce que tout le monde sait tout des languages web, ou est-ce qu'ils ont tous abandonnés ? biggrin.gif

Enfin bref...

Ma nouvelle interrogation se porte sur l'architecture MVC, et plus particulièrement la hiérarchie des dossiers. Il en existe plusieurs, notamment celle de Symfony, qui est sans doute une référence :
Code
app/
     class/
          model/
          view/
          controller/
          lib/
          helper/
     template/
     conf/
data/
     sql/
doc/
lib/
     model/
plugins/
public/
     css/
     images/
     js/

... Mais je me pose la question suivante : Je comprends bien l'efficacité d'un tel système, mais je ne vois pas bien comment séparer les différentes app (frontend-backend et toutes autres app qui pourrait tourner sur un serveur)

Imaginons que j'ai un site web, qui a lui même un backoffice (par ex. "admin"), et que je me suis fait un petit programme qui n'a rien à voir avec tout ça (par exemple un petit logiciel de compta) que j'aimerais pouvais atteindre, puis d'autres tests php... (pourquoi pas un site en test d'un client avec un autre backoffice !) Est-ce qu'on peut imaginer ranger tout ça sans que ce soit le gros fichu bordel ? laugh.gif laugh.gif

J'ai un peu peur de ne plus avoir accès à ces différentes parties sur un même serveur si je me mets à cette architecture MVC... Enfin j'imagine que tout tient à ce fichier htaccess... Et je ne comprends pas l'astuce à ce niveau. (s'il y en a une !) Car en architecture MVC, l'url donne souvent : monsite.com/indexController/indexView/param1/param2... Or si je veux accéder à "monsite.com/uneAutreApp", le serveur va vouloir chercher "uneAutreApp" comme un nom de controller, et non comme un répertoire qui aurait sa propre architecture, son dossier public et son dossier app...

Ou bien le mieux est de faire des sous-domaines ? Auriez-vous des conseils à ce propos ? Merci à vous.
Go to the top of the page
 
+Quote Post
Jaypee
posté 14 Feb 2018, 20:21
Message #2


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 341
Inscrit : 29 Aug 2002
Membre no 3 340



Le back-end va exposer des services accessibles à travers des interfaces REST. Les URI REST obéissent à des règles fortes: GET serveur/appli/version/resources/identfiant ou PUT ou POST ou DELETE ou UPDATE, ce sont les verbes HTTP de base qui supportent la sémantique des actions

https://blog.wishtack.com/api-rest-bonnes-p...es-et-securite/

Note: Il peut y avoir plusieurs domaines (ou modèles), le domaine de la BD n'est pas forcément celui de l'appli, et la présentation d'un objet peut demander des infos propres à ce besoin qui n'ont pas besoin d'aller dans la BD. On peut souhaiter avoir des fonctions de "mappage" qui permettent de convertir d'un domaine ou modèle vers un autre.

J-P

Ce message a été modifié par Jaypee - 14 Feb 2018, 20:22.
Go to the top of the page
 
+Quote Post
toluol
posté 14 Feb 2018, 23:32
Message #3


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 758
Inscrit : 14 Nov 2003
Lieu : Genève
Membre no 11 656



Hum... Je te remercie Jaypee, mais je crois que je vais avoir besoin d'un traducteur là... ! ...ou d'une aide supplémentaire...
car je ne sais pas si tu as voulu répondu à ma question, mais (et je te remercie quand même beaucoup pour cela !), tu m'en as apporté d'autres !!!
Mais j'essaie effectivement de trouver des bonnes pratiques (prenant en compte différent aspect : sécurité, côté pratique, modularité, clarté et pérennité de l'architecture pour un environnement multi-app)

- Me conseilles-tu d'associer une architecture MVC et des URI REST ?
- Est-ce compatible ?

Merci encore.

Ce message a été modifié par toluol - 14 Feb 2018, 23:33.
Go to the top of the page
 
+Quote Post
Jaypee
posté 15 Feb 2018, 07:06
Message #4


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 341
Inscrit : 29 Aug 2002
Membre no 3 340



Oui, les REST APIs sont l'archi préférée des applications Internet en général.
Si on veut découpler l'interface utilisateur du back-end, c'est l'option à choisir.
Pourquoi dissocier? Permettre tous les types de clients
- Desktop PC/Mac
- Web
- IOS/Android...

Le back-end est une appli indépendante, c'est elle qui connaît les sources de données, et elle expose des REST APIs. Il existe des frameworks spécialisés dans les APIs REST. Par exemple Vapor 2.0 en Swift si on veut rester dans ce contexte, ou RubyOnRails ou Flask en Python (très simple)
L'autentification et les Roles/Permissions sont fournies par d'autre API REST, d'autres services spécialisé.
Le front-end est une appli MVC qui consomme les APIs REST qui sait manipuler le JSON qui remplace largement l'XML (en fait il ne remplace pas, on a le choix)

Le conseil, rester simples mais coller aux principes de REST et au format recommandé des URI

J-P

Ce message a été modifié par Jaypee - 15 Feb 2018, 07:27.
Go to the top of the page
 
+Quote Post
No6
posté 15 Feb 2018, 15:26
Message #5


Oui ?
*****

Groupe : Membres
Messages : 3 846
Inscrit : 24 Jun 2003
Lieu : BZH
Membre no 8 224



Citation (toluol @ 14 Feb 2018, 18:04) *
Ma nouvelle interrogation se porte sur l'architecture MVC, et plus particulièrement la hiérarchie des dossiers. Il en existe plusieurs, notamment celle de Symfony, qui est sans doute une référence :

... Mais je me pose la question suivante : Je comprends bien l'efficacité d'un tel système, mais je ne vois pas bien comment séparer les différentes app (frontend-backend et toutes autres app qui pourrait tourner sur un serveur)


L'idée d'une architecture servant à la hiérarchie des dossiers, que ce soit pour du MVC ou tout autre chose, c'est fait principalement pour pouvoir s'y retrouver, avant, pendant et après.
Si tu mix dedans plusieurs applicatifs, cela n'invalide pas cette architecture, c'est juste que tu a augmenté la complexité.

Logiquement tu devrai avoir autant de dossiers " app/ " qu'il y a d'applicatifs, et rien d'interdit aussi d'avoir des sous dossiers par App, dans le dossier SQL par exemple.
Ni d'utiliser une logique de prefixage pour identifier les différents applicatifs, etc...

Plus de complexité demande plus de rigueur, voila tout.
Adopter des standards permet d'éviter d'avoir à réinventer la roue (et on pense rarement à tout).

sans négliger le fait qu'il s'agit aussi du partage d'un savoir faire collectif, ce qui relève d'une certaine beauté.

Ce message a été modifié par No6 - 15 Feb 2018, 19:17.


--------------------
"Je sais que vous croyez comprendre ce que vous pensez que j'ai dit, mais je ne suis pas sûr que vous réalisiez que ce que vous avez entendu n'est pas ce que je pense."
(Alan Greenspan)
Go to the top of the page
 
+Quote Post
ntx
posté 15 Feb 2018, 18:42
Message #6


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 459
Inscrit : 19 Aug 2004
Lieu : 92
Membre no 22 254



Bonjour,
Citation (toluol @ 14 Feb 2018, 18:04) *
Il en existe plusieurs, notamment celle de Symfony, qui est sans doute une référence

Regarde aussi du côté de Angular, associé à Typescript (une version plus propre de Javascript) et d'une librairie comme Bootstrap ça donne des choses pas mal.
Il existe notamment des commandes shell qui te génèrent l'arbo de ton projet, ça peut te donner des idées.

Ce message a été modifié par ntx - 15 Feb 2018, 18:43.
Go to the top of the page
 
+Quote Post
toluol
posté 15 Feb 2018, 22:02
Message #7


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 758
Inscrit : 14 Nov 2003
Lieu : Genève
Membre no 11 656



Merci à tous pour vos réponses.

Une chose que je n'ai pas précisé, c'est ce que j'utilise comme language : principalement du php avec des classes, du jquery et des requêtes ajax sur une base mysql. Et effectivement bootstrap, pour une mise en forme rapide. Peut-être qu'à l'avenir, j'essayerai de développer des apps "tout javascript" pour pouvoir les porter vers iOS/Android (et à ce moment, j'opterai peut-être pour angular/cordova...), mais mise à part cela, je n'envisage pas plus complexe !

En tout cas, oui... je comprends bien l'utilité d'avoir une hiérarchie claire de dossiers pour s'y retrouver... et que la hiérarchie est surtout là pour aider le développeur.

Donc pour en revenir à ma question de base, devrais-je, selon vous, séparer mes apps de cette façon :
Code
app/
    app1
          class/
               model/
               view/
               controller/
          conf/
    app2
          class/
               model/
               view/
               controller/
          conf/
public/
     web1/
          index.php
          css/
          images/
          js/
     web2/
          index.php
          css/
          images/
          js/

est-ce que ceci a du sens pour vous ?
Go to the top of the page
 
+Quote Post
ntx
posté 15 Feb 2018, 22:44
Message #8


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 459
Inscrit : 19 Aug 2004
Lieu : 92
Membre no 22 254



Les classes du modèle sont souvent utilisées dans plusieurs vues, donc je les mets dans un répertoire au niveau de l'application.
Une vue et son contrôleur sont en général implémentés dans un fichier chaque, donc les mettre dans des répertoires spécifiques alourdit l'arborescence du projet.
Il te manque un répertoire pour les services qui implémentent toutes les fonctions communes et transverses comme par exemple la persistence de ton modèle en BDD.
Go to the top of the page
 
+Quote Post
Jaypee
posté 16 Feb 2018, 07:01
Message #9


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 341
Inscrit : 29 Aug 2002
Membre no 3 340



De la doc en français sur Silex, le framework PHP basé sur Symphony pour exposer des interfaces REST
https://openclassrooms.com/courses/evoluez-...professionnelle

J-P

Ce message a été modifié par Jaypee - 16 Feb 2018, 07:05.
Go to the top of the page
 
+Quote Post
toluol
posté 4 Mar 2018, 20:09
Message #10


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 758
Inscrit : 14 Nov 2003
Lieu : Genève
Membre no 11 656



Bonsoir,

Désolé, j'ai mis du temps à répondre à vos dernières remarques car j'ai essayé de me former à Silex, Composer, Twig... selon les recommandations de Jaypee avec les cours d'openclassrooms. (Merci d'ailleurs à lui !)

J'ai lu la totalité de ces cours très intéressants, mais... en faisant des tests en parallèle sur mon serveur, j'ai été bloqué à l'itération 9. N'étant pas familier avec les namespaces et les messages d'erreur de Silex, je ne comprends pas pour quelles raisons j'ai ce message d'erreur tenace :
Fichier joint  silex.png ( 169.91 Ko ) Nombre de téléchargements : 7

...alors que j'ai exactement les mêmes fichiers et structures que les cours, la même base de données, et que j'ai utilisé Composer de la façon prescrite pour créer le dossier vendor.
L'application semble avoir un problème à trouver la classe "MessageFormatter" et il est vrai qu'en faisant une recherche multi-fichiers avec "class MessageFormatter", je ne trouve rien... ! (Je ne comprends vraiment plus rien)

M'arrachant un peu les cheveux sur cette formation, je me demandais s'il existait une bonne âme pour me sortir de ce "%?$^#... Je croyais que les frameworks étaient conçu pour nous aider, mais là, je sue sur ces problèmes... ! wacko.gif
Go to the top of the page
 
+Quote Post
yponomeute
posté 9 Mar 2018, 22:44
Message #11


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 4 517
Inscrit : 26 Jan 2011
Lieu : Pollachius virens
Membre no 164 083



Salut,

Je ne voudrais pas te décourager, mais utiliser un framework sans comprendre comment il fonctionne ne va pas t'aider bien au contraire. Ce sont aujourd'hui de véritables usines à gaz, et la plupart sont conçus pour construire des projets de "grande envergure".
Il existe des micro frameworks bien plus simples et faciles à appréhender que les mastodontes symfony, zend, laravel etc. Si par exemple le framework que tu compte utiliser est composé de 50 ou 100 fois plus de fichiers que le nombre de pages de ton application web, il faut sérieusement se poser la question de la pertinence de l'utilisation de ce framework.

Pour ton problème de message d'erreur la solution se trouve sur github, enfin le problème est référencé, j'ai pas tout lu : https://github.com/silexphp/Silex/issues/1621
Go to the top of the page
 
+Quote Post
toluol
posté 10 Mar 2018, 00:44
Message #12


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 758
Inscrit : 14 Nov 2003
Lieu : Genève
Membre no 11 656



Citation (yponomeute @ 9 Mar 2018, 22:44) *
Je ne voudrais pas te décourager, mais utiliser un framework sans comprendre comment il fonctionne ne va pas t'aider bien au contraire. Ce sont aujourd'hui de véritables usines à gaz, et la plupart sont conçus pour construire des projets de "grande envergure".
Il existe des micro frameworks bien plus simples et faciles à appréhender que les mastodontes symfony, zend, laravel etc. Si par exemple le framework que tu compte utiliser est composé de 50 ou 100 fois plus de fichiers que le nombre de pages de ton application web, il faut sérieusement se poser la question de la pertinence de l'utilisation de ce framework.


unsure.gif euh... ben justement... Jaypee m'a proposé de regarder Silex qui est un micro-framework (même s'il est basé sur Symfony), et j'apprends à l'utiliser...
Je ne souhaite justement pas utiliser un gros framework ! (Je sais que cela me desservirait plus qu'autre chose) Je souhaite seulement structurer mes projets pour développer plus rapidement.
Silex me semblait bien foutu... jusqu'à ce petit problème que je ne parviens pour l'instant pas à résoudre.

Je vais regarder ton lien GitHub. Merci beaucoup !
J'avais déjà trouvé une page qui traitait de ce même problème, mais hélas, leur solution ne changeait rien pour moi.

Ce message a été modifié par toluol - 10 Mar 2018, 00:48.
Go to the top of the page
 
+Quote Post
yponomeute
posté 10 Mar 2018, 07:27
Message #13


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 4 517
Inscrit : 26 Jan 2011
Lieu : Pollachius virens
Membre no 164 083



Je ne pense pas qu'on puisse qualifier Silex de micro framework, enfin tout dépend de ce qu'on appelle un micro framework.

Un "micro framework" pour moi c'est plutôt http://flightphp.com/ qui est un framework qui se résume à une quinzaine de fichiers, rien à voir avec Silex.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 27th May 2018 - 14:36