Avantages et inconvénients de l'utilisation d'un fichier pour la totalité de la page Web? [fermé]

StackOverflow https://stackoverflow.com/questions/121849

  •  02-07-2019
  •  | 
  •  

Question

Je ne suis pas sûr de savoir comment exprimer cela, mais je vais essayer.
J'ai récemment commencé à coder mon portefeuille en PHP orienté objet et je me demande s'il est conforme aux meilleures pratiques d'utiliser une seule page où le contenu change en fonction des données SQL et de la variable $ _GET?

Si oui / non, pourquoi?

Modifier: jetez un coup d’œil à mon prochain article, pour plus de détails.

Était-ce utile?

La solution

Demandez-vous de l’utilisation du modèle de contrôleur frontal, dans lequel un seul fichier répond à toutes vos demandes? Cela se fait souvent avec index.php et mod_rewrite, en obtenant toutes les requêtes, le reste de l’URL étant donné comme paramètre dans la chaîne de requête.

http://www.onlamp.com /pub/a/php/2004/07/08/front_controller.html

J'aurais tendance à recommander l'utilisation de ce modèle pour les applications, car il vous donne un emplacement unique pour gérer des tâches telles que l'authentification, et vous devrez souvent intégrer les éléments à un niveau plus strict, où les nouvelles fonctionnalités seront des classes enregistrées. avec le contrôleur via un mécanisme fait beaucoup de sens.

Les préoccupations relatives aux URL mentionnées par d'autres personnes ne sont pas vraiment précises, car il n'y a pas vraiment de relation entre la structure de l'URL et la structure du fichier, sauf si vous utilisez des techniques anciennes de création de sites Web. Une bonne partie de la fonctionnalité apache est basée sur le concept que la structure de fichier / répertoire et la structure d’URL sont des concepts distincts (module alias, module de réécriture, négociation de contenu, etc.)

Autres conseils

  • non évolutif
  • Difficile à gérer le code
  • L'analyseur doit tout analyser
  • Exemple parfait d'odeur de code
  • Une erreur bloque tout votre site

Si vous parlez d'une seule page d'arrivée (par exemple, index.php) qui utilise ensuite des variables de session, etc. pour déterminer quel code doit être inclus, alors oui, il s'agit d'une technique souvent utilisée.

Edit: et par ce qui précède, je veux dire ce que Daniel Papasian explique en détail dans son excellent message

Si vous voulez parler de placer tous vos codes HTML, SQL et PHP dans un seul fichier, alors non, pour les raisons évoquées par GateKiller.

