E 'una buona idea usare l'intestazione ("Content-Type [...]"); nel file principale di un CMS?

0

Ho lavorato su sistemi di gestione dei contenuti per circa 7 anni. 2 anni fa ha creato il mio. Attualmente stiamo costruendo una nuova versione, migliore e più grande.

Tuttavia, cadde nel dilemma. Ho un file principale, che viene incluso in tutte le pagine. Il file core si occupa di aggiungere funzioni, config, connessione mysql, ecc. Ho anche aggiunto Header("Content-Type: text/html; charset=UTF-8"); nella parte superiore del codice nel file core.

Recentemente ho dovuto creare un generatore xml, con Header("content-type: text/xml; charset=UTF-8"); . Per prima cosa, ovviamente, non sono riuscito a far funzionare l'xml, perché ho dimenticato l'impostazione del tipo di contenuto nel file principale. Più tardi ho aggiunto il tipo di contenuto: text / xml dopo che il file core è incluso ..
Fondamentalmente tutto funziona, ma vorrei lucidare questo progetto al meglio.

Quindi sto pensando ora, sta aggiungendo il "content-type: text / html" nel file core, una buona idea?

Ho avuto un'idea, per includere il file core come questo: include($rootpath . 'inc/core.php?content-type=xml'); , quindi nel file core, l'intestazione sarà impostata in base a $_GET['content-type'] .. È una buona soluzione?

    
posta Kalle H. Väravas 16.08.2011 - 23:34
fonte

2 risposte

1

Non mi piacciono le estremità sciolte, quindi risponderò io stesso a questa domanda basandomi sulle mie ricerche e test.

In poche parole, è una buona idea nella maggior parte dei casi. Come si desidera evitare di aggiungerlo manualmente a ogni file di indice, che richiede il file principale. Tuttavia, la vera domanda è ... quanto è utile impostare il tipo di contenuto e la codifica in primo luogo ...?! La mia esperienza ha dimostrato che ciò può evitare possibili problemi in futuro.

Quando hai bisogno di uscire dal tipo di contenuto text/html nel file indice, questo è in realtà XML. Aggiungi semplicemente il nuovo tipo di contenuto dopo che il file principale viene incluso.

Creare una funzione, che imposta il tipo di contenuto è solo uno spazio extra e non riflette realmente sulla funzionalità. Se mai, non è la soluzione ottimale.

    
risposta data 13.09.2011 - 00:50
fonte
1

Invece di avere l'include () implicitamente produce un sacco di cose incluso header (), potresti avere una funzione startResponse () che può richiedere una matrice di intestazioni extra da fornire (utile se vuoi anche aggiungere ad esempio cache-control, content-disposition, ecc. ad un certo punto).

Se vuoi essere veramente fantasioso probabilmente potresti avere l'inclusione anche chiamare ob_start, avere la chiamata startResponse () ob_end_flush () dopo che emette le intestazioni e poi avere un oggetto (costruito nell'include) avere la sua chiamata __destruct startResponse () se non è stato già chiamato.

    
risposta data 17.08.2011 - 00:54
fonte

Leggi altre domande sui tag