Atunci când începeți cu PHP, puteți descoperi cât de bine să organizați un proiect. Dacă v-ați confundat vreodată cu unde să vă puneți imaginile, bibliotecile externe sau să vă păstrați logica separată de aspectul dvs., atunci verificați aceste sfaturi; ei te vor îndrepta în direcția cea bună.
Aș spune că numărul unu în obținerea rapidă a proiectului dvs. are o structură de directoare solidă pe care o puteți reutiliza pentru mai multe proiecte. Dacă utilizați un cadru, de obicei acesta va oferi o structură de utilizat, dar în acest scenariu lucrăm la un site sau o aplicație simplă.
Probabil că sunteți foarte familiarizat cu public_html
structura. Acesta este documentul Root în care sunt accesate toate fișierele dvs. publice (/public_html/page.php
este accesat la example.com/page.php
).
resurse
directorul ar trebui să dețină toate bibliotecile terțe părți, bibliotecile personalizate, config-urile și orice alt cod care acționează ca o resursă în proiectul dvs..
Ca designeri și dezvoltatori obiectivul nostru principal este de a face cât mai puțin de lucru posibil. O modalitate de a atinge acest obiectiv este cu fișierele de configurare. Pentru a obține o idee mai bună despre ce ar trebui să aibă fișierul de configurare, verificați acest exemplu.
array ("db1" => array ("dbname" => "database1", "username" => "dbUser", " "=> array (" dbname "=" "baza de date2", "username" => "dbUser", "password" => "pa $$" array ("content" => "/ path / to / resurses", "images" => array ("contentURL" => "http://example.com" > $ _SERVER ["DOCUMENT_ROOT"]. "/ Images / content", "layout" => $ _SERVER ["DOCUMENT_ROOT"]. / * Voi plasa de obicei următoarele într-un fișier de bootstrap sau într-un fișier de configurare de mediu (cod care se execută la începutul fiecărei solicitări de pagină), dar funcționează la fel de bine în fișierul config dacă este în php (unele alternative pentru php sunt fișiere xml sau ini). * / / * Crearea de constante pentru căile folosite foarte mult face lucrurile mult mai ușor. ex. (LIBRARY_PATH) sau definește ("LIBRARY_PATH", realpath (dirname (__FILE__) ./bibliotecă)); definit ("TEMPLATES_PATH") sau defini ("TEMPLATES_PATH", realpath (dirname (__FILE__). / template)); /* Raportarea erorii. * / ini_set ("error_reporting", "true"); error_reporting (E_ALL | E_STRCT); ?>
Acesta este un fișier de configurări de bază. O matrice multidimensională servește ca o structură flexibilă pentru accesarea diferitelor elemente de configurare, cum ar fi acreditările bazei de date.
Utilizarea constantelor pentru căile utilizate în mod obișnuit face include declarații (necesita
sau include
) o briza și dacă calea se va schimba vreodată, va trebui să o actualizați într-un singur loc.
Prin utilizarea diferitelor fișiere de configurare pentru medii multiple, puteți avea setări relevante, în funcție de mediul actual. Înseamnă că, dacă utilizați alte acreditări de baze de date sau căi diferite pentru fiecare mediu, prin configurarea respectivelor fișiere de configurare, vă asigurați că codul dvs. va funcționa fără hassle atunci când vă actualizați site-ul live. De asemenea, acest lucru vă permite să aveți diferite setări de raportare a erorilor pe baza mediului actual. Nu afișați niciodată erori pe site-ul dvs. live! Afișarea erorilor pe site-ul live ar putea expune date sensibile utilizatorilor (cum ar fi parolele).
Șabloanele reutilizabile reprezintă un alt timp de economisire a timpului. Există câteva biblioteci minunate pentru template-uri (cum ar fi Smarty) și întotdeauna încurajez să folosiți o astfel de bibliotecă în loc să reinventați roata. Aceste biblioteci oferă o mulțime de funcționalități (cum ar fi metodele de ajutor pentru formatarea valutei și adresele de e-mail care vă încurcă). Din moment ce acesta este un site simplu, cu toate acestea, nu vrem să luăm timp pentru a configura biblioteca și vom folosi cele mai elementare șabloane de bază. Realizăm acest lucru prin includerea de secțiuni sau module comune în paginile site-ului nostru; în acest fel, dacă vrem să schimbăm ceva în antet, cum ar fi adăugarea unui link către navigația globală, este propagat pe întreg site-ul.
Site simplu Site simplu
- Acasă
- Articole
- Portofoliu
- PHP
- HTML
- CSS
Conținutul footerului ...
Să presupunem că am pus toate componentele layout-ului (header, footer, rightPanel) în directorul nostru de resurse sub șabloane.
În timp ce acest sistem de șabloane de bază vă pune la dispoziție un început excelent, puteți să-l luați mult mai departe. De exemplu, puteți să creați o clasă sau funcții care să includă toate fișierele șablon și să acceptați un fișier de conținut ca argument pentru a face în cadrul aspectului. În acest fel, nu trebuie să păstrați inclusiv fișierele de șabloane în fiecare pagină a site-ului dvs., ci mai degrabă că această logică înseamnă mai puțină muncă pe drum. Vă voi arăta un exemplu rapid.
0) foreach ($ variabile ca $ cheie => valoare $) if (strlen ($ key)> 0) $ $ key = valoarea $; require_once (TEMPLATES_PATH. "/header.php"); ecou "\ n "." \ t\ n "; require_once (TEMPLATES_PATH." /footer.php ");?>Dacă file_exists ($ contentFileFullPath)) require_once ($ contentFileFullPath); altceva / * Dacă fișierul nu este găsit, eroarea poate fi tratată în mai multe moduri, în acest caz vom include o eroare șablon. * / require_once (TEMPLATES_PATH. "/error.php"); // închideți conținutul div echo "\ t\ n "; require_once (TEMPLATES_PATH." /rightPanel.php "); // închide container echo"
Aceasta presupune că aveți un fișier numit home.php în directorul de șabloane care funcționează ca un șablon de conținut.
$ setInIndexDotPhp); renderLayoutWithContentFile ("home.php", variabile $); ?>
Pagina principala
Separarea mai mare a logicii și a vizualizării (php și html). Separarea acestor preocupări face ca codul să fie mai curat, iar lucrarea designerului sau dezvoltatorului devine mai ușoară, deoarece acestea lucrează cel mai mult cu codul lor.
Încapsularea logicii șablonului într-o funcție vă permite să efectuați modificări ale redării șablonului fără să îl actualizați pe fiecare pagină a site-ului dvs..
Pe sistemele bazate pe Unix (os x, linux) există o caracteristică puțin cunoscută numită symlinks (link-uri simbolice). Simbolink-urile sunt referiri la directoare sau fișiere reale din sistemul de fișiere. Acest lucru este foarte bun pentru atunci când aveți o resursă partajată, cum ar fi o bibliotecă folosită între mai multe proiecte. Iată câteva lucruri concrete pe care le puteți face cu simbolurile:
Aveți două versiuni ale directorului de resurse. Când vă actualizați serverul live, puteți încărca cele mai recente fișiere într-un director arbitrar. Pur și simplu îndreptați simbolul către acest nou director actualizând instantaneu baza de cod. Dacă se întâmplă ceva în neregulă, puteți reveni direct la directorul anterior (care lucrează).
Resursele partajate sunt ușor de gestionat cu simbolinks. Spuneți că aveți o bibliotecă personalizată pe care ați lucrat, orice actualizare a bibliotecii pe care o faceți în cadrul unui proiect va fi disponibilă imediat în altul.
Simbolinks, sau softlink-uri, acționează ca referințe la căile complete în sistemul de fișiere. Aveți posibilitatea să utilizați link-uri de simboluri în mai multe locații, iar sistemul de fișiere le tratează ca și cum ar fi fișierul sau directorul propriu-zis. Hardlink-urile pe de altă parte sunt indicii unui fișier de pe disc (cred că comenzile rapide în ferestre); te vor duce la locația reală a dosarului.
Există câteva lucruri pe care ar trebui să le luați în considerare atunci când utilizați simboluri. Configurația serverului dvs. trebuie să fie configurată pentru a urma simbolink-uri. Pentru Apache, acest lucru se face în fișierul httpd.conf. Găsiți blocul de directoare și asigurați-vă că există Opțiuni FollowSymLinks. Dacă nu îl adăugați și reporniți Apache.
Opțiuni FollowSymLinks AllowOverride Niciunul
Există 2 moduri de a crea simboluri în OS X:
Pe linia de comandă, navigați (cd, schimbați directorul) în directorul în care doriți să fie creat symlink, apoi utilizați următoarea comandă:
$: ln -s / cale / către / actual / dir targetDir
Deci, dacă locuiește biblioteca personalizată ~ / Site-uri / biblioteci / myCustomLibrary
am citit unde vrem să folosim biblioteca cd ~ / Sites / mySite / resurse / bibliotecă
și introduceți:
$: ln -s ~ / Site-uri / biblioteci / myCustomLibrary myCustomLibrary
Rețineți că această metodă ar trebui să funcționeze în toate sistemele de operare bazate pe Unix.
Alternativa este prin căutător. Prin menținerea alt + cmd în timp ce dați clic și trageți un fișier, este creat un Symlink (sau un alias în os x) care indică spre fișier.
Pentru a realiza acest lucru în ferestre, va trebui să utilizați comanda mklink în linia de comandă:
C: \ mklink / D C: \ biblioteci \ myCustomLibrary C: \ Utilizatori \ derek \ Sites \ mySite \ resources \ library \ myCustomLibrary
Aceste sfaturi sunt destinate începătorilor sau celor care creează site-uri sau aplicații simple. Ideal pentru aplicații sau site-uri mai mari, veți dori să luați în considerare ceva mai avansat, cum ar fi arhitectura MVC și programarea orientată pe obiecte. Vă încurajez să vă uitați în aceste lucruri odată ce vă umeziți picioarele și vă simțiți că ați depășit majoritatea pașilor de mai sus. Am decis să nu acopere controlul sursei, deoarece este un subiect destul de mare, dar aceste sfaturi ar trebui să vă ajute în organizarea fișierelor pentru un control mai ușor al sursei, dacă se dorește (sugestii: să stocați chestii asemănătoare imaginilor în directorul de resurse și să le / Public_html / img
dir). Cu siguranță, uitați-vă la utilizarea controlului sursă, cum ar fi subversiunea sau git pentru toate proiectele dvs..
Sper că veți găsi aceste sfaturi utile atunci când începeți următorul proiect PHP. Mulțumiri!