6
votes

Architecture d'applications PHP très complexes?

Je veux savoir quelles développeurs de stratégies d'architecture PHP utilisent dans des applications PHP complexes. Jusqu'à présent, je connais la structure MVC qui consiste en modèles, vues et contrôleurs (et plug-ins de contrôleur qui manipulent avec des tâches communes telles que le contrôleur d'accès utilisateur). Je connais des bonnes frayères de PHP qui rend certaines choses courantes plus facilement .Mais le problème commence lorsque je suis une chose sur des applications PHP énormes et complexes. Parce que dans ces applications, il y a beaucoup de choses à faire ou beaucoup de penser à vérifier, donc je ne peux pas décider quel code devrait être où.

Pensez à une application Magento, c'est une application très énorme. Lorsque j'examine le code source d'application, je ne peux pas comprendre la stratégie de conception. Je sais que certaines stratégies de conception sont parfaites peuvent facilement gérer facilement des applications PHP très importantes, car elles ne peuvent pas construire une application aussi énorme avec une stratégie de conception très faible. La stratégie de conception devrait supporter plus que vous ne le souhaitez, afin que vous puissiez améliorer votre code et application facilement

Pour résumer, je veux comment puis-je créer des applications plus grandes. Maintenant, les stratégies de conception que j'utilise dans mes applications me limite, je ne peux donc pas créer d'applications plus complexes. Je veux savoir quelle stratégie de conception peut gérer des applications complexes.

Je sais que c'est une question très abstraite, mais c'est parce que maintenant mon fond de PHP provenant d'un passe-temps amateur et non d'universitaire. Je veux faire plus, mais je suis quelque part où je ne peux pas aller plus loin, car je ne peux pas trouver plus d'informations complexes sur le codage. Peu importe, je veux savoir des stratégies de conception pour des applications PHP complexes telles que Magento.

Peut-être que les stratégies de conception que je connaisse (MVC, Cadres CI Cake ...) peuvent gérer des applications plus complexes que je pense ..

S'il y a des erreurs dans mes questions, n'hésitez pas à les corriger, désolé pour mon anglais inadéquate ..


0 commentaires

7 Réponses :


1
votes

C'est en effet très abstrait question et "très complexe" n'est pas très spécifique. Quand j'entends des gens parler d'applications "complexes", je l'associe avec

a) quelqu'un utilise une architecture complexe pour un problème simple. Par exemple. en utilisant chaque modèle de conception et cadre qui sonnait froid.

B) Quelqu'un a essayé d'étreindre des tonnes d'usecase totalement différente dans une application historiquement développée, de créer et d'utiliser des interfaces exclusives et sans papiers, tout aussi étroitement que possible. Malheureusement, peut construire d'énormes applications avec une mauvaise stratégie de conception et c'est ce qui les rend complexes.

c) systèmes hérités et intégration du système hérité (OK voir b)

Magento peut être une grande application, mais le framework sous-jacent est toujours le Zend Framework , principalement son MVC partie. La lecture de la documentation de Zend_Framework vous aidera également à comprendre également l'architecture de Magentos (je ne le recommanderai pas l'inverse en essayant de creuser dans la framework Zend via la source de Magento). Je recommanderais de commencer à créer une application plus importante avec l'un des cadres MVC vous-même, car c'est le meilleur moyen d'apprendre l'architecture et ses avantages et où sont les limites.


0 commentaires

2
votes

Quels cadres avez-vous examiné? Examiner Symfony, Zend Framework et CakePHP si vous ne l'avez pas déjà fait. Et par examiner, je veux dire réellement écrire des applications de taille moyenne à l'aide de ces cadres. Le code de lecture simplement ne suffit souvent pas pour obtenir une compréhension de la façon dont cela fonctionne. Vous devez souvent l'utiliser et essayer de le modifier.

Vous pouvez également consulter le livre PHP 5 Modèles d'objets et pratique Pour certaines idées de stratégies de conception que vous pouvez appliquer à votre demande. Vous pouvez également apprendre un peu en étudiant des cadres écrits dans d'autres langues. Les concepteurs de nombreux cadres PHP ont été fortement inspirés par RUBY sur rails, par exemple.


0 commentaires

