9
votes

MVC en tant que meilleure pratique pour la programmation de niveau professionnel?

Long Time Lurker, première affiche ...

Je suis maintenant au point où je m'appellerais presque un programmeur PHP de qualité professionnelle et j'ai beaucoup de code que je réutilise dans divers projets. En outre, beaucoup de packages open source, j'ai travaillé avec le modèle MVC et, par conséquent, j'ai eu beaucoup de recherches récemment dans la manière dont tout fonctionne pour que cela puisse mieux les éditer au besoin.

À ce stade, j'envisage de prendre un cadre MVC Bones Bones (d'un didacticiel) et de l'étendre comme requis pour mes prochains emplois de programmation.

Ma question est de savoir si le modèle MVC avec à peu près toutes les logiques d'application séparés de la couche de présentation est considérée comme une meilleure pratique sur un site Web de l'OPS bien structuré avec codage sur la page comme des variables de fonction de réglage E.

ou passerai-je dans des problèmes lorsque je veux coder la flexibilité E.g.

  • en utilisant quelque chose comme phpthumb pour une galerie où je veux une sortie différente tailles sur différentes pages et définir actuellement des paramètres dans la tête de la page
  • Un formulaire de contact avec X champs et un formulaire de commentaires avec les champs Y - cela nécessitera-t-il 2 modèles différents plutôt qu'une classe de formulaire générique à nouveau avec certains paramètres définis dans la tête de la page
  • Certaines pages nécessitant ob_start () et ob_flush () mais pas d'autres?

    S'il vous plaît ne me disiez pas de ne pas construire mon propre cadre - je préférerais savoir comment chaque petit bit fonctionne que d'utiliser une dalle de code, je ne connais rien - je suis vraiment intéressé par l'opinion des personnes qui ont disparu cette route et des sites de construction tous les jours. Quels sont les vrais avantages et les inconvénients de cet oop et des tas de pages de pages sur un site, par opposition à une page index.php et de fichiers distincts.

    acclamations, Niggles


5 commentaires

Je préférerais savoir comment chaque petit bit fonctionne que d'utiliser une dalle de code Je sais rien de - sûr, vous ne savez rien du code au début mais depuis le code PHP Est une nature lisible, ce serait votre faute si vous ne voulez pas étudier le code.


Si vous êtes vraiment intéressé par les "personnes qui ont disparu cette route" ont à dire, vous ne devriez pas sortir avec "s'il vous plaît, ne me dis pas de construire mon propre cadre." Parce que c'est la meilleure réponse.


En outre, l'utilisation d'un cadre bien respecté est un excellent moyen de développer votre compréhension de la mise en œuvre du modèle MVC, ce qui vous aiderait à construire votre propre si vous trouvez toujours les solutions disponibles.


Je suis définitivement dans le "En savoir plus (ou quelques-uns) mais construisez votre propre" camp. Il n'y a pas d'une manière raisonnable de comprendre pourquoi les roues sont rondes jusqu'à ce que vous essayiez de faire une octogonale. Cela dit, l'a construit au besoin. Ne passez pas de temps à concevoir des fonctionnalités qui n'ont aucune applicabilité et finissent par perdre gaspillée.


J'ai écrit un article de blog sur la création de votre propre MVC à partir de zéro dans PHP - CHAITYA62.GITUB.IO/2018/04/29/... J'espère que cela aide


5 Réponses :


15
votes

Je sais que vous dites que vous ne voulez pas ce conseil, mais n'écris pas le vôtre. La première chose que j'ai faite à chaque emploi que j'ai jamais travaillé est prise en charge du code ou du cadre existant, souvent commercial mais hautement modifié et commencé à le maintenir. Vous aurez rarement la possibilité d'écrire le vôtre et de le faire est une mauvaise idée. C'est dur, coûteux et quelqu'un d'autre a déjà écrit un meilleur cadre PHP MVC que vous n'êtes probablement pas écrit.

Il y a littéralement des dinges de Cadres PHP matures , dont la plupart ont été autour pendant plus d'une décennie. Choisis un d'entre eux. Peu importe lequel - ils sont tous maintenus par une douzaine de personnes au moins aussi intelligentes que vous qui ont écrit des cadres MVC beaucoup plus longtemps et ont passé des mois ou des années à affiner leurs cadres et à écouter des entrées de l'utilisateur. < / p>

