kompetanseguiden
Hva er PHP?
Hva er PHP – og hvor kan du lære det? I denne artikkelen får du en rask introduksjon til hva PHP er og hvordan det brukes, mens du i verktøyet øverst kan finne ut hvor og hvordan du kan lære det – basert på dine egne kriterier for læringen.
Tilbake til kompetanseguidens hovedside
PHP er et mye brukt programmeringsspråk som hovedsakelig brukes til å lage dynamiske nettsteder. Språket er mye inspirert av C, og regnes for å være relativt enkelt å lære seg.
Stig Bakken er mannen som grunnla PHP-rammeverket PEAR for over 20 år siden, og er nå programvareutvikler i Tietoevry. Vi ba ham om å fortelle litt om PHP.
Hva er det overordnede bruksområdet for PHP i 2020?PHP egner seg til web-applikasjoner av alle størrelser.
Hva er fordelen med PHP?
- PHP er veldig enkelt å komme i gang med. Enkle ting er veldig rett fram og enkle å lage.
- Det finnes mange modne rammeverk med både open source og kommersielle komponenter, som Wordpress, Laravel, Drupal, Symfony m.fl.
- Når PHP kjører som en del av en web-tjener (som Apache eller via FastCGI) har det en kjøremodell som gjør det trivielt å unngå minnelekkasjer o.l. (alle ressurser frigjøres automatisk på slutten av hver HTTP-forespørsel).
Hva er ulempene eller begrensningene?Mange av ulempene med PHP henger sammen med fordelene, som et resultat av at språket er spesialisert for webtjenester.
- Idet man skal bygge (eller utvide til) en større applikasjon merkes det at PHP ikke har et standardbibliotek som f.eks. Go. Da må man velge et rammeverk, som gjør at man gjerne spesialiserer seg innen dette rammeverket. Det har skjedd noen forbedringer her via PHP-FIG (framework interoperability group).
- Språket har et dårlig rykte blant enkelte, noe som gjør at det er vanskelig å finne utviklere, spesielt i Norge.
- Nettopp det at minne og ressurser blir frigjort på slutten av hver HTTP-forespørsel gjør det knotete å implementere tjenester med tilstand.
- PHP er ikke et generelt programmeringsspråk (man kan skrive andre ting enn webtjenester i PHP, men det er ikke styrken til språket)
Hva er typisk å utvikle med PHP, og hvilke teknologier er vanlig å bruke for å oppnå det?Hjemmesider, blogger, nettbutikker, alt av nettsteder eller API-er.
Hva er kjente eksempler på populære programmer, nettsider eller funksjoner som er utviklet med PHP?Utallige, blant de største er Facebook, Wikipedia, Tumblr, Slack og Baidu. Facebook har riktignok videreutviklet PHP internt til et språk de kaller Hack, som Slack også bruker.
Hvilke teknologier eller verktøy er det viktig å mestre for å utnytte potensialet i PHP?Man bør ha grunnleggende kunnskap om HTTP og et knippe databaser som MySQL, Postgres, MongoDB og Redis.
Hvilke språk ligner, eller er nært knyttet til PHP? PHP var opprinnelig inspirert av C krydret med litt AWK og shell. I årenes løp har man plukket opp inspirasjon fra andre språk som Javascript og Python.
Hvordan er vanskelighetsgraden og læringskurven? Hvilke forkunnskaper er det en eventuelt en fordel å ha?
Læringskurven til språket er ikke spesielt bratt. Det er en del inkonsistens (med historiske årsaker) som gjør at man griper til dokumentasjonen for å huske rekkefølgen på parametere til diverse funksjoner.
Det er fint å vite litt om HTTP, og selvsagt HTML, CSS og Javascript hvis man skal lage websider.
PHP var Rasmus sitt lille hack for å gjøre det enklere å generere HTML dynamisk i en tid da CGI-skript var dominerende
Kan du si noe om utviklingen og forhistorien til PHP?PHP ble opprinnelig laget i 1995 av danske Rasmus Lerdorf, og het den gang PHP/FI (Personal Home Pages/Form Interpreter). Det var Rasmus sitt lille hack for å gjøre det enklere å generere HTML dynamisk i en tid da CGI-skript var dominerende. Sammenlignet med CGI-skript den gang var PHP lynrask, sammenlignet med mod_perl var PHP veldig robust og utviklervennlig.
Da versjon 3.0 kom ut i 1997 begynte populariteten virkelig å skyte fart, og året etter dukket begrepet «LAMP stack» opp (Linux, Apache MySQL og PHP). PHP 5.0 (2004) introduserte en ny objektmodell som var mer lik andre språk, og PHP 5.3 (2009) introduserte endelig namespaces (som egentlig var planlagt for 5.0) og closures.
Facebook var blant de største PHP-brukerne på denne tiden, og de implementerte en PHP-til-C++-kompilator kalt «Hiphop for PHP» for å spare server-ressurser. Hiphop utviklet seg videre til en virtuell maskin kalt HHVM med støtte for JIT (som Java og Javascript har). HHVM var betydelig raskere enn PHP 5, samtidig som Facebook begynte å gjøre HHVM-spesifikke endringer, noe som førte til bekymring i PHP-miljøet.
Dette førte til at man endelig laget en formell spesifikasjon for PHP for å sikre kompatibilitet, men førte også til utviklingen av en ny og mer minne- og CPU-effektiv kjerne som ble sluppet i PHP 7.0 (2015). PHP 7 hadde dessuten en AST-basert kompilator, noe som gjør det enkelt å skrive kode for å endre eller generere PHP-kode. I mellomtiden hadde Facebook gått videre med sin versjon av språket kalt «Hack» med egenskaper som statisk typing og generics.
PHP 8 blir sluppet i Q1 eller Q2 2020, og kan friste med JIT-kompilator akkurat som HHVM.
Hvilke råd kan du gi til en som ønsker å lære seg PHP?Bruk et moderne IDE som PhpStorm/IntelliJ eller Visual Studio Code. Finn deg et rammeverk, men vær pragmatisk. Bruk type-hinting fra første linje kode for å få maksimalt utbytte av IDE'et.
Bruk composer til å styre avhengigheter, og legg til composer.lock i versjonskontroll så du har kontroll over de. Vær konservativ med avhengigheter: Å duplisere noen linjer kode er ikke verdens undergang, avhengigheter har også en kostnad.