2013-10-29 6 views
15

Sono nuovo di PHP e voglio conoscere la struttura di directory per i progetti di php. Ho esperienza in Java e in Java abbiamo src contiene i file di origine Java, WEB-INF contiene lib e pagine jsp. Abbiamo una struttura di directory standard simile in PHP? Abbiamo anche stratificazione in php come se avessimo strati in java (ad esempio Web, Service, livelli DAO)Struttura del progetto per PHP

Ho cercato pochi collegamenti. Ma ognuno dà risposte diverse.

Non so se possiamo confrontare le due lingue. Voglio solo attenermi ad alcuni standard.

Grazie in anticipo.

risposta

20

No. PHP è ciò che ne fai. Può essere file flat molto semplici, o comunque lo vuoi tu.

Detto questo, ci sono alcuni standard di codifica concordati, ma non c'è "applicazione" di tali standard. Si chiamano PSR (PHP Standards Recommendation). C'è un fondo su di esso qui: http://net.tutsplus.com/tutorials/php/psr-huh/
È possibile visualizzare gli standard uno per uno qui: http://www.php-fig.org/psr/

maggior parte dei quadri principali rispetta questi standard, e se avete intenzione di utilizzare uno, può essere più facile per andare con il flusso.

Ancora, ogni framework, progetto, plug-in, programma, ecc. Hanno layout diversi con strutture di progetto diverse. Una struttura comune è qualcosa di simile:

-framework_dir 
-public_html 
    -js 
    -img 
    -css 
    -index.php 
    -protected/private 
     -controllers 
     -models 
     -views 
     -etc 

Essi quindi utilizzare il file .htaccess di bloccare l'accesso alle directory protette. Ancora una volta, questa è solo la rappresentazione comune che ho visto in diversi framework. Se stai facendo un progetto personale, usa semplicemente qualcosa che ti è comodo. Ogni framework ti darà una libreria diversa o un modo per accedere ai dati. Non ci sono "livelli", ma di nuovo ogni framework ha oggetti che gestiscono diverse aree (email, database, cache, http, log, ecc.). Perché ci sono dozzine di persone famose, sta solo a te trovare quello che si adatta alla tua filosofia o progetto. Guarda alcuni dei video dei blog della durata di 5 minuti, guarda cosa sono le jive e poi esegui un test per un paio di giorni. Se non ti piace, passa a un altro.

+0

Grazie per il vostro aiuto. Ho fatto il modo in cui mi hai suggerito. Ho un file delle proprietà del database che voglio leggere dal codice php e voglio limitare l'accesso dell'utente attraverso il browser. Puoi darmi un esempio di file .htaccess in cui posso apportare modifiche. Ho provato ma mi sta dando un errore interno del server. – javafan

2

Sfortunatamente (o no?) Sei molto libero con PHP. Tocca a voi.

Ecco la mia struttura:

framework/ 
controllers/    
models/ 
configs/ 
files/ 
templates/ 
themes/ 
tmp/ 
index.php 
init.php 
.htaccess 

È possibile controllare l'accesso tramite .htaccess.

+0

E gli script di CI? –

+0

@NBhargav quali script CI vuoi dire? –

+0

Se voglio utilizzare l'integrazione continua con il progetto PHP, come mantieni la cartella degli script di CI. Dove e come lo tieni? –

0

Con l'invenzione di Composer, le persone ora hanno un posto centrale per registrare i loro progetti per il mondo da consumare, e altre persone ora possono guardare quel codice base e vedere le somiglianze.

Il risultato è questo: https://github.com/php-pds/skeleton

In breve:

If a package has a root-level directory for ... 
          ... then it MUST be named: 
command-line executables bin/ 
configuration files   config/ 
documentation files   docs/ 
web server files   public/ 
other resource files  resources/ 
PHP source code    src/ 
test code     tests/ 

Questa norma non fa ulteriori raccomandazioni su quale directory devono esistere sotto src o public. Suggerirei di avere uno spazio dei nomi sotto lo src e di implementare qualsiasi diversificazione di "modelli", "controllori" ecc. Facendolo tramite il nome di classe completo, ad es.se si decide di avere una classe Projectname\Controller\WhateverController, essa risiederà nel percorso compatibile PSR-4 src/Controller/WhateverController.php e sarà caricata automaticamente tramite Composer con "autoload":{"psr-4":{"Projectname\\": "src"}}.

-2

questa è la migliore struttura di cartelle:

this is the best folder structure