PHP och JavaScript är båda Skriptspråk som webbutvecklare använder ofta. Men var och en har sina egna nyanser och användningsfall.

I det här inlägget ska vi undersöka skillnaderna mellan de två, och när du ska använda varje språk i utvecklingsprojekt.

Låt oss börja med att titta på hur dessa språk kom till.

Föredrar du att titta på videoversionen?

PHP vs JavaScript: Ursprung

PHP är ett språk med öppen källkod skapades 1995 av Rasmus Lerdorf. Namnet kom från Personliga startsidesverktyg – en uppsättning skript som används av Rasmus för att spåra besök på hans webbplats.

Med lanseringen av PHP 3.0, fick språket en omvänd akronym: PHP: Hypertext Preprocessor. Det är helt enkelt känd som PHP nu.

JavaScript skapades 1995 av Brendan Eich av Netscape för att få interaktivitet till webben. Ursprungligen känd som Mocha, ändrades namnet till LiveScript, och senare JavaScript för att dra nytta av Java-språkets popularitet.

Idag JavaScript är officiellt känd som ECMAScript, men JavaScript är vad de flesta människor fortfarande kallar det.

Så har båda språken funnits en tid.

Nu ska vi titta på några av deras andra likheter.

PHP och JavaScript Likheter

Språktyp

PHP och JavaScript är båda skriptspråk. Detta i motsats till ’rena’ programmeringsspråk som Java eller C++.

Skriptspråk tenderar att tolkas snarare än att sammanställas. Det innebär att de översätts till maskinkod via en tredje part snarare än direkt. Detta har en inverkan på deras körstid.

Tänk på det så här: tänk dig att du vill översätta en webbsida från ditt modersmål till Navajo. Om du inte kan Navajo språket så behöver du en tolk som kan hjälpa dig, och översättningen tar då längre tid.

Det är därför kompilerade språk tenderar att vara snabbare än tolkade språk.

Variabla skrivelser

En annan gemensamhet är att PHP och JavaScript är svagt maskinskrivna.

Det innebär att när du skapar en variabel på något av språken behöver du inte tilldela dess datatyp: det antas.

Så kan du skriva följande i PHP:

$x = 'Hello world';

$y = 'Bonjour le monde';

Eller i JavaScript:

var x = 'Coding is fun';

let y = 'No, honestly';

I båda språken kommer dessa variabler att kännas igen som strängar (teckenuppsättningar).

Detta motsätter sig ett starkt maskinskrivet språk som Java, där du måste säga vilken typ av variabel du använder när du nämner det:

int x = 5;

Både PHP och JavaScript skrivs dynamiskt: med andra ord, kan du ändra de lätt genom att omdefiniera det i din kod:

$x = 5;

I PHP $x nu ett heltal.

x = 3.14195;

I JavaScript är x nu ett nummer.

Eftersom typer inte definieras uttryckligen i PHP eller JavaScript behöver du funktioner för att tala om vilken datatyp du arbetar med.

JavaScript har den typ av funktion för att göra detta.

PHP har gettype-funktionen för att returnera en variabels typ. En ny, förbättrad version av gettype, get_debug_type, är en del av släppningen utav PHP 8.

Klasser och Objekt

Varken PHP eller JavaScript var ursprungligen objektorienterad. Objektorientering lades till dem allt eftersom språken utvecklades.

Möjligheten att skapa objekt och klasser kom in med PHP 5, 2004.

JavaScript använde inte objekt eller klasser förrän långt senare. De kom in i språket 2015, med ES6:s introduktion.

En klass är en generisk gruppering av objekt.

Ett objekt är en entitet med egenskaper (egenskaper) och metoder (beteenden).

Det är spelet Drakar & Demoner (D & D) ger en bra analogi.

Ett spelartecken motsvarar ett objekt. Varje tecken tillhör en teckenklass, till exempel en Barbar, Skurk eller Trollkarl.

Objekt kan ha valfritt antal egenskaper som du bryr dig om att definiera.