Tout ce qui dit, si vous voulez écrire le vôtre à votre heure-ci, comme passe-temps, vous ne gaspillez donc pas l'argent de votre patron, puis par tous les moyens. Il y a une grande variété d'interprétations de MVC. Certains cadres affichent des vues comme essentiellement des modèles. Personnellement, je pense que vous pouvez lancer autant de PHP crus que vous le souhaitez, tant que c'est à ce moment-là que cela est d'affichage, et vous faites les choses intelligentes habituelles, comme distillant le code partagé dans des fonctions. Certains cadres n'ont pratiquement aucune logique commerciale dans les modèles (où il appartient à l'OMI) mais ont des contrôleurs très lourds. La meilleure chose à faire est d'essayer d'autres cadres et de voir comment ils travaillent et que vous préférez, et décidez ce que vous aimeriez voir changer. Ensuite, définissez-le pour le changer dans votre propre.

Vous dites que vous êtes presque prêt à vous considérer comme un professionnel? La leçon la plus difficile que j'ai dû apprendre était que les professionnels n'écrivent pas leurs propres bibliothèques de bas niveau. Ils ne réinventent pas la roue sur la société Buck. Ils utilisent des composants hors tension et obtiennent le travail aujourd'hui, au lieu d'un mois à partir de maintenant. Vous ne voulez pas utiliser une dalle de code inconnu? C'est la plus grande partie de votre vie à venir en tant que programmeur - s'y habituer.


5 commentaires

Merci, je ne mentais pas. J'aime écrire un code de bas niveau. love ça. Mais ce faisant, c'est absolument gaspiller du temps de l'entreprise, et ça vous fera tiré.


"Je sais que vous dites que vous ne voulez pas ce conseil, mais n'écris pas le vôtre." Un appel juste dans tout ce que vous avez dit - mais je suppose que mon plan n'est pas d'aller construire une bête gigantesque qui prendrait 12 mois pour écrire. Je fais beaucoup d'emplois similaires à l'heure actuelle - Systèmes CMS personnalisés, Minisites avec plusieurs galeries et formes et le mois prochain, j'ai une CRM avec des installations de gestion du temps. Je voulais commencer à consolider mon travail en quelque chose de réutilisable, même s'il est pièce par pièce. "Les professionnels n'écrivent pas leurs propres bibliothèques de bas niveau." D'accord - J'utilise plusieurs classes 3ème partie s'ils existent et font le travail :-)


@meagar: En ce qui concerne votre dernier paragraphe, si tout le monde, même si vous le faites, il n'y aurait pas de cadres PHP , et il y en a beaucoup! Je ne dis pas qu'il devrait rouler la sienne sur ses heures d'entreprise, mais le découragement total n'est pas souhaitable à mon avis.


@Alixaxel Je sais que cela a presque cinq ans, mais je vais suivre de toute façon. L'important est que presque aucun document PHP "professionnel" existant n'a été écrit uniquement dans l'intérêt d'écrire un cadre PHP professionnel. C'est un excellent moyen de produire un cadre laids que personne ne veut utiliser. Les bonnes fraches sont distillées des applications Real World , où quelqu'un a vu un vrai problème et a proposé une solution. Ensuite, ils ont vu les bits réutilisables, ou peut-être qu'ils pensaient avoir une architecture particulièrement élégante et qui constituaient la base de leur cadre.


C'est peut-être la raison vraie que j'essaie de traverser pourquoi vous ne devriez pas construire votre propre cadre. Oui, ils sont un excellent apprentissage aussi, mais bon Les cadres existants se sont révélés capables d'accueillir de nombreux types d'applications à de nombreuses échelles; Ils sont testés et trempés, et les bogues Bad ont été secoués pour vous. Bien sûr, tout le monde devrait se sentir libre d'expérimenter ses propres idées pour un cadre, mais la poussée de cette question devient un professionnel et que les professionnels font pas résolvez déjà résolu problèmes en écrivant des cadres.



3
votes

écrire votre propre cadre est idéal pour votre propre édification et pour bien comprendre la langue.

Personnellement, je trouve que cela prend le temps à l'aide d'un cadre tiers, car il s'agit d'écrire le vôtre. Pourtant, j'ai le contrôle total de mon propre code, pas quelque chose que vous pouvez demander avec un cadre tiers.

Je pense aussi que de nombreux cadres MVC sont beaucoup plus intenses de ressources. Pour les sites de volume élevés, vous devez être prêt à lancer du matériel pour les amener à courir bien. Pour les sites à faible volume (la majorité), le développement rapide d'un cadre de MVC tiers est un énorme bonus.