Le fichier de page actaul ne doit contenir que ce qui diffère de cette page par une " page " sur votre site (par exemple, le titre de la page, la page d’index peut comporter un code permettant d’obtenir les dernières nouvelles, etc.). Tout ce qui est (ou peut) être utilisé à plus d’un endroit, devrait être déplacé vers des fichiers php externes et inclus. Les exemples sont:

  • Informations sur la base de données (mot de passe, nom d'utilisateur, etc.)
  • En-tête / Pied de page
  • Code de connexion

Cela rend le code beaucoup plus facile à gérer. Par exemple, si vous modifiez le mot de passe de la base de données, ce n’est qu’un seul fichier à mettre à jour ou si vous décidez d’ajouter une bannière à l’en-tête, c’est à nouveau une seule page, pas toutes les pages à modifier.

Cela ajoute également beaucoup moins de travail à l'ajout de nouvelles fonctionnalités. Par exemple, une nouvelle page peut simplement être:

<?php
require ('config.php')
require ('start.php')
require ('header.php')
//custom page stuff
require ('footer.php')
?>

ou l’ajout de la connexion automatique via des cookies, constitue une simple modification de la fonction Login () (création d’un cookie) et de start.php (recherche du cookie + appelant Login ()).

Vous pouvez également transférer facilement ces fichiers vers d'autres projets à l'avenir.

Tout ce que le gatekiller a mentionné + vous ne pouvez pas non plus utiliser la liaison tardive.

  • Difficile à gérer le code

Si vous utilisez le contrôle de version, il sera beaucoup plus difficile d'annuler les modifications éventuelles apportées à une seule & "page &"; de votre site. Étant donné que vous devez fusionner pour tout ce qui aurait pu arriver après

Ce n'est pas un moteur de recherche convivial, sauf si vous utilisez le mod rewrite

J'ai tendance à être en désaccord avec la plupart des gens - si votre site est géré par un CMS personnalisé ou un système similaire, il n'y a aucune raison de ne pas utiliser une seule page.

J'ai fait la même chose avec un CMS que j'avais écrit il y a quelque temps. Tous les clients avaient une seule page default.asp qui interrogeait la base de données pour le thème, le contenu, les pièces jointes et les autorisations de membre. Pour effectuer un changement, je ne l'ai fait qu'une fois et je l'ai copié sur mes autres clients si le changement l'exigeait.

Bien entendu, cela ne fonctionnerait pas dans la plupart des scénarios. Si vous avez un site Web qui fait beaucoup de choses DIFFÉRENTES (mon cms ne fait que répéter certaines fonctions lors du chargement de la page), plusieurs pages sont vraiment la seule solution.

Pour ceux d'entre vous qui sont intéressés, il existe un cadre qui utilise ce modèle exact. À l'origine pour ColdFusion. Il existe encore une communauté pour cette méthodologie, la version 5.5 a été publiée il y a environ un an (décembre 2007).

site FuseBox Framework

entrée sur Wikipedia

Ce screendump et l'explication suivante pourraient donner une meilleure idée de ce à quoi ressemble mon code pour le moment.

Structure de fichier

J'utilise le même modèle que celui mentionné par «Internet Friend», Daniel Papasian et quelques autres; Contrôleur avant.

Ma page d'index ressemble à ceci.

require_once 'config.php';
require_once 'class_lib/template.php';

$template = new template($config);
$template->dataQuery();
$template->pageCheck();
$template->titleAssembly();
$template->cssAssembly();
$template->metaAssembly();
$template->menuAssembly();
$template->content();
echo $template->publish();

La construction de classe ouvre le fichier de modèle principal et le charge dans une variable que chaque méthode peut manipuler en remplaçant les balises par du code généré. Les URL laides ne sont pas vraiment un problème car je vais utiliser mod_rewrite pour le nettoyer.
Cependant, Papasian a un point, cette méthode conviendrait mieux aux applications Web et similaires.

Je m'excuse de ne pas avoir été très spécifique avec ma question en premier lieu.
En outre, merci à toutes les personnes qui ont laissé quelques lignes pour nous aider.

J'utilise souvent un fichier php sans l'extension .php (c'est-à-dire le site) et j'ajoute

<Files site>
ForceType application/x-httpd-php 
</Files>

au .htaccess qui fait que Apache interprète le fichier comme un fichier php.

Vous pouvez analyser les fichiers vars du fichier dans l'URL: http: // www. votredomaine.com/site/var1/var2/var3

Utiliser

$var_array = explode("/",$_SERVER['REQUEST_URI']); 
$var1 = $var_array[1];
$var2 = $var_array[2];
$var3 = $var_array[3];

pour obtenir les vars. De cette façon, vous pouvez utiliser un seul fichier avec searchengingfriendlyurls sans modrewrite.

re: URL et structure de fichier

J'ai converti un site où tout le contenu se trouvait dans une base de données et auquel on avait accédé avec le modèle index? p = 434. L'utilisation de la base de données ne présentait aucun avantage, et le site était source de confusion pour les personnes qui devaient ajouter du contenu, car ils devaient modifier le contenu avec le navigateur et les pages n'étaient que des chiffres.

J'ai extrait tout le contenu et l'ai placé dans des fichiers séparés. Chacun avait un nom raisonnable et était organisé en dossiers. Chaque fichier ressemblait à ceci:

require('sitelib');
do_header('about', 'About Us');
// content here
do_footer();

Le client a adoré. Ils ont pu utiliser n’importe quel éditeur HTML pour entrer, trouver le bon fichier et effectuer le changement. Et ils ont pu faire de nouvelles pages. Tout est à dire: il est parfois utile de faire correspondre les structures d’URL et de fichier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top