Så kan en karaktärsegenskap omfatta:

  • Namn
  • Ras
  • förmågor (Styrka, Intelligens, Visdom, Fingerfärdighet, Konstitution och Karisma)
  • personlighetstyp (t.ex. fet, skygg, nyfiken)
  • anpassning (laglig, kaotisk, god, ond)

Du kan använda objektmetoder för att hämta information om objektet.

Här finns en PHP-kod exempel på en klass- och objektdefinition:


<?php

class Sorcerer {

// Define properties

public $name;

public $race;

public $intelligence;

// Constructor function for the object

// takes 3 arguments, name, race and intelligence

function __construct($name, $race, $intelligence) {

$this->name = $name;

$this->race = $race;

$this->intelligence = $intelligence;

}

# Define object methods

// Get the name

function get_name() {

return $this->name;

}

// Get the race

function get_race() {

return $this->race;

}

// Get intelligence

function get_intelligence() {

return $this->intelligence;

}

} // end Sorcerer class

// Create a Sorcerer

$yensid = new Sorcerer("Yen Sid", "Human", 18);

# Output the object properties in the browser

echo $yensid->get_name();

echo "<br>";

echo $yensid->get_race();

echo "<br>";

echo 'Intelligence: ';

echo $yensid->get_intelligence();

?>

När denna kod läggs till i en HTML-fil, bör utdata i webbläsaren vara följande:

Yen Sid

Mänskliga

Intelligens: 18

Du kan också definiera metoder som är åtgärder som objekten tar, eller har utfört på dem.

I D&D, kan det vara:

  • surpriseAttack()
  • disarmTrap()
  • castSpell()
  • resistPoison()

När en metod körs på ett objekt kan resultatet bero på objektets egenskaper. Därför kommer en trollkarls lärlingsobjekt inte att kunna trollformler lika effektivt som ett trollobjekt.

Efterfrågan på marknaden

En annan sak som PHP och JavaScript har gemensamt är att utvecklare för båda språken är mycket efterfrågade.

Utvecklare som använder Javascript Och Php är också väl kompenserade.

I USA tjänar de i genomsnitt runt $ 80.000 per år.

PHP Utvecklare Löner, Glassdoor.com
PHP Utvecklare Löner, Glassdoor.com
JavaScript-utvecklarlöner, Glassdoor.com
JavaScript-utvecklarlöner, Glassdoor.com

Dokumentation

De mindre goda nyheterna för nykomlingar till PHP eller JavaScript är att den officiella dokumentationen för båda språken inte är särskilt användarvänlig. Det har skrivits för erfarna utvecklare snarare än för nybörjare.

Du kan läsa dokumentationen för varje språk här:

JavaScripts lärare Chris Ferdinandi beklagar bristen på bra JavaScript-dokumentation, säger att det var en av anledningarna till att det tog honom så lång tid att behärska språket.

Vid denna punkt, kanske du undrar, ”Vad är skillnaden mellan PHP vs JavaScript?” Egentligen finns det flera skillnader.

Vilka är skillnaderna mellan PHP vs JavaScript?

Serversidan vs skript på klientsidan

PHP är ett skriptspråk på serversidan. Det innebär att den körs på webbserver i motsats till en klientmaskin.

Serversidans programmering är användbart för att leverera dynamiskt innehåll (vanligtvis från en Databas) till användare, till exempel ett välkomstmeddelande (”Hej, Claire!”) när en användare loggar in.

Mer allvarligt, serversida skript används i Ecommerce. Det finns till exempel över 100 WooCommerce-tillägg som ansluter via API:er (gränssnitt för programprogrammering) till olika betalningsleverantörer för att bearbeta transaktioner.

JavaScript är ett klientsida språk, så det körs på en användares laptop, telefon eller surfplatta

JavaScript kan manipulera DOM som står för Document Object Model och du kunde tänka på det som en trädliknande struktur som bildas från HTML av en webbsida.

