Domanda

Ho un framework un po 'primitivo che sto usando per la maggior parte dei miei progetti, ma mi è venuto in mente un problema di progettazione generale che non sono stato ancora in grado di elaborare. Per una data applicazione, dovrei separare la struttura di classe specifica dell'applicazione dalla struttura del framework, o costruire sulla parte superiore del framework non è una cosa così negativa?

Ad esempio, supponiamo che avessi un framework con una classe Controller di base e l'ho esteso per una determinata parte della mia applicazione. Quale accordo ha più senso e perché?

Struttura della classe A:

  • File sorgente intuitivi e facili da trovare durante il debug.
  • La struttura dei nomi di file / directory rispecchia l'erarchia di classe.
- Framework_Control                 "Framework\Control.php"
   - Framework_Control_Index        "Framework\Control\Index.php"
   - Framework_Control_Home         "Framework\Control\Home.php"
   - Framework_Control_Contact      "Framework\Control\Contact.php"
   - Framework_Control_About        "Framework\Control\About.php"

Struttura della classe B:

  • Mantiene il framework modulare e facilmente sostituibile / aggiornabile.
  • Aggiunge una certa complessità alla struttura delle directory, la denominazione di directory / file non segue più l'erarchia di classe per tutto il tempo.
- Framework_Control                 "Framework\Control.php"
   - Application_Control_Index      "Application\Control\Index.php"
   - Application_Control_Home       "Application\Control\Home.php"
   - Application_Control_Contact    "Application\Control\Contact.php"
   - Application_Control_About      "Application\Control\About.php"

So che, nel complesso, si ridurrà alle preferenze personali, ma voglio assicurarmi di valutare tutti i pro e i contro prima di decidere da che parte andare. Dipende davvero dalla denominazione della classe e dalla struttura della directory poiché la gerarchia effettiva rimarrebbe la stessa in entrambi i casi.

È stato utile?

Soluzione

Ciò che si riduce davvero è cosa farai quando aggiorni Framework \ Control.php nell'applicazione XYZ. Tornerai all'applicazione ABC e apporterai la stessa modifica? E se fosse un bug critico?

Per la manutenibilità di tutti i tuoi progetti sceglierei la tua seconda opzione.

Altri suggerimenti

Ti suggerirei di visualizzare il tuo codice sorgente in due diverse categorie, dipendenze esterne o codice che viene utilizzato su più siti e non nativo di uno singolo e dipendenze native o il codice che è nativo del particolare sito che " sto lavorando su.

Sembra che Framework / Control.php faccia parte di una dipendenza esterna più ampia e debba essere gestita come tale, mentre i file Application / Control sono tutti nativi del particolare sito Web.

L'uso di questa differenziazione nella nostra struttura di codice ha reso molto più facile riutilizzare il nostro framework interno tra più siti molto facilmente.

Come ultimo pensiero, potresti considerare di guardare a cosa stanno facendo i principali framework là fuori come Zend Framework, Symfony e altri. Anche se l'intero framework potrebbe essere più di quello che desideri, la struttura dei framework può fornire molte intuizioni su buone pratiche comuni che vengono utilizzate dagli sviluppatori PHP ovunque.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top