Donc, à mon avis si vous avez le temps, roulez le vôtre et en soyez fier. Assurez-vous simplement d'apprendre des autres, en particulier lorsque la sécurité est concernée.


0 commentaires

0
votes

Tout MVC - Homegrown ou non - vous permettra de vous souplier de la flexibilité et du code ré-utilisable.

ob_start () / ob_ * Les appels ne sont pas un problème, ils vont dans votre modèle et appelés à partir de votre modèle, par exemple: p> xxx pré>

où votre modèle est p>

function getFormattedName() {
    ob_start();
    echo '<a href="/profile/' . $this->getName() . '">' . $this->getName() . '</a>';
    $return = ob_end_clean();
    return $return;
}


4 commentaires

Cette utilisation de la tampon de sortie semble ... excessif. Quel est le problème avec la concaténation de la chaîne?


Rien n'est faux avec la concaténation. Juste un exemple, car l'OP spécifiquement posé sur l'utilisation de ob_start () etc. :)


C'est vraiment faux. Vos modèles ne doivent jamais produire HTML, c'est à quoi sert la vue. Le point intégral de MVC est découplé à votre code professionnel de votre code d'affichage. C'est aussi exactement comment pas d'utiliser la mémoire tampon de sortie. La chaussure dans laquelle il a été référencé dans la question ne le rend plus valable.


Touché. Vous êtes techniquement plus correct que moi, je dirais que ma réponse n'était pas tellement fausse que mal. Je pense que cela a valablement répondu à la question. Je n'essaie pas d'enseigner à l'OP comment coder. La ligne est parfois floue, par exemple dans Zend_Form, la classe Zend_Form_Element construit la structure du formulaire. Bien que cela ne soit pas tout droit, echo HTML, il est assez proche.



1
votes

Tout dépend de quelles exigences de projet sont et comment vous concevez vos objets d'application. MVC Ne vous oblige pas à utiliser une classe ou une conception de la vue spécifique, il ne vous fournira qu'une architecture qui vous aidera à isoler la logique commerciale à partir de la présentation et de la couche de données qui vous permettra d'être plus évolutive et plus facile à tester.

Dans MVC, vous n'êtes pas lié à une vue par contrôleur, vous pouvez utiliser autant de vues que vous le souhaitez par contrôleur car chaque méthode exposée peut appeler une visualisation elle-même et contrôler la manière dont il a l'air et se comporter en fonction de la logique d'entreprise que vous définissez. Cela dit, vous pouvez avoir 2 méthodes pour renvoyer une image de taille complète et une vignette sans avoir à créer deux pages. Vous pouvez tout définir à la vue du contrôleur, des méta-données d'en-tête, des scripts, des liens, du thème, du contenu, etc.

En ce qui concerne les modèles, cela dépend à nouveau de vos besoins de votre projet, mais de toute façon, dans tous les cas, si vous avez plusieurs pages à des fins différentes et qu'ils ont besoin de modifier différentes sources de données, il devrait y avoir un modèle pour chacun d'entre eux et Ce que vous pouvez faire après est de créer une classe qui encapsule la fonctionnalité de formulaire en appelant le modèle pour obtenir les champs pour créer un formulaire, obtenir et enregistrer les données. C'est juste une idée que vous pouvez le faire de différentes manières, c'est la beauté de OOP.

En fin de compte, il ne s'agit pas de comparer un site de OOP bien structuré contre un site de OOP MVC, il s'agit davantage d'une analyse du temps et des efforts que vous dépensez de travailler sur la construction d'une architecture de site pouvant réussir à isoler des préoccupations à la même temps, il est toujours lisible et évolutif pendant que cela répond à vos exigences de votre projet.

Si vous souhaitez obtenir plus d'idées sur les modèles de conception, vous pouvez utiliser le motif de conception de Google MVP et / ou MVVM Design Motif.


0 commentaires

1
votes

J'ai écrit mon propre cadre. Il ne faut pas le temps de créer l'architecture et le code brut. C'est génial si quelqu'un écrit son propre cadre. Mais si la documentation n'est pas convenable que la douleur définitivement dans les ânes. Dépend complètement de vous-même. J'ai aussi écrit la mienne. Il a fallu près de 7 jours pour préparer le cadre QA prête :). Mais le problème principal est d'être satisfait par le morceau de code que vous écrivez dans votre cadre. Vous aimeriez toujours improviser votre cadre et voulait que ce soit le meilleur. BLABLA! BLABLA! Si vous souhaitez écrire votre propre et vous êtes assez confiant pour la subsistance. Allez-y.


0 commentaires