Om du någon gång har stött på ett dragspel eller växling, kanske som en del av ett fråge-plugin, du har sett JavaScript på klientsidan. När du klickar eller trycker på en fråga växlar JavaScript-händelsehanterare css-visningen eller synlighetsegenskaperna på eller av, och visar eller döljer det relevanta svaret.

Frontend vs Backend

PHP körs i backend på en webbplats – den del som besökarna inte ser! I WordPress betyder det att PHP gör allt sitt arbete på webbservern och i WordPress-administratören.

JavaScript kördes traditionellt på frontend, men det förändrades 2009 när Node.js, en backend runtime, lanserades. Idag är JavaScript verkligen ett fullstackspråk.

Kombination med andra språk

With PHP being a backend language, it’s part of the LAMP stack (Linux, ApacheMySQL, PHP).

PHP kan gå samman med HTML. Du kommer att se detta genom att undersöka koden för många webbappar, inklusive WordPress.

Här är ett exempel från Twenty Twenty theme index.php file:


<header class="archive-header has-text-align-center header-footer-group">

<div class="archive-header-inner section-inner medium">

<?php if ( $archive_title ) { ?>

<h1 class="archive-title"><?php echo wp_kses_post( $archive_title ); ?></h1>

<?php } ?>

<?php if ( $archive_subtitle ) { ?>

<div class="archive-subtitle section-inner thin max-percentage intro-text"><?php echo wp_kses_post( wpautop( $archive_subtitle ) ); ?></div>

<?php } ?>

</div><!-- .archive-header-inner -->

</header><!-- .archive-header -->

Men om du blandar PHP med andra backend språk i webbappar är det svårare att underhålla dem. Plus att du inte bara måste kunna PHP, du även måste studera de andra språken också!

JavaScript-utvecklare har lite mer frihet i att skriva sina koder. De kan använda språket med HTML, XML och Ajax.

Skiftlägeskänslighet

Fallkänslighet är skillnaden mellan versaler och gemener när du namnger entiteter i språket.

PHP är delvis skiftlägeskänslig. Fall är viktigt för vissa saker och inte andra

PHP-variabler är skiftlägeskänsliga.

Så om du skapar en variabel i PHP:

$dog = "chihuahua";

och försöka få värdet av $DOG senare i din kod, din funktion kommer inte att fungera.

PHP-funktioner är dock inte skiftlägeskänsliga.

Om du skapar denna funktion i PHP:

function dogFetch() {

// your code to run when the function is called

}

och senare anropar DogFetch() i din kod, kommer din funktion fortfarande att köras.

Detta är dock inte god kodningssed, eftersom den är inkonsekvent.

JavaScript är å andra sidan helt skiftlägeskänsligt. Så variabler som kallas beagle, BEAGLE och Beagle skulle alla skilja sig från varandra.

Syntax

Syntax är den uppsättning regler som styr ett språk. Det inkluderar ordföljd, Grammatik, och skiljetecken.

På engelska skulle vi kunna säga:

I ate my soup slowly.

Men om du var Yoda skulle du säga följande:

My soup slowly I ate.

Varför? Syntaxen är annorlunda. Samma ord, men i en annan ordning.

Den Yoda-Tala Generator
The Yoda-Speak Generator

I vissa språk används ord som visas på samma sätt, men de har en annan innebörd.

Lui på franska betyder "honom" på engelska
Lui på franska betyder ”honom” på engelska
Lui på italienska betyder
Lui på italienska betyder ”han” på engelska.

Medan människor är förlåtande om vi använder fel ord, datorer är mycket bokstavlig. Om vi gör ett misstag i vår programmeringssyntax, en dator ofta inte vet vad vi menade, vilket vanligtvis resulterar i ett fel.

Med JavaScript och PHP har de båda samma dubbla snedstreckssyntax för enradiga kodkommentarer:

// This is a comment

Men PHP har också en annan form av kommentar syntax:

# This is a comment

Om du försöker använda PHP kommentar syntax i JavaScript, får du ett felmeddelande:

# This is a Comment

Uncaught SyntaxError: private fields are not currently supported
JavaScript Uncaught SyntaxError
JavaScript Uncaught SyntaxError

