I en tidigare lektion här på Nettuts + lär du dig om PSR; Den artikeln beskriver emellertid inte processen att integrera den kodande stilen i dina projekt. Låt oss fixa det!
Notera: Denna artikel förutsätter att du har läst PSR-Huh?, och förstår vad PSR avser. Låt oss börja med den första standarden: PSR-0.
PHPCS-plugin är det mest användbara verktyget jag har använt.
Tidigare innehöll vi PHP-filer på ett av två sätt:
Det finns fördelar och nackdelar med båda dessa tillvägagångssätt, men jag tror att vi alla kan vara överens om att det inte är optimala eller moderna lösningar. PHP5 introducerade begreppet autoloading-filer baserat på deras klassnamn; så, PSR-0 syftar till att hålla filnamn konsekventa.
Namnrymden har inget att göra med filnamn eller autoloading; Du kan tekniskt deklarera olika namnområden i samma fil. Till exempel är följande kod helt giltig.
Det finns två
Hej
klasser i den här filen, men de bor inom olika namnområden. De två sista raderna i denna kod instämmerHej()
klasser på deras respektive namnområden. De första utgångarna "Nettuts +", medan den andra echos "Gabriel." Namnrymder tillåter dig att skilja mellan två klasser med samma namn, som du kanske brukar använda med mappar på skrivbordet. PSR-0-standarden utnyttjar helt enkelt fördelarna med namnområden, vilket gör det enkelt att autoload dina klasser. Genom att namngivna dina filer kontinuerligt kan du skapa en funktion som automatiskt hittar de nödvändiga filerna.För att vara PSR-1-kompatibel måste du också följa PSR-0.
Var noga med att läsa hela standarden, men för att sammanfatta:
.php
förlängning.Till exempel en klassreferens av:
\ Nettuts \ Database \ SQL_Postgres
om följande PSR-0 ska översättas till den här sökvägen:
./Nettuts/Database/SQL/Postgres.php
Hur kan vi implementera denna funktionalitet? Den mest uppenbara lösningen är att använda Composer, som skickas med en PSR-0-kompatibel autoloader. Om du hävdar kompositören i dina projekt (och du borde) väljer du själv autoloader istället för att skriva egna.
En PSR-0-kompatibel laddare låter dig ange en basbana och informera lastaren vilken katalog som ska se in först. För att komma igång, skapa en enkel composer.json
fil som innehåller följande JSON:
"autoload": "psr-0": "Webuts": "./", "Gmanricks": "leverantör /"
Denna JSON-fil berättar Kompositör att vi vill använda PSR-0-standarden för autoload alla Nettuts
-namespaced-filer med den aktuella katalogen (rotmappen) som basvägen. Vi vill också autoload alla klasser med Gmanricks
namnrymd, i förhållande till Säljare
mapp (t.ex.. ./ Leverantör / Gmanricks / Classname
).
Skriv nu "kompositör installera
"för att generera autoload klasserna, eller"kompositör dump-autoload
"på senare ändringar för att regenerera autoload-klasserna. Glöm inte att kräva autoloader någonstans tidigt i ditt projekt.
Komponist är ditt bästa alternativ, men det kan finnas scenarier när du vill ha en liten, enkel autoloader. PHP-FIG ger en autoloader för prov som du kan använda:
funktion __autoload ($ className) $ className = ltrim ($ className, '\\'); $ fileName = "; $ namespace ="; om ($ lastNsPos = strrpos ($ className, '\\')) $ namespace = substr ($ className, 0, $ lastNsPos); $ className = substr ($ className, $ lastNsPos + 1); $ fileName = str_replace ('\\', DIRECTORY_SEPARATOR, $ namespace). DIRECTORY_SEPARATOR; $ fileName. = str_replace ('_', DIRECTORY_SEPARATOR, $ className). '.Php'; kräva $ fileName;Det är viktigt att notera att denna loader försöker ladda alla klasser med PSR-standarden i den aktuella katalogen.
Nu när vi lyckas autoloading klasser, låt oss gå vidare till nästa standard: den grundläggande kodningsstandarden.
PSR-1 - Grundläggande kodningsstandard
PSR-1 definierar allmänna kodningsriktlinjer, som kan delas upp i två delar.
Namnkonventioner
Namnrymder tillåter dig att skilja mellan två klasser med samma namn.
Som med alla programmeringsspråk gör följande namngivningskonventioner i slutändan din kod lättare att läsa och underhålla. Här är några regler att följa:
CONSTANT_VARIABLE
).Det finns mer till det än namngivna konventioner; Följ dessa riktlinjer också:
eller =
i din kod. Stäng inte PHP i en klass.
De flesta av dessa är självförklarande, men mittenkonventionen är något förvirrande. Det förklarar i huvudsak att varje deklaration, vare sig den fungerar, klasser etc. ska separeras i sina egna filer. Detta främjar inte bara bästa metoder som kodåteranvändning och separation, men det håller din kod snygg och ren.
Det är värt att nämna att varje PSR-standard bygger på den tidigare PSR-standarden. Som sådan, för att vara PSR-1-kompatibel måste du också följa PSR-0. Genom att följa dessa två standarder kommer din kod att vara ordentligt namespaced och autoloaded. Det finns verkligen ingen anledning att inte följa dem.
Ja, vissa utvecklare klagar på PSR och föredrar att följa andra konventioner, men genom att följa denna standard kan du dela kod med alla utan att oroa dig för dess konsekvens. Med detta sagt, tvingar ingen din hand här. Det är helt enkelt en rekommenderad riktlinje.
Nästa standard, PSR-2, dyker in i detaljerna om hur du ska strukturera din kod.
PSR-2 dyker in i detaljerna om hur du ska strukturera din kod.
Därefter kommer vi till den standard som PHP-utvecklare kämpar mest med; I själva verket är det anledningen till att jag valde att skriva denna artikel.
PSR-2 definierar många regler, varav många är listade nedan:
namespace
och använda sig av
deklarationer.abstrakt
'/'slutlig
"nyckelord ska visas före synligheten medan"statisk
"går efter.Var noga med att se hela specifikationen för en fullständig översikt.
PSR-2 är lika viktigt som PSR-1 (och PSR-0). Den har för avsikt att göra kod lätt att läsa och underhålla. Men som de säger "Djävulen är i detaljerna."Det finns många detaljer att komma ihåg, vilket kan vara svårt om din programmeringsvanor skiljer sig från vad standarden definierar. Tack och lov, om du är ombord finns det verktyg som hjälper dig att hålla dig till PSR-0, PSR-1 och PSR-2. Kanske är det bästa verktyget Sublime Text plugin, PHPCS.
PHPCS-plugin är det mest användbara verktyget jag har använt när det gäller att få kod till form. Det låter dig inte bara se till att din kod följer PSR-standarderna, men det använder också PHPs linter för att söka efter syntaxfel. Detta är en bra tidsbesparare; du behöver inte längre oroa dig för syntaxfel när du testar din kod i webbläsaren.
Installera paketet via Sublim Paketstyrning (det kallas Phpcs), eller alternativt med Git, med följande kommandon:
cd ~ / Bibliotek / Application \ Support / Sublime \ Text \ 2 / Paket / git klon git: //github.com/benmatselby/sublime-phpcs.git Phpcs
Detta installerar plugin, men du behöver några beroenden innan du kan konfigurera PHPCS. Återigen är det enklaste sättet att installera dem med kompositören. Bläddra till en katalog efter eget val och skapa en composer.json
fil med följande JSON:
"namn": "Webuts PHPCS Demo", "kräver": "squizlabs / php_codesniffer": "*", "fabpot / php-cs-fixer": "*", "phpmd / phpmd": "*"
Detta installerar de tre beroendet i den aktuella mappen. Öppna ett terminalfönster till din installationsplats och skriv kompositör installera
, och det kommer ladda ner nödvändiga paket.
Nu kan du konfigurera plugin i Sublime Text. Navigera till 'Inställningar'> 'Paketinställningar'> 'PHP-kodsniffer'> 'Inställningar - Användare'.
Plugin behöver veta var de tre beroenden är, liksom den standard som vi vill att vår kod ska följa:
"phpcs_additional_args": "- standard": "PSR2", "-n": "", "phpcs_executable_path": "DEPENDENCY_PATH / leverantör / bin / phpcs", "phpmd_executable_path": "DEPENDENCY_PATH / leverantör / bin / phpmd "," php_cs_fixer_executable_path ":" DEPENDENCY_PATH / leverantör / bin / php-cs-fixer "
Dessa inställningar informerar PHPCS om att vi vill ha en PSR2-standard och tillhandahålla varje beroendeväg. Glöm inte att byta ut DEPENDENCY_PATH
med din faktiska sökväg.
Starta om Sublim, och kodsnusaren kommer att skanna din kod när du sparar dina PHP-filer.
Högerklicka i redigeraren kommer också att lista flera nya alternativ, till exempel rensningsfelmärken och försöka lösa de vanliga problemen. Med tanke på att punkten i den här artikeln är att få dig till standarden, föreslår jag att du manuellt fixar din kod och undviker automatisk fixare funktion.
PSR-standarderna skapades så att kod enkelt skulle kunna återanvändas från projekt till projekt utan att offra på kodstylkonsistens. Medan de kanske känner sig överväldigande först kan du använda idéerna och verktygen från den här artikeln för att hjälpa dig att göra övergången.
Att upprepa en sista gång: Ingen tvingar dig att ändra hur du kodar i PHP. Det är helt enkelt en guide som ursprungligen var avsedd för interoperabilitet inom ramen. Med det sagt, på Nettuts + anser vi att det är en bra metod att följa. Gör nu upp ditt eget sinne! Om du har några frågor, låt oss höra dem nedan!