7
votes

Je pense que la création d'applications d'entreprise est un problème dans n'importe quelle langue, et les modèles de conception pouvant être mis en œuvre sont en réalité agnostique linguistique.

Je vous recommanderais vivement de vous familiariser avec des modèles d'architecture d'applications d'entreprise par Martin Fowler. Il s'agit du travail seminal de tous les autres livres que vous pourriez récupérer ultérieurement couvrant les mêmes concepts dans un format spécifique à la langue, et si vous souhaitez vraiment comprendre ce qui est requis pour créer des applications robustes et évolutives sur le Web, vous aurez besoin de se familiariser avec ce livre.

Une stratégie de design très courante et populaire avec des applications Web en ce moment est le paradigme du contrôleur de vue modèle. Cela doit faire complètement la séparation des préoccupations de votre application afin que vous ne slinging pas code d'accès à la base de données avec la sortie HTML.

Pour un très bon traitement du sujet, je vous suggère de regarder ici (Zend-cadre spécifique mais couvre bien le sujet général) et ici pour une discussion sur Modèles spécifiquement. Ou si vous voulez regarder un didacticiel PHP MVC plus généralisé, Rasmus Lerdorf a un .

En plus de cela (et encore, vous pourrez l'apprendre de Pofeaa par Martin Fowler), vous devrez apprendre à vous en apprendre davantage sur la cartographie relative à l'objet et les faiblesses des divers modèles de conception.

Malheureusement, il y a beaucoup de bonnes façons de faire des choses en fonction de vos besoins, mais pour chaque bonne façon, il y a une zillion horriblement de mauvaises façons d'eux.


3 commentaires

Merci pour votre réponse . Le lien que vous avez donné est très utile pour moi. Je viens de comprendre mon point le plus faible, mon problème est "Fat Controller = Model + Controller" Problème. Je pense que les limites mes applications sont que je n'ai pas de modèles "utiles", mes modèles ne sont que des classes vides avec l'adaptateur de base de données de Framework et J'ai d'énormes contrôleurs qui ont toute la logique. Donc, je pense que je dois créer de vrais modèles


.mais je ne suis pas sûr de savoir pourquoi dois-je créer une action de modèle spécifique (par exemple, l'action du registre du modèle d'utilisateur), même si je l'utiliserai en seulement 1 contrôleur. Une des raisons que je peux trouver est de tester les capacités. Si le modèle d'utilisateur a une méthode de registre, je peux le tester. Si vous avez plus d'informations qui peuvent être utiles pour moi, je veux apprendre. Merci encore


@Oguz - connaissez-vous du tout pour ne pas vous répéter, principe de responsabilité unique ou encapsulation, car ils se rapportent à la programmation orientée objet?



1
votes

Si vous ne l'avez pas déjà fait, vous devriez examiner la programmation orientée objet. Il y a un très bon tutoriel sur ce ici . Je pense que c'est peut-être la chose la plus importante que les grandes applications Web ne soient pas nécessairement intuitives pour l'amateur (moi-même inclus). Le truc dans les cadres MVC tels que Code Igniter est de créer une série de classes (ou d'objets) comme des modèles ou des bibliothèques.


1 commentaires

Voulez-t-il mentionner des modèles de conception s'il ne connaissait pas OOP?



0
votes

Eh bien, même si votre question sur PHP ... Si vous gérez votre contenu statique, comme des images avec PHP, cela vous donnera une mauvaise performance, peu importe votre utilisation de MVC ou non. Vous devriez utiliser l'extrémité avant comme Nginx pour de telles choses.

Regardez http://highscalability.com/ réel histoires de la vie réelle!

Note également NOSQL.


0 commentaires


0
votes

J'ai essayé de comprendre votre problème et j'ai trouvé que l'architecture de Magento est très puissante mais compliquée. J'ai eu une solution par zendfox , c'est un cadre d'application Web, adapté au petit à Développement d'applications énorme. Il a une architecture d'application très mignonne pouvant être gérées très facilement. Il possède également un développeur de module pour créer des modules personnalisés pour Zendfox à moins de quelques minutes à base d'assistant.

Jetez un coup d'œil à: http://www.zendfox.com


0 commentaires