Når du starter med PHP, kan det være skremmende å finne ut hvordan du best kan organisere et prosjekt. Hvis du noen gang har blitt forvekslet med hvor du skal sette bildene dine, eksterne biblioteker, eller holde logikken din skille fra layoutet, så sjekk disse tipsene; de får deg på vei i riktig retning.
Jeg vil si at nummer én ting i å få prosjektet oppe og kjører raskt, har en solid katalogstruktur som du kan bruke til flere prosjekter. Hvis du bruker et rammeverk, vil det vanligvis gi en struktur å bruke, men i dette scenariet jobber vi på et enkelt nettsted eller en app.
Du er sannsynligvis veldig kjent med public_html
struktur. Dette er dokumentroten der alle dine offentlige filer er tilgjengelige (/public_html/page.php
er tilgjengelig på example.com/page.php
).
De ressurser
katalogen bør inneholde alle tredjepartsbiblioteker, tilpassede biblioteker, konfigger og annen kode som fungerer som en ressurs i prosjektet ditt.
Som designere og utviklere er vårt hovedmål å gjøre så lite arbeid som mulig. En måte å nå dette målet på er med config-filer. For å få en bedre ide om hva konfigurasjonsfilen bør ha, bør du sjekke ut dette eksemplet.
array ("db1" => array ("dbname" => "database1", "brukernavn" => "dbUser", "passord" => "pa $$", "vert" => "lokalhost"), "db2 "=" array ("dbname" = "" database2 "," brukernavn "=>" dbUser "," passord "=>" pa $$ "," vert "=>" lokalhost "))," urls "=> array ("resources" => "/ path / to / resources", "images" => array ("innhold" = "array" > $ _SERVER ["DOCUMENT_ROOT"]. "/ Bilder / innhold", "layout" => $ _SERVER ["DOCUMENT_ROOT"]. "/ Bilder / layout"))); / * Jeg vil vanligvis plassere følgende i en oppstartsfil eller en type miljøoppsettfil (kode som kjøres ved starten av hver sideforespørsel), men de fungerer like bra i konfigurasjonsfilen din hvis den er i PHP (noen alternativer å php er xml eller ini filer). * / / * Å lage konstanter for tungt brukte stier gjør ting mye lettere. ex. require_once (LIBRARY_PATH. "Paginator.php") * / definert ("LIBRARY_PATH") eller definere ("LIBRARY_PATH", realpath (dirname (__ FILE__). '/ library')); definert ("TEMPLATES_PATH") eller definere ("TEMPLATES_PATH", realpath (dirname (__ FILE__). '/ maler')); / * Feilrapportering. * / ini_set ("error_reporting", "true"); error_reporting (E_ALL | E_STRCT); ?>
Dette er en grunnleggende drop-in config-fil. Et flerdimensjonalt array tjener som en fleksibel struktur for tilgang til ulike konfigurasjonselementer, for eksempel databaser.
Ved å bruke konstanter for vanlig brukte baner, er det inkludert uttalelser (krever
eller inkludere
) en bris, og hvis banen aldri endrer, trenger du bare å oppdatere den på ett sted.
Ved å bruke forskjellige konfigurasjonsfiler for flere miljøer kan du ha relevante innstillinger avhengig av det nåværende miljøet. Betydning Hvis du bruker forskjellige databasegodkjenninger eller forskjellige baner for hvert miljø, ved å sette opp de respektive config-filene, sørger du for at koden din vil fungere uten problemer når du oppdaterer ditt nettsted. Dette lar deg også ha forskjellige feilrapporteringsinnstillinger basert på det nåværende miljøet. Vis aldri feil på ditt nettsted! Vise feil på det levende nettstedet kan utsette sensitive data til brukere (for eksempel passord).
Gjenbrukbare maler er en annen stor tidsbesparende. Det er noen gode biblioteker for templering (for eksempel Smarty), og jeg oppfordrer alltid å bruke et slikt bibliotek i stedet for å gjenoppfinne hjulet. Disse bibliotekene tilbyr mye funksjonalitet (som hjelpemetoder for formatering av valuta og forvirrende e-postadresser). Siden dette er et enkelt nettsted, men vi ønsker ikke å ta deg tid til å sette opp biblioteket og vil bruke de mest grunnleggende av grunnleggende maler. Vi oppnår dette ved å inkludere vanlige seksjoner eller moduler på våre nettsider; på denne måten hvis vi ønsker å endre noe i toppteksten, som å legge til en link til den globale navigasjonen, blir den spredt over hele nettstedet.
Enkel side Enkel side
- Hjem
- artikler
- Portfolio
- PHP
- HTML
- CSS
Bunntekst innhold ...
La oss si at vi setter alle våre layoutkomponenter (header, footer, rightPanel) i ressursmappen under maler.
Mens dette grunnleggende malesystemet får deg til en god start, kan du ta det mye lenger. For eksempel kan du opprette en klasse eller funksjoner som inkluderer alle malfiler og godta en innholdsfil som et argument som skal gjengis i oppsettet. På denne måten behøver du ikke å inkludere malfilene på hver side av nettstedet ditt, men heller abstrakt som logikk ut, noe som betyr enda mindre arbeid på veien. Jeg skal vise deg et raskt eksempel.
0) foreach ($ variabler som $ key => $ verdi) if (strlen ($ key)> 0) $ $ key = $ verdi; require_once (TEMPLATES_PATH. "/header.php"); ekko "\ n "." \ t\ n "; demand_once (TEMPLATES_PATH." /footer.php ");?>\ n "; hvis (file_exists ($ contentFileFullPath)) require_once ($ contentFileFullPath); else / * Hvis filen ikke ble funnet, kan feilen håndteres på mange måter. I dette tilfellet vil vi bare inkludere en feil mal. * / require_once (TEMPLATES_PATH. "/error.php"); // lukk innhold div echo "\ t\ n "; demand_once (TEMPLATES_PATH." /rightPanel.php "); // lukk container div echo"
Dette forutsetter at du har en fil som heter home.php i katalogen maler som fungerer som en innholdsmal.
$ setInIndexDotPhp); renderLayoutWithContentFile ("home.php", $ variabler); ?>
Hjemmeside
Større separasjon av logikk og visning (php og html). Å skille bekymringer som dette gjør for renere kode, og jobben til designeren eller utvikleren blir lettere da de mest fungerer med deres respektive kode.
Innkapsling av mallogikken til en funksjon lar deg gjøre endringer i hvordan malen gjøres uten å oppdatere den på hver side av nettstedet ditt.
På Unix-baserte systemer (os x, linux) er det en fin liten funksjon som heter symlinks (Symbolic Links). Symlinks er referanser til faktiske kataloger eller filer på filsystemet. Dette er veldig bra for når du har en delt ressurs, for eksempel et bibliotek som brukes mellom flere prosjekter. Her er noen konkrete ting du kan gjøre med symlinks:
Har to versjoner av ressurskatalogen din. Når du oppdaterer din live-server, kan du laste opp de nyeste filene dine til en vilkårlig katalog. Bare pek symlinket til denne nye katalogen ved å umiddelbart oppdatere koden din. Hvis noe går galt, kan du øyeblikkelig vende tilbake til forrige (arbeids) katalog.
Felles ressurser håndteres enkelt med symlinks. Si at du har et tilpasset bibliotek du har jobbet med, noen oppdateringer til biblioteket du lager i ett prosjekt, vil være tilgjengelig umiddelbart i en annen.
Symlinks, eller softlinks, fungerer som referanser til fulle baner på filsystemet. Du kan bruke symlinks på flere steder og filsystemet behandler dem som om de var den faktiske filen eller katalogen de refererer til. Hardlinks derimot er poeng til en fil på disken (tenk snarveier i Windows); de tar deg til den faktiske plasseringen av filen.
Det er noen ting du bør vurdere når du bruker symlinks. Din serverkonfigurasjon må settes opp for å følge symlinks. For Apache gjøres dette i httpd.conf filen. Finn katalogen Block og sørg for at Options FollowSymLinks er der. Hvis ikke, legg det til og start Apache på nytt.
Alternativer FollowSymLinks TillatOverride None
Det er 2 måter å lage symlinks på i OS X:
Via kommandolinjen navigerer du (cd, bytt katalog) til katalogen der du vil at symlink skal opprettes, og bruk følgende kommando:
$: ln -s / path / to / actual / dir targetDir
Så hvis vårt tilpassede bibliotek lever i ~ / Nettsteder / bibliotek / myCustomLibrary
Vi ville CD til hvor vi vil bruke det biblioteket cd ~ / Nettsteder / mySite / ressurser / bibliotek
og skriv inn:
$: ln-s ~ / Nettsteder / biblioteker / myCustomLibrary myCustomLibrary
Merk at denne metoden skal fungere i alle Unix-baserte operativsystemer.
Alternativet er gjennom finneren. Ved å holde alt + cmd mens du klikker og drar en fil, opprettes en Symlink (eller alias i os x) som peker på filen..
For å oppnå dette i Windows må du bruke kommandoen mklink i ledeteksten:
C: \ mklink / D C: \ biblioteker \ myCustomLibrary C: \ Brukere \ derek \ Nettsteder \ mySite \ ressurser \ library \ myCustomLibrary
Disse tipsene er ment for nybegynnere eller de som lager enkle nettsteder eller applikasjoner. Ideelt for større applikasjoner eller nettsteder, vil du vurdere noe mer avansert som MVC arkitektur og Object Oriented programmering. Jeg oppfordrer deg til å se på disse når du har fått føttene våte og føler at du har vokst opp de fleste trinnene ovenfor. Jeg bestemte meg for ikke å dekke kildekontroll, da det er et ganske stort emne i seg selv, men disse tipsene skal hjelpe deg med å organisere filene dine for å få enklere kildekontroll hvis det er ønskelig (hint: lagre ting som layoutbilder i ressurskatalogen og symlink det inn i din / Public_html / img
dir). Definitivt se på å bruke kildekontroll, som subversion eller git for alle dine prosjekter.
Håper du finner disse tipsene nyttig når du starter ditt neste PHP-prosjekt. Takk!