Recenta inlägg
Låt oss få det ur vägen tidigt: PHP är ett konstigt och fult språk. Det är inte exceptionellt snabbt. Det är inte vackert syntaktiskt. Det är inte formulerat kring en tydlig åsikt om goda metoder för mjukvaruutveckling. Och det är fortfarande det som jag skriver mycket mjukvara i. Den uppenbara frågan är: varför? Varför använda PHP idag?
Det finns många goda skäl för det, utöver personliga idiosynkratiska preferenser. Här finns utrymme för att ta upp just detta. Varför är PHP mitt favoritspråk för webbutveckling?
Vad är PHP?
”Vad är en PHP?” Eller, vanligare, ”vad är PHP?”. I korthet är PHP ett programmeringsspråk som är gjort för webben, som bygger på programmeringsspråket C och som använder idiosynkratiska HTML-liknande taggar (eller sigill) för att innehålla sin kod. Programmeringsspråket PHP används oftast på serversidan, vilket innebär att det körs på din webbserverprogramvara, som vanligtvis kommer att servera HTML till dina besökare.
PHP stod ursprungligen för ”Personal Home Page”. Eftersom detta ganska noggrant begränsade betydelsen och önskvärdheten av att använda språket för allmänt bruk, står språket nu för ”PHP”: Hypertext Preprocessor”. Detta är vad som kallas en rekursiv akronym (ett namn som innehåller namnet). Nördar älskar dem.
Vad kan PHP göra?
Vad används PHP till? I princip allt du vill göra på en webbserver kan du göra med PHP. Gör en blogg? Japp. Skapa en fullfjädrad mjukvara-as-a-serivce-applikation? Absolut. Skriva ett litet skript för att bearbeta några data på några sekunder? PHP är utmärkt för det. Skriva en komplicerad uppsättning skript som av misstag blir ett framgångsrikt programvaruföretag? PHP används ofta på det sättet.
Om du inte litar på mig listar PHP:
- Server-side scripting
- Command-line scripting
- Skrivning av skrivbordsapplikationer
Jag är inte så säker på att jag skulle uppmuntra den sista punkten, men det är möjligt. Men de två första är vanliga och goda skäl att använda PHP under 2019.
Detta leder till ett viktigt och oundvikligt faktum…
PHP finns överallt
Det finns många skäl att känna till och älska PHP, varav det mest potenta och giltiga förmodligen är detta: det används och körs överallt där webben gör det. Ditt billiga lilla värdkontot för 3 dollar i månaden kanske låter dig köra en webbapplikation i Python eller Ruby om du handlar noga. Men det kommer definitivt att köra PHP. Det betyder att du kan räkna med det var du än befinner dig.
Och eftersom det körs överallt och är lätt att komma igång med är många mycket populära program skrivna i PHP. WordPress är det exempel som är både störst och mest bekant för mig, men verktyg som Joomla, Drupal, Magento, ExpressionEngine, vBulletin (ja, det finns fortfarande), MediaWiki med flera körs alla med PHP på servern.
Det finns också fler ramverk för PHP-tillämpningar än vad du kan få tag på: Symfony, Zend, Laravel, Aura, CakePHP, Yii och till och med det anrika CodeIgnitor. Det går säkert att göra en lista över webbramverk av viss längd för nästan vilket annat språk som helst. Och för de vanligaste webbspråken som Python, Ruby eller Node/JavaScript kanske du till och med kan samla ihop en numeriskt konkurrenskraftig lista. Men den rena mängden webbplatser som använder PHP är enorm.
WordPress skryter stolt med att det driver mer än 30 % av Internet. Man behöver inte ens lita på det faktum för att inse att en stor del av internet måste använda PHP om det faktum ens är tänkbart sant.
PHP har några mycket goda egenskaper
Enklare dynamik är inbakad i PHP
PHP gör HTML-rendering och programmering enklare än nästan alla andra språk. Så det är ganska enkelt att ändra HTML till PHP. Ändra bara din file.html
till file.php
, lägg till lite dynamik inuti några <?php
och ?>
taggar. De flesta webbservrar har redan konfigurerats så att de tar hand om resten åt dig. Det är så enkelt att nästan vem som helst kan komma igång utan att behöva ha mycket mer förståelse för programmering än så. Eftersom PHP är så vänligt att sätta tänderna i skrivs mycket dålig kod i det.
När du inser att den mesta dåliga PHP skrivs av nybörjarprogrammerare kommer det mesta av den rädsla och det hat mot PHP som du möter i världen från ett annat väsentligt problem: PHP har aldrig haft någon storartad design med en visionär idé om varför det var det perfekta språket för din webbserver. Istället är det resultatet av ett brett samarbete genom en öppen process som fungerar som en smältdegel genom vilken alla goda idéer – och några få dåliga – måste passera.
Objektorientering med (bra) pakethantering är nu normen i PHP
Och dåliga idéer kan ta sig igenom den smältdegeln. Det mest populära exemplet är att PHP 5.3 – som separat allmänt anses vara den första moderna versionen av PHP – införde goto
-angivelsen, som i allmänhet antingen hånas eller anses vara en lätt källa till fel.
Samma dåliga saker i PHP som har uppstått genom den process genom vilken språket har vuxit: objektorientering implementerades först som ett bristfälligt och begränsat koncept, standardbiblioteket är fullt av inkonsekventa namn och parameterordning, och (i ett exempel som nyligen fick en hel del uppmärksamhet) ::
-tecknet kallas av tolken av tolkaren av den för engelsktalande outgrundliga: T_PAAMAYIM_NEKDOTAYIM
.
Men idag är OOP fullt realiserat i PHP. Få språk har lika mycket Java-liknande OOP-praktik som PHP. Dessutom har PHP, till skillnad från Java, en enda och allmänt älskad pakethanterare, kallad Composer. Den var mycket bra, och därför är det inte lätt att dra in andra välskrivna och väl underhållna bibliotek i PHP.
PHP Has Gotten a Lot Faster
Men med de sakerna sagt, så utvecklas PHP på intressanta sätt. Det växer mot att bli ett ganska fullfjädrad Java-liknande (på gott och ont) objektorienterat språk. Och i likhet med Java får det enkla abstraktioner för funktionell programmering – som är det mest populära för tillfället. Det växer också med en ganska fantastisk uppsättning verktyg – PHP älskar Composer, och det på goda grunder – och en lovvärd ansträngning för att få alla dessa stora projekt med öppen källkod inom PHP att fungera lite bättre tillsammans.
Oh, och vi får inte glömma den aktuella hettan: de hastighetsökningar som PHP har gjort i PHP 7-serien. Detta anses allmänt ha initierats av HHVM som kommer från Facebook. Under en kort tid fanns det en risk att HHVM:s snabbhet skulle splittra PHP-gemenskapen. Men det gjorde det inte. Istället blev PHP bara så mycket snabbare att folk för det mesta har glömt att HHVM existerar.
PHP har en enorm gemenskap; det är inlärningsvänligt
Om du bestämmer dig för vilken häftig ny teknik du ska använda, är en sak som jag tycker att man ofta får för lite uppmärksamhet är hur det är att komma till rätta med språket. Hur är det att lära sig PHP? PHP-handledningar är vanliga och ofta ganska bra.
En nackdel med PHP:s popularitet är att man kan hitta en del mindre bra utbildning från personer som inte vet tillräckligt mycket om hur det egentligen är att använda verktyget. Eller som senast följde ”bästa praxis” som var aktuell för tio år sedan. Men på det stora hela är det tillräckligt sällsynt för att jag inte tycker att det ska avskräcka dig. Att upptäcka att en metod som du har använt i några månader inte är bra är sällsynt och inte ett stort problem.
Gemensamma jämförelser med PHP
En hel del människor som är nya programmerare letar efter mycket allmänna jämförelser av språk. Så här kommer de. Alla språk som jag kommer att skriva upp här har följande egenskaper gemensamt med PHP:
- De har öppen källkod. Det betyder att du kan använda det underliggande språket gratis (utan kostnad) och att du kan se och förstå det underliggande programmet om du vill.
- De används ofta för webbutveckling. Ganska enkelt, det här är språk som används mycket för webbutveckling. Vissa används också mycket utanför den arenan, men inte alla.
- De är på hög nivå, löst och dynamiskt typade. Detta innebär att en variabel kan byta typ och att du inte behöver definiera när du definierar en variabel vilken typ av saker (siffror vs strängar vs objekt osv.) den ska lagra. Detta är allmänt gynnat för webbprogrammering, men inte universellt.
- Deras communities är av god storlek eller bättre. Det finns många intressanta språk som har de egenskaper som anges ovan, men som inte har ett stort community of practice. Jag lämnar dem åt sidan här.
Varför använda PHP? Varför inte JavaScript?
Det kanske viktigaste språket att jämföra PHP med är JavaScript. Modern utveckling kräver att varje projekt använder åtminstone lite JavaScript för utveckling och interaktivitet på klientsidan. Med Node har det blivit relativt enkelt att använda JS även på servern. Tanken på att använda samma språk ”isomorfiskt” på klienten och servern är mycket tilltalande.
Likt PHP är JavaScript ett eklektiskt och ibland fult språk med många vårtor och ”gotchas”. Men JavaScript har blivit enormt snabbt under det senaste decenniet, så det är ett verkligt argument för det. Varför välja PHP framför JavaScript? Du har expertis eller behöver använda bibliotek i PHP. Annars tror jag att JavaScript kan vara ett bättre val.
PHP vs Active Server Pages ((.Net) Core)
Active Server Pages började sitt liv som ett stängt Microsoftspråk för webbprogrammering. Det var ganska direkt jämförbart med PHP, men kördes i Windows Server-miljöer. Det ersattes av ASP.net. Som nu har ersatts av ASP.NET Core. De två sistnämnda är nu språk med öppen källkod, precis som PHP. Och jag har personligen aldrig skrivit ett endaste stycke ASP, i någon variant.
Jag skulle föredra ASP om jag använde och älskade Microsofts servrar. Annars kan jag få PHP, tack. Samhällenas storlek och omfattning är inte riktigt jämförbara.
Bör jag använda Ruby eller PHP?
Ruby, särskilt Ruby on Rails, var mycket populärt för ett decennium sedan. Ruby är fortfarande ett mycket omtyckt språk som i mina ögon är mycket elegantare än PHP. Med det sagt är dess community mindre. Och jag upplever att Ruby har slutat vara det ”heta språket” (det har ersatts i den rollen av JavaScript). Ruby är vackert, och det finns tillräckligt många som är duktiga på det för att jag inte skulle undvika det av den anledningen. Men det kommer fortfarande att vara svårare att anställa personer som redan är bekanta med språket än att göra det i PHP. (Även om jag tror att kompetensen hos en genomsnittlig Ruby-utvecklare sannolikt är högre än samma för PHP.)
Python vs PHP: Vilket är bättre?
Det sista språket som är vettigt i en en-till-en-jämförelse med PHP är Python. Python används i många fler sammanhang än webbutveckling (det är också mycket populärt för statistik och dataanalys). Det är också ett av de mer stabila och väldesignade språken som finns, enligt populär konsensus.
Python (liksom Ruby och JavaScript) är lite svårare att få igång på en webbserver än PHP. Men det är ett vackrare språk och används mer varierat än PHP. Det är ett av de språk som jag skulle fundera hårt på att föredra framför PHP, om alla andra saker (tillgång till externa bibliotek, tillgång till expertis, etc.) är lika.
PHP vs Go? Scala? Java? etc?
Jag nämnde i början att det fanns många likheter med alla tidigare direkta språkjämförelser jag gjort. Men om vi släpper dessa begränsningar finns det massor av andra språk som vi skulle kunna jämföra. Så för att kort beröra några:
- Java är enormt populärt och mycket snabbt. Det används för att bygga Android-appar, skrivbordsappar och webbappar. Det är dock inte dynamiskt typat, vilket ger bättre prestandagarantier, men sämre användarvänlighet vid webbprogrammering.
- Go är ett nyare och växande språk som stöds av Google. Det är inriktat på webbservrar, men har en något lägre nivå (mer som C) än PHP. Det är snabbt, men praxisgemenskapen är mindre.
- Scala är ett populärt JVM-körande (Java-kompatibelt) språk som fortfarande verkar växa i popularitet. Det är mer elegant utformat än PHP, men jag kan inte säga mycket mer om det med säkerhet.
Alltså, det är allt jag känner att jag har tillräckligt med sammanhang för att beröra. Men det finns ännu fler alternativ som du kan överväga. Men det är slutet på de specifika alternativ som jag kommer att överväga till PHP.
Val av programmeringsspråk handlar om sammanhang
Med tanke på dessa jämförelser, varför använda PHP? Jag har räknat upp några av de saker som är dåliga med PHP, och jag känner regelbundet av några av dem. Inkonsekvensen mellan nål och höstack i sökfunktionerna biter mig minst en gång i månaden när jag snabbt gör något utan autokomplettering.
För ett verkligt och fullständigt nybörjarprojekt, utan behov av samverkan med något annat system eller behov av att köras i någon godtycklig miljö, utan befintlig sakkunskap i teamet, skulle jag tänka mig ganska noga för innan jag rekommenderade PHP. Python lockar mig verkligen i det scenariot. Men det är många invändningar. Det finns goda skäl för att även ett nytt grönt projekt ska skrivas i PHP.
Alla moderna webbspråk kan hjälpa dig att göra bra webbplatser och appar. Och vart och ett av dem har funktioner som inte är idealiska. PHP, liksom alla andra, kräver att du verkligen förstår dess kompromisser för dig i ditt projekt för att avgöra om det är vettigt för dig eller inte. Men för mig personligen fortsätter jag att tycka att det är möjligt att vara – som Keith Adams uttryckte det i ett bra föredrag – ”chockerande produktiv i PHP”
Om du har ett team av Pythonprogrammerare, skriv din applikation i Python. Om du har en medgrundare som kan Java, skriv din SaaS i Java. De personella övervägandena i fråga om programvara bör alltid väga tyngre än de språkliga övervägandena.