Organisera ditt nästa PHP-projekt på rätt sätt

När du börjar med PHP kan det vara skrämmande att räkna ut hur man bäst kan organisera ett projekt. Om du någonsin varit förvirrad med var du ska sätta dina bilder, externa bibliotek eller hålla din logik separerad från din layout, kolla in dessa tips. De får dig på väg i rätt riktning.

Handledning detaljer

  • Program: PHP / Projekt
  • Version: 1
  • Svårighet: Lätt
  • Beräknad slutförd tid: 20 minuter

Katalogstruktur

Jag skulle säga att nummer ett i att få ditt projekt igång snabbt, har en solid katalogstruktur som du kan återanvända för flera projekt. Om du använder ett ramverk, brukar det ge en struktur att använda, men i detta scenario arbetar vi på en enkel webbplats eller app.

Bryta ner

  • Du är förmodligen mycket bekant med public_html strukturera. Det här är dokumentroten där alla dina offentliga filer är åtkomliga (/public_html/page.php nås på example.com/page.php).

    • img - Alla dina bildfiler. Jag bestämde mig för att dela innehållsbilder från layoutbilder.
    • css - Alla dina css-filer.
    • js - Alla dina javascript-filer.
  • De Medel katalog ska innehålla alla tredje part bibliotek, anpassade bibliotek, configs och annan kod som fungerar som en resurs i ditt projekt.

    • config.php - Huvud konfigurationsfil. Ska lagra inställningar på hela webbplatsen.
    • bibliotek - central plats för alla anpassade och tredje part bibliotek.
    • mallar - Återanvändbara komponenter som utgör din layout.

Konfigfilen

