molti includono i file rispetto a un grande file di inclusione

0

La società per cui lavoro è in fase di revisione completa del nostro attuale sito intranet spostandolo su un framework Drupal. Un'area che sto interrogando è il numero di file di inclusione che abbiamo. Come esiste adesso, ogni singola pagina .php ha una pagina .inc corrispondente. Ci sono pagine .inc che forniscono determinate funzionalità, ma non sono legate a una pagina specifica. Tuttavia, ciascuna pagina .php include più file - come minimo, caricherà la pagina .inc corrispondente ad esso e alcuni script generali. Questo fa provare a trovare una definizione di funzione un incubo durante il debug.

Le mie opzioni ora sembrano essere le seguenti:

1) Continuate ad usare questo stesso sistema, ma rendete parte della nostra convenzione per includere una linea commentata che indica dove è definita la funzione 2) Consolidare tutti i file di inclusione in un unico file di grandi dimensioni. Ciò includerebbe le definizioni di classe, le definizioni di funzione, tutto. La mia preoccupazione qui è che questo file diventerebbe monolitico in una gran fretta. Tuttavia, avrebbe il vantaggio di mantenere tutte le definizioni di funzioni in un unico posto.

Non mi piace che entrambe le opzioni siano oneste. Il mio obiettivo è ridurre le dipendenze e rendere il nostro codice leggibile e facile da navigare. Qual è il nostro miglior metodo per gestire questo problema?

Dovrei anche dichiarare che si tratta di un codice molto precedente - non è stato rifattorizzato da quando è stato creato nel 2003-2004. Solo per darti un'idea su cosa sto lavorando, c'è un sacco di php echoing html:

printf("<center>\n");
printf("<table>\n");
printf("<tr>\n");
printf("<td align=left>Select Division:</td>\n");
printf("<td><select name=\"div\">\n");
printf("  <option value=1 \"selected\">Division1\n");
printf("  <option value=2>Division2\n");
printf("</select></td>\n");
printf("</tr>\n");
printf("<tr>\n");
printf("<td align=center colspan=2><input type=\"submit\" value=\"Next->\"></td>\n");
printf("</tr>\n");
printf("</table>\n");
printf("</center>\n");
    
posta JRizz 16.08.2013 - 21:42
fonte

5 risposte

0

tl; dr non ci sono molti file include o un file di grandi dimensioni, è il modo Drupal.

Dato che vuoi passare a Drupal, ti suggerirei di seguirlo per davvero. Ecco come funziona Drupal.

Innanzitutto, in Drupal, l'unica cartella che puoi toccare è sites/ .

In sites/default , in pratica si tocca solo il file settings.php . La maggior parte del tempo verrà speso in sites/all/ . In questa cartella ci sono 2: themes e modules . Il tuo tema sarà dove lo indovini, e i moduli (contribuiti, o i tuoi) saranno dove lo indovini anche tu.

Non scriverò un tutorial su come scrivere temi. Fondamentalmente, hai tutti i tuoi modelli nel tema e i moduli usano questi modelli. Il grande vantaggio è che puoi scavalcare i modelli usati da altri moduli (che non dovresti toccare neanche) inclusi quelli principali.

Drupal separa i moduli in base alle funzionalità. Tu, per il tuo sito web, di solito separa i tuoi moduli dalle funzioni commerciali .

Non scriverò un tutorial su come scrivere moduli, ma ecco come funziona fondamentalmente:

Il tuo modulo ha bisogno di un file .module . Supponiamo che il tuo modulo sia foo . Quindi hai una cartella in sites/all/modules/foo/ . Qui hai un file chiamato foo.info (con informazioni di base) e un altro file chiamato foo.module . Nel file foo.module , hai questo tipo di cose:

function foo_menu() {
    $items['bar'] = array(
        'title' => 'Some title',
        'page callback' => 'foo_answer_bar',
    );
    return $items;
}

function foo_answer_bar() {
    return 'Baz';
}

Il principio è di avere funzioni che iniziano con il nome del tuo modulo e terminano con nomi specifici, come _menu . Queste funzioni sono raccolte da Drupal e le gestisce. In questo esempio, l'array restituito indica a Drupal di gestire l'URL /bar e di visualizzare ciò che foo_answer_bar restituisce, nel layout.

In ogni caso. Non sto andando oltre in questo esempio, ma quello che sto dicendo è che se vai con Drupal, vai con Drupal. Sarà un po 'difficile all'inizio, ma molto meno doloroso nel lungo cammino. Cerca di mantenere molti piccoli moduli piuttosto un grande modulo. Le stesse regole di OOP si applicano lì (SOLID, KISS, DRY).

    
risposta data 19.08.2013 - 15:47
fonte
1

Poiché stai utilizzando Drupal, non puoi fare cose in PHP Way, che è probabilmente più corretto di Drupal Way.

Drupal ha convenzioni e limiti. Può rendere la vita molto difficile se non segui quelle convenzioni, ma se segui quelle convenzioni allora può essere un sistema accettabile.

I miei consigli sono i seguenti:

  1. Ditch Drupal se puoi. Ci sono sistemi molto migliori là fuori, senza tutte le incredibili limitazioni che Drupal ha. Drupal è un ottimo sistema per le persone che non sono dei bravi programmatori, ma per le persone abituate a scrivere applicazioni OOP in PHP le farà strappare i capelli.

  2. Se non riesci a sbarazzarti di Drupal, allora fai ciò che Drupal vuole che tu faccia. In particolare, Drupal ama i file separati nelle directory in cui si aspetta di trovarli: tematizzazione, libreria, accesso ai database e file logici hanno tutti un posto. Inoltre, ciò renderà la tua vita molto più semplice quando decidi che potresti voler aggiungere spazi dei nomi, o se vuoi essere in grado di includere più discernere in seguito perché il paradigma include-everything sta rallentando il tuo sito.

risposta data 19.08.2013 - 15:51
fonte
0

Unire i file PHP in uno solo fornirà un miglioramento minore delle prestazioni, se ve ne sono, specialmente con APC installato o con l'ottimizzatore di PHP 5.5. Il principale difetto di prestazioni di PHP di Drupal è il layout funzionale globale e il fatto che per ogni pagina sono necessarie centinaia o migliaia di chiamate di funzione. Ricordo che Zend o un'altra organizzazione hanno fatto un'analisi approfondita qualche tempo fa.

Se utilizzi Drupal, non modificare il core unendo file PHP o altre modifiche. Ciò renderebbe incredibilmente difficili gli aggiornamenti e le patch futuri. Invece scrivi i tuoi moduli nel modo più efficiente possibile e concentrati su altri miglioramenti del rendimento , come la memorizzazione nella cache e il rendering delle pagine.

    
risposta data 19.08.2013 - 17:20
fonte
0

Forse la struttura originale è il risultato di qualcuno che progetta il software come un insieme di classi C ++?

Il problema che hai di trovare le definizioni delle funzioni sembra una combinazione tra il tuo IDE che manca una funzione "vai alla definizione" e le funzioni che non sono raggruppate nelle posizioni che ti aspetteresti. Quindi una terza soluzione sarebbe quella di raggruppare le funzioni per obbedire ad alcune regole di posizionamento più prevedibili.

Tra le due opzioni che hai dato, la prima sembra richiedere molta disciplina, mentre la seconda sembra tralasciare i vantaggi della modularità.

    
risposta data 20.08.2013 - 05:23
fonte
-5

Lo convertirò in un sistema basato su classi e separerò i modelli HTML e il codice PHP.

    
risposta data 19.08.2013 - 08:32
fonte

Leggi altre domande sui tag