2010-11-09 11 views
5

Non ho idea se c'è un termine tecnico per questo, quindi non ho trovato nulla su Google né questo sito.Split contenuto php in più file

Un mio amico che ha creato siti per anni e che ha creato un business, usa un sistema piuttosto unico (per me).

Si divide la sua pagina in 3 parti, l'intestazione, il corpo e il piè di pagina. le mette in 3 file, e quindi include l'intestazione e piè di pagina in pagina corpo, lasciando solo questo: (esempio)

<?php include_once "Constants/Header.php"; ?> 

     <div id="Container"> 
      <div id="Header"> 
       HEADER 
      </div> 

      <div id="Menu"> 
       <ul id="Nav"> 
        <li>Menu item</li> 
        <li>Menu item</li> 
        <li>Menu item</li> 
        <li>Menu item</li> 
        <li>Menu item</li> 
        <li>Menu item</li> 
       </ul> 
      </div> 

      <div id="Body"> 

      </div> 
     </div> 

<?php include_once "Constants/Footer.php"; ?> 

E 'buona pratica per codificare un sito in questo modo? -se così, perché? E, ultimo ma non meno importante, codifica le tue pagine in questo modo?

+0

Qualcosa sulla falsariga della standardizzazione delle pagine. Ho una domanda simile, chiedendomi se ci sono effetti collaterali negativi a questo processo, ad esempio se l'header.php contiene il tag e il footer.php contiene il tag? –

risposta

4

Come molti altri hanno menzionato, suddividere il codice in più file PHP può aiutarti a evitare di duplicare il tuo lavoro inutilmente. Tuttavia, un vantaggio ancora maggiore che può derivare da questo è che l'istruzione include è il gateway per fornire sta implementando un'architettura in tutto il sito come Model-View-Controller.
Utilizzando MVC, il codice viene diviso non solo in termini di parti della pagina che l'utente vede (intestazione, piè di pagina, corpo, ecc.), Ma anche in termini di responsabilità. A un livello elevato, il "Modello" gestisce i dati e la logica aziendale, la "Vista" gestisce l'interfaccia utente (compresi i dati di rendering dal modello) e il "Controller" gestisce le richieste e interagisce con le parti appropriate del Modello.
Non sono esperto di MVC in alcun modo, ma i vantaggi qui sono enormi. Ciascuno dei componenti può essere testato individualmente. Progettare i componenti da "accoppiare liberamente" ti aiuta a evitare di ripeterti e incoraggia a scrivere codice riutilizzabile. C'è un numero di PHP web application frameworks che utilizza l'architettura MVC, molti dei quali sono liberamente disponibili (ad es., CodeIgniter).
Certo, MVC non è necessariamente "l'unico vero modo" - nel caso del tuo amico, l'implementazione di un'architettura come questa potrebbe essere al di fuori della portata di ciò che vuole fare. Ma per quanto riguarda la tua domanda iniziale (in un modo indiretto credo), l'istruzione include può (se usata correttamente) essere uno strumento molto potente e utile.

+0

Grazie, stavo per scegliere un altro commento come risposta. Ma questo sembra solo più completo, mi dispiace. Grazie per il link e la risposta del corso. – Nick

3

È estremamente utile (per te come sviluppatore e il tuo successore) utilizzare include e dividere i file PHP. In questo modo, se è necessario modificare il piè di pagina, ad esempio, è sufficiente modificare il file di un solo footer e le modifiche si riflettono sul sito.

E sì, io uso sempre include.

+0

Penso che sarebbe uno spreco se avessi fatto un nuovo argomento per questo, quindi a meno che non pensassi diversamente, ti dispiacerebbe se ti chiedessi il motivo per cui useresti includere in questo codice? Ho fatto qualche ricerca e mettendo da parte il piccolo aumento del carico del server, mi è sembrata l'opzione migliore. – Nick

2

Non conosco le buone pratiche, ma se il tuo sito utilizza la stessa intestazione e il piè di pagina su tutte le pagine, è molto più efficiente includere il codice una volta anziché copiare e incollare lo stesso codice in ogni pagina .

Le aggiunte future al menu devono essere aggiunte solo una volta e ogni pagina vede la modifica.

1

Bene, questa è una tecnica piuttosto semplice in PHP. Permette di modificare l'intestazione o il piè di pagina in un punto e di essere modificati in ogni pagina del sito che li utilizza.

Può essere utilizzato per altri scopi.

1

Non va bene, né male.

Dipende da cosa si vuole fare. Se vuoi un insieme limitato di pagine web semplici, può essere abbastanza buono. I problemi iniziano a comparire quando vuoi un foglio di stile separato per ogni pagina.Quindi alcune pagine usano uno script, altri includono un altro script. In questi casi, le intestazioni differiscono da una pagina all'altra (possono essere uguali, ma è una cattiva pratica includere file che non stai utilizzando).

Quindi, se stai costruendo una sorta di interazioni sul sito, questo semplicemente non funzionerà. Non è un modo di programmare. Non c'è spazio per il codice PHP attuale. Ovviamente puoi includere il codice PHP, ma è una pratica estremamente scorretta mescolare PHP e HTML in questo modo.

Il modo migliore per far funzionare PHP in questo caso è utilizzare una sorta di framework o CMS. Se si desidera creare un sito Web con pagine con poca interazione (ad esempio un sito Web per un'azienda, alcune presentazioni, un sito di notizie, un blog), utilizzare un CMS, come Wordpress, Joomla, Drupal, DLE. Se hai bisogno di qualcosa di più complicato, come un'applicazione web basata su PHP di qualche tipo, usa framework MVC, vai a Zend framework, o qualcosa di più semplice e più piccolo (qui sono estremamente soggettivo) come CakePHP, CodeIgniter o Symfony.

2

Non è buono ma pratica comune. Leggermente migliori sarebbero 3 file, uno per l'intestazione, uno per il footer e quindi uno (in genere: index.php) che include l'intestazione, il piè di pagina e il contenuto.

<?php 
$active_page = $_GET['page']; 
require_once('header.php'); 
require_once($active_page); 
require_once('footer.php'); 
?> 
+0

http://mysite.com/index.php?page=index.php – AlexanderMP

+0

+1 per avermi ricordato di rendere dinamico il contenuto. – Nick