Som designers och utvecklare är vårt främsta mål att göra så lite arbete som möjligt. Ett sätt att nå detta mål är med config-filer. För att få en bättre uppfattning om vad konfigurationsfilen ska ha kolla in det här exemplet.

 array ("db1" => array ("dbname" => "database1", "användarnamn" => "dbUser", "password" => "pa $$", "värd" => "localhost"), "db2 "=" array ("dbname" = "" database2 "," användarnamn "=>" dbUser "," password "=>" pa $$ "," värd "=>" localhost "))," urls "=> array ("resources" => "/ path / to / resources", "images" => array ("content" = "array" > $ _SERVER ["DOCUMENT_ROOT"]. "/ Bilder / innehåll", "layout" => $ _SERVER ["DOCUMENT_ROOT"]. "/ Bilder / layout")))); / * Jag brukar placera följande i en bootstrap-fil eller någon typ av miljöinställningsfil (kod som körs i början av varje sidförfrågan), men de fungerar lika bra i din config-fil om den finns i php (vissa alternativ till php är xml eller ini-filer). * / / * Att skapa konstanter för tunga vägar gör sakerna mycket enklare. ex. require_once (LIBRARY_PATH. "Paginator.php") * / definierad ("LIBRARY_PATH") eller definiera ("LIBRARY_PATH", realpath (dirname (__ FILE__). '/ library')); definieras ("TEMPLATES_PATH") eller definiera ("TEMPLATES_PATH", realpath (dirname (__ FILE__). '/ mallar')); /* Felrapportering. * / ini_set ("error_reporting", "true"); error_reporting (E_ALL | E_STRCT); ?>

Det här är en grundläggande drop-in config-fil. En mångdimensionell grupp fungerar som en flexibel struktur för åtkomst till olika konfigurationsdetaljer, såsom databasuppgifter.

  • db - Spara databasuppgifter eller andra uppgifter som gäller dina databaser.
  • sökvägar - Vanligtvis använda sökvägar till olika resurser för din webbplats.
    • loggfiler
    • ladda upp kataloger
    • Medel
  • webbadresser - Lagring av webbadresser kan vara väldigt praktisk när du refererar till resurserna på din webbplats.
  • e-postmeddelanden - Spara debugging eller admin-e-postmeddelanden som ska användas vid hantering av fel eller i kontaktformulär.

Att använda konstanter för vanliga vägar gör bland annat uttalanden (fordra eller inkludera) en bris, och om vägen någonsin ändras behöver du bara uppdatera den på ett ställe.

Använda olika konfigurationsfiler för flera miljöer

Genom att använda olika konfigurationsfiler för flera miljöer kan du ha relevanta inställningar beroende på aktuell miljö. Om du använder olika databasuppgifter eller olika vägar för varje miljö, genom att konfigurera respektive config-filer, försäkrar du att din kod fungerar utan problem när du uppdaterar din levande webbplats. Detta låter dig också ha olika felrapporteringsinställningar baserat på den aktuella miljön. Visa aldrig fel på din levande webbplats! Att visa fel på den levande webbplatsen kan avslöja känslig data för användare (t.ex. lösenord).

Layouten

Återanvändbara mallar är en annan stor tidsbesparare. Det finns några bra bibliotek för templering (som Smarty), och jag uppmanar alltid att använda ett sådant bibliotek istället för att återuppfinna hjulet. Dessa bibliotek erbjuder en hel del funktionalitet (som hjälpar metoder för att formatera valuta och obfuscating e-postadresser). Eftersom det här är en enkel sida men vi vill inte ta dig tid att konfigurera biblioteket och kommer att använda de mest grundläggande grundläggande mallarna. Vi uppnår detta genom att inkludera gemensamma avsnitt eller moduler på våra sidor. på det här sättet om vi vill ändra något i rubriken, som att lägga till en länk till den globala navigeringen, sprids den över hela webbplatsen.

header.php

    Enkel webbplats   

Enkel webbplats

  • Hem
  • artiklar
  • Portfölj

rightPanel.php

  • PHP
  • html
  • CSS

footer.php

Footer innehåll ...

index.php

Låt oss säga att vi lägger alla våra layoutkomponenter (sidhuvud, sidfot, högerPanel) i vår resurskatalog under mallar.

 

Ta det vidare

Medan detta grundläggande mallsystem får dig till en bra start kan du ta det mycket längre. Du kan till exempel skapa en klass eller funktioner som innehåller alla mallfiler och accepterar en innehållsfil som ett argument för att göra inom layouten. På så sätt behöver du inte behålla mallfilerna på alla sidor på din webbplats, men snarare abstrakta som logikar ut vilket betyder ännu mindre arbete på vägen. Jag ska visa dig ett snabbt exempel.

/resources/library/templateFunctions.php

 0) foreach ($ variabler som $ key => $ värde) if (strlen ($ key)> 0) $ $ key = $ värde;  require_once (TEMPLATES_PATH. "/header.php"); eko "
\ n "." \ t
\ n "; om (file_exists ($ contentFileFullPath)) require_once ($ contentFileFullPath); annars / * Om filen inte hittas kan felet hanteras på många sätt. I det här fallet kommer vi bara att inkludera ett fel mall. * / require_once (TEMPLATES_PATH. "/error.php"); // stäng innehåll div echo "\ t
\ n "; require_once (TEMPLATES_PATH." / rightPanel.php "); // stäng container div echo"
\ n "; require_once (TEMPLATES_PATH." /footer.php ");?>

index.php

Detta förutsätter att du har en fil som heter home.php i din mall katalog som fungerar som en innehållsmall.

 $ setInIndexDotPhp); renderLayoutWithContentFile ("home.php", $ variabler); ?>

home.php

 

Hemsida

Fördelar med denna metod inkluderar:

  • Större separation av logik och vy (php och html). Att skilja problem som detta gör renare kod och jobbet hos formgivaren eller utvecklaren blir lättare eftersom de oftast arbetar med respektive kod.

  • Inkapsling av malllogiken till en funktion gör att du kan ändra hur mallen görs utan att uppdatera den på varje sida på din webbplats.

symlinks

På Unix-baserade system (os x, linux) finns en snygg liten funktion som heter symlinks (Symbolic Links). Symlinks är referenser till faktiska kataloger eller filer på filsystemet. Det här är verkligen bra för när du har en gemensam resurs, till exempel ett bibliotek som används mellan flera projekt. Här är några konkreta saker som du kan göra med symlinks:

  • Har två versioner av din resurs katalog. När du uppdaterar din live-server kan du ladda upp dina senaste filer till en godtycklig katalog. Helt enkelt peka symlinken till den här nya katalogen och uppdatera din kodbas direkt. Om något går fel kan du omedelbart återgå till föregående (fungerande) katalog.

  • Delade resurser hanteras enkelt med symlinker. Säg att du har ett anpassat bibliotek som du har arbetat med, alla uppdateringar till biblioteket du gör i ett projekt kommer omedelbart att finnas tillgängliga i en annan.

Använda Symlinks

Symlinks vs Hardlinks

Symlinks, eller softlinks, fungerar som referenser till hela vägarna på filsystemet. Du kan använda symlinks på flera platser och filsystemet behandlar dem som om de var den faktiska filen eller katalogen de refererar till. Hardlinks å andra sidan är pekare till en fil på disken (tänk genvägar i Windows); De tar dig till den faktiska platsen för filen.

Det finns några saker du bör tänka på när du använder symlinks. Din serverkonfiguration måste ställas in för att följa symlinks. För Apache görs detta i httpd.conf-filen. Hitta katalogen Block och se till att Options FollowSymLinks finns där. Om inte lägg till det och starta om Apache igen.

 Alternativ FollowSymLinks TillåtOverride None 

Skapa Symlinks i OS X

Det finns 2 sätt att skapa symlinks i OS X:

  • Via kommandoraden navigerar du (cd, byta katalog) till katalogen där du vill att symlinken ska skapas och använd följande kommando:

    $: ln -s / path / to / actual / dir targetDir

    Så om vårt anpassade bibliotek bor i ~ / Webbplatser / bibliotek / myCustomLibrary vi skulle cd till var vi vill använda det biblioteket cd ~ / Sites / mySite / resources / library och ange:

    $: ln -s ~ / Sites / libraries / myCustomLibrary myCustomLibrary

    Observera att den här metoden ska fungera i alla Unix-baserade operativsystem.

  • Alternativet är genom sökaren. Genom att hålla alt + cmd medan du klickar och drar en fil skapas en Symlink (eller alias i os x) som pekar på filen.

Skapa Symlinks i Windows

För att uppnå detta i Windows måste du använda kommandot mklink i kommandotolken:

 C: \ mklink / D C: \ libraries \ myCustomLibrary C: \ Users \ derek \ Sidor \ mySite \ resources \ library \ mySustomLibrary

Sammanfattning

Dessa tips är avsedda för nybörjare eller de som skapar enkla webbplatser eller applikationer. Idealiskt för större applikationer eller webbplatser, vill du överväga något mer avancerat som MVC-arkitekturen och Objektorienterad programmering. Jag uppmuntrar dig att titta på dessa när du har fått fötterna våta och känner att du har odlat de flesta stegen ovan. Jag bestämde mig för att inte täcka källkontroll eftersom det är ett ganska stort ämne på egen hand, men de här tipsen bör hjälpa dig att organisera dina filer för enklare källkontroll om så önskas (tips: lagra saker som layoutbilder i din resurskatalog och symbolisera det i din / Public_html / img dir). Definitivt titta på att använda källkontroll, som subversion eller git för alla dina projekt.

Hoppas att du hittar de här tipsen till hjälp när du börjar ditt nästa PHP-projekt. Tack!

Medel

  • Smarty Templating Engine
  • Multitierarkitektur
  • MVC
  • Objektorienterad programmering
  • Subversion For Designers (versionskontroll)
  • symlinks
  • hårda länkar
  • Följ oss på Twitter, eller prenumerera på NETTUTS RSS-flödet för fler dagliga webbutvecklingstoppar och artiklar.