9
votes

Meilleure pratique: où mettre le code PHP?

J'admets que cette question sera un peu vague, mais je vais essayer d'expliquer ce que j'essaie d'accomplir quelques exemples. J'ai un code PHP qui charge une bande de variables à partir de la base de données MySQL, contient certaines déclarations, certaines fonctions permettant de générer rapidement du code HTML, etc. Cependant, j'aimerais faire tout ce genre de choses avant tout ce qui est envoyé au client.

Je fais: xxx

Tout cela est tout va bien et ok, jusqu'à ce que je reçoive une erreur. L'écho ne montrera pas dans le navigateur car il est avant tout tout HTML ... donc j'ai modifié: xxx

maintenant je peux voir des erreurs, ce qui est bon. Mais maintenant, le problème se pose que dans l'en-tête ou dans les balayages, je ne peux pas accéder à des variables qui seront chargées plus tard dans le nouvel article error_block.

Je n'aime vraiment pas fractionnement du code dans l'erreur_clock à certains au-dessus du document HTML et certains dans l'erreur_block. Et je ne veux pas non plus utiliser la fonction matrice de PHP () qui termine abbubtement l'exécution.

Tout le monde peut donner à ses 2 cents sur ce problème? Merci.


3 commentaires

Vous ne devez pas mélanger php et html dans un seul fichier. Faites la logique dans un fichier et générez la sortie dans un autre fichier. N'utilisez pas de "fichiers logiques" à partir de vos "générateurs HTML". Utilisez plutôt «Générateurs HTML» à partir de vos «fichiers logiques». En outre, je ne suggérerais pas d'utiliser .Ind Extension - Les fichiers source doivent se terminer par .php (.inc.php pourraient être autorisés, bien que je n'évite aussi), car certains serveurs peuvent ne pas être configurés pour analyser les fichiers .Inc, quand Ils sont demandés directement par navigateur.


Oui, merci pour la tête. Je pense qu'il est difficile de décider de générer tout HTML à partir de PHP ou de simplement utiliser un peu de PHP à l'intérieur du HTML. Comme j'aime penser que je n'ai pas encore franchi la ligne, beaucoup de mon code qui devient désordonné. OOH que vous savez, vous commencez petit, puis le client a besoin de plus de fonctionnalités, etc., etc.


Vous devez consulter un cadre comme CodeIdIdItre qui vous aidera à nettoyer de manière significative et à séparer le login de votre site à partir du HTML.


3 Réponses :


5
votes

Si vous recherchez une solution alternative, j'en ai un pour vous. Ce que j'aime faire, c'est avoir la logique avant le DOCTYPE code>

$('#error').show().delay(7000).fadeOut();


5 commentaires

Pourquoi cela diviserait-il "pas d'apparition" - me regarde comme si c'était là, il n'y a-t-il pas d'effet - peut-être essayez peut-être de l'envelopper dans un ($ erreur) {bloquer?


Il apparaîtrait dans le DOM (s'ils devaient visualiser la source), mais ce ne serait pas visible pour l'utilisateur.


Dépend de quel navigateur vous utilisez. Dans la plupart des cas, si vous ajoutez un div (surtout un avec des espaces dedans, comme le vôtre), il poussera d'autres contenus, que vous «les voyez» ou non. Ne pas mentionner - Et s'il ajoute un rembourrage, une couleur d'arrière-plan, ou une bordure ... etc, etc., etc.


Ok, sérieusement, pourquoi je ne pensais-je pas à cela avant ... Couper la tête contre le mur . Je pense que cela est plus simple de mettre toute la logique au début du document. Je suppose que cela me laisse juste simplement remplacer toutes mes déclarations d'écho. Ce ne sera pas amusant, mais je pense que c'est la meilleure chose à faire. Merci beaucoup.


Vous êtes les bienvenus, aussi, en train de lire sur ce que BinaryLV a déclaré dans la section Commentaires.



-1
votes

Ce qui est souvent oublié, c'est que PHP est un langage de programmation en ligne, cela signifie qu'il est conçu pour être traité par le serveur lorsque le serveur lit en bas de la page, et avec ceci est conçu pour être divisé en morceaux. Récemment, OOP (programmation orientée objet) a été introduit à PHP le rend plus flexible.

Ainsi, avec cette information à la main, je prendrais le chemin de l'OOP dans ce cas et faire quelque chose comme: xxx

en écrivant à l'aide de fonctions, vous pouvez réduire votre temps de développement et Groupez la majorité de votre code appelant simplement ce dont vous avez besoin lorsque vous en avez besoin.

Une autre façon de déclarer votre classe d'erreur (ES) / Fonctions pour aider le temps de réponse du serveur est de faire quelque chose comme: xxx

ceci n'inclut que la classe d'erreur (ES) / fonctionne lorsqu'une erreur est rencontrée.

N'oubliez pas que lorsque vous écrivez PHP avec des techniques de POO comme celle-ci que le serveur prendra plus de temps pour traiter le script que si vous écrivez en ligne. Le plus gros avantage d'une base oop est-il réduira votre temps de développement et, le cas échéant, il facilitera la tâche d'administrer des mises à jour futures de votre script.


5 commentaires

Les fonctions / classes sont des pratiques d'OOP et non de pratiques en ligne, en utilisant une fonction, cela modifie la nature de l'opération à OOP, si je devais écrire en ligne, j'écrirais le code complet (tel qu'utilisé dans la fonction dans ce cas) où Il devrait apparaître dans la page


Les fonctions (dans lesquelles dans PHP signifie que les fonctions et les procédures) constituent un concept de programmation procédurale et PHP était une langue procédurale de son début. Pour pouvoir parler de OOP, vous avez besoin d'un concept de «classe» (soit en tant que PHP le met en œuvre, ou comme le prototype de JavaScript).


Merci pour la réponse, mettez-vous que je préfère m'abstenir de classes aussi longtemps que possible. J'utilise réellement beaucoup de fonctions générant du code HTML, mais les classes sont un peu survenues dans la plupart des cas IMHO. Être un programmeur à temps partiel C ++ aussi bien qu'il a une certaine attrait, j'avoue que :)


Oui, il a été conçu procédural comme une langue en ligne, mais les fonctions et les classes n'étaient pas introduites avant la suite. Les classes ne sont pas nécessaires pour que quelque chose soit OOP, ici < / a> est des informations pour vous aider avec le concept de OOP


@Le_source Vous êtes les bienvenus, mais les cours ne sont pas directement dans ma solution, cela donne une mention et l'option si vous souhaitez que la réponse ne donne qu'une solution avec une fonction pouvant potentiellement être réutilisée pour toutes les erreurs dont vous pourriez avoir besoin. gérer



0
votes

Vous devez rechercher des blocs d'essais et générer des exceptions si vous souhaitez effectuer un post-traitement avec le message d'erreur, qui comprend l'affichage.


0 commentaires