Andra syntaxfel är vanliga för både JavaScript och PHP, till exempel:

  • Saknas ett semikolon (;) i slutet av en kodrad.
  • Inte använder ett par klammerparenteser {} för villkorssatser.

Variabler och Konstant Definitioner

Som vi såg tidigare, JavaScript och PHP har olika sätt att deklarera variabler.

De definierar också Konstanter olika.

JavaScript använder denna syntax:

const x = 6;

För en enkel konstant som denna, kan dess värde inte ändras senare.

Medan PHP använder funktionen define() för konstanter.

define(name, value, case-insensitive)

Av konvention, PHP konstanter är stylade i versaler. Ett exempel är:

define('MONSTER', 'Sulley');

De två första parametrarna inom parentes är självförklarande.

Den tredje, skiftlägeskänslig, har ett falskt standardvärde. Endast om det är satt till sant kommer konstanten vara skiftlägeskänslig.

Det är:

define('MONSTER', 'Sulley', true);

Arrays

Arrays är variabler som kan lagra mer än en sak.

I PHP är matriser associerande matriser eller ordnade kartor. Det vill säga att objekten i matrisen har relaterade nyckel- och värdepar.

<?php

$array(

key => value,

key2 => value2,

...

)

Ett mindre abstrakt exempel är följande, där nyckeln är ett förnamn och värdet är efternamnet.

<?php

$array = array(

"Frodo" => "Baggins",

"Sam" => "Gamgee",

"Merry" => "Brandybuck",

"Pippin" => "Took",

);

För att underlätta användningen kan du konvertera PHP-objekt till matriser Och konvertera matriser till objekt.

JavaScript kan dock bara ha matriser som har numrerade index. Till exempel:

var mountains = [

"Everest",

"Kilimanjaro",

"Fuji"

];

För att hämta ett värde du har kan du referera till matrisindex, som börjar vid 0.

var mountain = mountains[1];

Associativa arrayer med deras namngivna index stöds inte i JavaScript.

Databasintegrering

En sak som PHP kan göra briljant är att ansluta till Databaser. PHP integrerar särskilt väl med MySQL eller MariaDB, som båda använder i WordPress. Ett antal PHP-ramverk också ge enkla databasintegrationer.

Att använda en databas är användbart för att söka, sortera och filtrera information för att presentera för en användare, till exempel produkter i en onlinebutik.

Historiskt sett inte JavaScript inte integreras med databaser, men det börjar förändras.

PouchDB är ett exempel på en JavaScript-databas.

PouchDB JavaScript-databas med öppen källkod
PouchDB open source JavaScript database

Trådning

Med gängning avses de instruktioner som ett programmeringsspråk kan hantera.

PHP är flertrådade ,vilket innebär att det kan bearbeta flera instruktioner parallellt.

Den converse är ett enkeltrådigt språk som JavaScript, som bara kan hantera ett kommando i taget.

För att illustrera trådning använder utvecklaren Samim Yaquby analogin av ett kafé som betjänar kunder.

För ett litet café med en enda barista är det enklare och effektivare för baristan att betjäna kunderna med enklare beställningar först, en i taget. Detta liknar JavaScripts enkeltrådning.

Däremot skulle en stor Starbucks troligen har flera baristas uppfylla samma order samtidigt. Detta ekar PHP: s flertrådade tillvägagångssätt.

Hastighet

I allmänhet utför JavaScript snabbare än PHP på samma hårdvara. Men eftersom JavaScript körs på klienten, om klient maskinen är gammal och trög, så kommer det att ha en negativ effekt på körningstiden.

PHP hastighet har förbättrats med stormsteg sedan frisläppet av PHP 7, tack vare en ny motor som fördubblade prestanda och förbättrade minnesförbrukningen. Jämfört med PHP 5.6, KAN PHP 7.0 hantera mer än dubbelt så många förfrågningar, och prestanda har förbättrats ytterligare med varje 7.x release.

PHP kör också bättre än JavaScript när du bygger realtidsapplikationer såsom chatbots eller spel.

Utgivningen av PHP 8 med den Just in Time Compiler förväntas göra PHP ännu snabbare.

Pakethanterare

Varje språk har sin egen pakethanterare för att hantera paket: tredjeparts återanvändbara kodmoduler som lägger till extra funktionalitet i ett projekt. Vissa paket är beroende av att andra körs, så de kallas beroenden.

PHP har två pakethanterare, PEAR och Composer, som kan ladda ner PHP-paket på Packagist Databasen.

JavaScript har flera välkända pakethanterare, bland NpmGarn och Bower.

JavaScript package managers - php vs javascript
JavaScript package managers

Av dessa är npm den mest populära, med mer än 11 miljoner utvecklare som använder den globalt.

Användning på webben

PHP är det mest använda serversidan på webben idag, vilket lätt slår sin konkurrens med nästan 80% av webbplatserna som använder det.

W3Techs server-side programming languages - php vs javascript
W3Techs server-side programming languages

 

Även om PHP är mycket populärt är JavaScript nästan allestädes närvarande på webbplatser, med 97% av webbplatserna som använder det.

W3Techs client-side programming languages - php vs javascript
W3Techs client-side programming languages

Vad används PHP för?

PHP har ett brett användningsområde.

Det är förmodligen mest känt för att skapa dynamiska webbsidor. Enligt BuiltWith används PHP av över 34 miljoner webbplatser, och det driver några av de mest kända och mest intjänande webbplatserna på nätet, inklusive Nike, Salesforce och Walmart.

Webbplatser som använder PHP med uppskattningsvis $ 1m + Försäljningsintäkter
Webbplatser som använder PHP med uppskattningsvis $ 1m + Försäljningsintäkter

PHP är en perfekt passform om ditt projekt behöver säker autentisering av användare. Detta inkluderar cookie- och sessionshantering, autentisering av användarnamn och lösenord samt tvåfaktorsautentisering.

Som tidigare nämnts är PHP bra för att arbeta med databaser eftersom det kan gränssnitt med ett brett spektrum av dem. Den har också inbyggd datasäkerhet för hantering av användarinmatning, för att skydda mot hot som SQL-injektionsattacker.

PHP är också ofta används för att bygga realtidsapplikationer som snabbmeddelanden.

Slutligen, även om du gör det mesta av ditt arbete på frontend, behöver du en server backend. PHP är ett idealiskt val eftersom detta är vad det skapades för.

Vad används JavaScript för?

JavaScript har blivit så populärt att kanske rätt fråga är, ”Vad används inte JavaScript för?”

Bortsett från webbplatser och webbappar, javascript har använts för att bygga alla följande:

  • Mobilappar
  • Webbservrar
  • Spel
  • Skjut däck
  • Chattrobotar
  • … och även programmerbara drönare
Super Chrono Portal Maker, ett HTML5- och JavaScript-spel
Super Chrono Portal Maker, ett HTML5- och JavaScript-spel

Kan JavaScript användas med PHP?

Svaret är ja, absolut.

Ett vanligt exempel är med webbformulär, där det är användbart att validera användarinmatning innan den sparas i en databas.

Du kan använda JavaScript för validering på klientsidan, t.ex. att kontrollera ett e-postmeddelande är i rätt format. Därefter kan du använda PHP för validering på serversidan, t.ex. kontrollera att e-postmeddelandet finns i din databas.

Hur WordPress använder JavaScript och PHP

Traditionellt har WordPress använt båda språken, men mycket mer PHP än JavaScript. Det har börjat förändras med introduktionen av Gutenberg-redaktören.

I Matt Mullenweg’s State of the Word på WordCamp US 2015 gav han en uppfattning om hur viktig JavaScript skulle bli genom att uppmana publiken att

”Lär dig JavaScript, ordentligt.”

Så som saker och ting ser ut är så här hur båda språken används i WordPress.

PHP används för temamallfiler, loopen, autentisering, validering och databasåtkomst.

JavaScript driver tema och plugin interaktivitet, validering på klientsidan och händelsehantering. Framför allt krävs viss kunskap om JavaScript för blockera utveckling, eftersom block är beroende av React JS ram.

Lärande PHP vs JavaScript

Eftersom de är ganska lätt att lära, så finns det ingen anledning att du inte kan lära dig både PHP och JavaScript.

De två språken förlitar sig på vissa programmeringsvana, till exempel variabler, loopar, villkorssatser, omfattning och objekt.

Eftersom det är ett så väletablerat och populärt språk är det lätt att lära sig PHP.

Som PHP är ett serversidspråk, och du behöver en server för att skriva koder. Det kan vara en riktig webbserver, eller en emulering av en, till exempel en lokal utvecklingsmiljö. Några exempel är DevKinsta, XAMPP, WAMP eller MAMP

Du kan komma igång att lära sig JavaScript lätt nog genom att öva i webbläsaren konsolen.

I webbläsaren Chrome kan du komma åt konsolen via genvägen Control+Shift+J i Windows, eller Kommando+Alternativ+J på Mac.

Ett enkelt Hello World-program i Chromes JavaScript-konsol
Ett enkelt Hello World-program i Chromes JavaScript-konsol

Där JavaScript blir svårare att bemästra är den stora storleken på dess ekosystem.

JavaScript-språket har expanderat från vanilj JavaScript till en uppsjö av ramverk. Angular, Vue, jQuery och React är bara några av de många som nu finns.

Some JavaScript frameworks
Some JavaScript frameworks

En bra resurs för nybörjare kommer från MDN Web Docs i deras JavaScript-dokumentation.

Chris Ferdinandi, som utbildar människor inom vanilj JavaScript, säger att JavaScript verkligen klickade för honom efter att han lärt jQuery.

Hans råd till JS nybörjare är:

“Häng inte upp dig på vilken ordning du lär dig saker på. Slösa inte bort din tid på att försöka plocka den perfekta saken, för det finns ingen perfekt sak.”

Var bara medveten om det glänsande objektssyndromet med JavaScript-ramar utan att först förstå grunderna för HTML och CSS. HTML understödjer allt på webben och det kan bli riktigt trasigt om det hanteras av en alltför ivrig JavaScript-utvecklare.

PHP vs JavaScript — Jämförelsetabell

PHP JavaScript
Skript på serversidan Skript på klientsidan
Används på backend Används på frontend (nu full stack med Node.js)
Endast kombinerar med HTML Kombinerar med flera språk
Delvis skiftlägeskänslig Helt skiftlägeskänslig
Syntax skillnader t.ex. # för kommentarer tillåtna Syntax skillnader t.ex# för kommentarer inte tillåtet
Variabler som deklarerats med prefixet $ Variabler som deklarerats med var eller låt nyckelord
Har associativa matriser Inga associativa matriser
Integrerar med många databaser Dåligt eller obefintligt databasstöd
Flertrådade Enkeltrådade
Snabb om PHP 7.0 eller högre Snabbare än PHP vanligtvis
Använder PEAR- och Composer-pakethanterare Använder pakethanterare för NPM, Yarn och Bower
Snabb att köra om PHP-version > 7.x Generellt snabbare än PHP
Används på cirka 80% av webbplatser Används på nästan alla webbplatser

 

Sammanfattning

I denna djupdykning i PHP vs JavaScript, det finns egentligen inte en vinnare. De har båda sina styrkor och svagheter.

PHP är stabil och pålitlig, medan JavaScript har blivit populärt på blocket. Men det betyder inte att den ena är bättre än den andra.

Vilken du än väljer för ditt nästa projekt – och det kan vara både och! – om du tar dig tid att förstå språket kan du vara säker på att du bygger en webbplats eller app som kommer att glädja användarna.

Claire Brotherton

Claire Brotherton is a WordPress web developer, blog writer and accessibility advocate based in Edinburgh, Scotland. She works with businesses, nonprofits and entrepreneurs who are passionate about access and inclusion, and blogs regularly on her website, A Bright Clear Web. Tweet her at @abrightclearweb.