PHP e JavaScript sono entrambi linguaggi di scripting che chi lavora nello sviluppo web usa frequentemente. Eppure ognuno di loro presenta le sue peculiarità e i suoi casi d’uso.
In questo articolo, esploreremo le differenze tra i due, e gli scenari in cui usare i due linguaggi per i progetti di sviluppo.
Cominciamo a vedere come sono nate questi due linguaggi.
Preferite guardare la versione video?
PHP vs JavaScript: Origini
PHP è un linguaggio open source creato nel 1995 da Rasmus Lerdorf. Il nome deriva da Personal Home Page Tools, un insieme di script usati da Rasmus per tracciare le visite al suo sito.
Con il lancio di PHP 3.0, l’acronimo che dà il nome al linguaggio si è invertito: PHP: Hypertext Preprocessor. Ora è semplicemente conosciuto come PHP.
JavaScript è stato creato nel 1995 da Brendan Eich di Netscape per portare l’interattività nel web. Originariamente noto come Mocha, il nome è stato cambiato in LiveScript, e successivamente JavaScript per sfruttare la popolarità del linguaggio Java.
Oggi JavaScript è ufficialmente conosciuto come ECMAScript, ma JavaScript è il nome che la maggior parte delle persone continua a usare.
Quindi, entrambe i linguaggi sono in giro da un po’ di tempo.
Ora esamineremo alcune delle loro altre similitudini.
Similitudini tra PHP e JavaScript
Tipo di Linguaggio
PHP e JavaScript sono entrambi linguaggi di scripting. Questo è in contrasto con i linguaggi di programmazione “puri” come Java o C++.
I linguaggi di scrittura tendono a essere interpretati piuttosto che compilati. Ciò significa che vengono tradotti in codice macchina tramite una terza parte piuttosto che direttamente. Questo ha un impatto sul loro tempo di esecuzione.
Pensatela in questo modo: immaginate di voler tradurre una pagina web dalla vostra lingua madre al navajo. Se non conosceste la lingua navajo avreste bisogno di un interprete che vi aiuti, e la traduzione richiederebbe più tempo.
Per questo motivo i linguaggi compilati tendono a essere più veloci dei linguaggi interpretati.
Tipizzazione delle Variabili
Un’altra caratteristica comune è che PHP e JavaScript sono debolmente digitati.
Ciò significa che quando si crea una variabile in una delle due lingue, non è necessario assegnare il suo tipo di dati: si presume.
Quindi, è possibile scrivere quanto segue in PHP:
$x = 'Hello world';
$y = 'Bonjour le monde';
Oppure in JavaScript:
var x = 'Coding is fun';
let y = 'No, honestly';
In entrambe le lingue, queste variabili saranno riconosciute come stringhe (set di caratteri).
Questo si oppone a un linguaggio fortemente tipizzato come Java, dove si deve dire che tipo di variabile si sta usando quando la si dichiara:
int x = 5;
Sia PHP che JavaScript sono digitati dinamicamente: in altre parole, è possibile cambiare il tipo facilmente ridefinendolo nel proprio codice:
$x = 5;
In PHP, $x è ora un numero intero.
x = 3.14195;
In JavaScript, x è ora un numero.
Poiché i tipi non sono definiti esplicitamente in PHP o JavaScript, sono necessarie delle funzioni che vi dicano con quale tipo di dati state lavorando.
JavaScript ha la funzione typeof per specificarlo.
PHP ha la funzione gettype per restituire il tipo di variabile. Una nuova versione migliorata di gettype, get_debug_type, fa parte della release di PHP 8.
Classi e Oggetti
Né PHP né JavaScript erano originariamente orientati agli oggetti. L’orientamento agli oggetti è stato integrato con l’evoluzione dei linguaggi.
La possibilità di creare oggetti e classi è arrivata con PHP 5, nel 2004.
JavaScript non ha usato oggetti o classi fino a molto più tardi, e precisamente nel 2015, con l’introduzione di ES6.
Una classe è un generico raggruppamento di oggetti.
Un oggetto è un’entità con proprietà (caratteristiche) e metodi (comportamenti).
Il gioco Dungeons and Dragons (D&D) fornisce una buona analogia.
Un personaggio del giocatore corrisponde a un oggetto. Ogni personaggio appartiene a una classe di personaggi, come ad esempio un Barbaro, un Furfante o un Mago.
Gli oggetti possono avere un numero qualsiasi di proprietà che si desidera definire.
Quindi, le proprietà di un personaggio possono includere:
- nome
- gara
- capacità (Forza, Intelligenza, Saggezza, Destrezza, Costituzione e Carisma)
- tipo di personalità (ad es. audace, timido, curioso)
- allineamento (legale, caotico, buono, cattivo)
È possibile usate metodi a oggetti per recuperare informazioni sull’oggetto.
Ecco un esempio di codice PHP di una definizione di classe e di oggetto:
<?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();
?>
Quando questo codice viene aggiunto a un file HTML, l’output nel browser dovrebbe essere il seguente:
Yen Sid
Umano
Intelligence: 18
Si possono anche definire metodi che sono azioni che gli oggetti compiono o hanno compiuto su di essi.
In D&D, potrebbero essere:
- surpriseAttack()
- disarmTrap()
- castSpell()
- resistPoison()
Quando un metodo viene eseguito su un oggetto, il risultato può dipendere dalle proprietà dell’oggetto. Quindi l’oggetto apprendista di uno stregone non sarà in grado di lanciare incantesimi con la stessa efficacia di un oggetto mago esperto.
Domanda di Mercato
Un’altra cosa che PHP e JavaScript hanno in comune è che gli sviluppatori di entrambi i linguaggi sono molto richiesti.
Anche gli sviluppatori che usano JavaScript e PHP sono ben compensati.
Negli Stati Uniti, guadagnano in media circa 80.000 dollari all’anno.
Documentazione
La notizia meno buona per i nuovi arrivati in PHP o JavaScript è che la documentazione ufficiale per entrambi i linguaggi non è molto user-friendly. È stata scritta per sviluppatori esperti piuttosto che per principianti.
Qui potete consultare la documentazione per ogni linguaggio:
L’insegnante di JavaScript Chris Ferdinandi lamenta la mancanza di una buona documentazione JavaScript, dicendo che è stato uno dei motivi per cui ci ha messo tanto a padroneggiare il linguaggio.
A questo punto, ci si potrebbe chiedere: “Qual è la differenza tra PHP e JavaScript? In realtà, ce ne sono diverse.
Quali Sono le Differenze tra PHP e JavaScript?
Scripting Lato server vs. Lato Client
Il PHP è un linguaggio di scripting lato server. Ciò significa che funziona sul server web al contrario di una macchina client.
La programmazione lato server è utile per fornire agli utenti contenuti dinamici (tipicamente da un database), come ad esempio un messaggio di benvenuto (“Ciao, Claire!”) quando un utente effettua il login.
Più seriamente, lo scripting lato server è usato nel commercio elettronico. Ad esempio, ci sono oltre 100 estensioni WooCommerce che si collegano tramite API (application programming interface) a diversi fornitori di pagamento per elaborare le transazioni.
JavaScript è un linguaggio lato client, quindi funziona sul portatile, sul telefono o sul tablet di un utente.
JavaScript può manipolare il DOM che sta per Document Object Model e si potrebbe pensare ad esso come a una struttura ad albero formata dall’HTML di una pagina web.
Se vi siete mai imbattuti in una fisarmonica o in un toggle, magari come parte di un plugin per le FAQ, avete visto JavaScript lato client in azione. Quando fate clic o tap su una domanda, i gestori di eventi JavaScript attivano o disattivano le proprietà di visualizzazione o visibilità dei CSS, mostrando o nascondendo la relativa risposta.
Front end vs Back end
Il PHP funziona nel back end di un sito web, cioè nella parte che i visitatori non vedono! In WordPress, ciò significa che PHP fa tutto il suo lavoro sul server web e nell’admin di WordPress.
Tradizionalmente, JavaScript funzionava sul front end, ma la situazione è cambiata nel 2009 quando è stato lanciato Node.js, un runtime back end. Oggi JavaScript è veramente un linguaggio full stack.
Combinazione con Altre Lingue
Essendo il PHP un linguaggio back end, fa parte dello stack LAMP (Linux, Apache, MySQL, PHP).
PHP può fondersi con l’HTML. Lo vedrete esaminando il codice di molte applicazioni web, tra cui WordPress.
Ecco un esempio dal file index.php del tema Twenty Twenty:
<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 -->
Tuttavia, se unite il PHP ad altri linguaggi back end nelle applicazioni web, è più difficile mantenerli. Inoltre, non solo bisogna conoscere il PHP, ma anche studiare ed essere competenti in questi altri linguaggi!
Gli sviluppatori JavaScript hanno un po’ più di libertà nella scrittura del loro codice. Possono usare il linguaggio con HTML, XML e Ajax.
Case Sensitivity: Differenza tra Maiuscole e Minuscole
Con case sensitivity si intende la distinzione tra lettere maiuscole e minuscole quando si nominano le entità nel linguaggio.
Il PHP è parzialmente sensibile alle maiuscole e minuscole. La differenza è importante per alcune cose e non per altre.
Le variabili PHP fanno differenza tra maiuscole e minuscole.
Quindi, se create una variabile in PHP:
$dog = "chihuahua";
e cercate di ottenere il valore di $DOG in una parte successiva del vostro codice, non funzionerà.
Le funzioni PHP, tuttavia, non fanno differenza tra maiuscole e minuscole.
Se create questa funzione in PHP:
function dogFetch() {
// your code to run when the function is called
}
e poi richiamate DogFetch() nel vostro codice, la vostra funzione sarà ancora attiva.
Tuttavia, questa non è una buona pratica di programmazione perché incoerente.
JavaScript, invece, è totalmente case sensitive quindi fa sempre differenza tra maiuscole e minuscole.
Così le variabili chiamate beagle, BEAGLE e Beagle sarebbero tutte distinte l’una dall’altra.
Sintassi
La sintassi è l’insieme delle regole che governano una lingua. Questo include l’ordine delle parole, la grammatica e la punteggiatura.
In italiano, potremmo dire:
Ho mangiato la mia zuppa lentamente.
Ma se voi foste Yoda, direste:
La mia zuppa lentamente ho mangiato.
Perché? La sintassi è diversa. Stesse parole, ordine diverso.
Alcune lingue usano parole che appaiono uguali, ma hanno un significato diverso.
Mentre gli esseri umani sono comprensivi se usiamo la parola sbagliata, i computer non perdonano e sono molto letterali. Se commettiamo un errore nella nostra sintassi di programmazione, un computer spesso non sa cosa volevamo dire, il che di solito si traduce in un errore.
Sia JavaScript che PHP usano la stessa sintassi a doppia barra per i commenti del codice a riga singola:
// Questo è un commento
Ma il PHP ha anche un’altra forma di sintassi per i commenti:
# Questo è un commento
Se tentate di usare la sintassi dei commenti PHP in JavaScript, otterrete un errore:
# Questo È un Commento
Uncaught SyntaxError: private fields are not currently supported
Altri errori di sintassi sono comuni sia a JavaScript che a PHP, come ad esempio:
- Manca un punto e virgola (;) alla fine di una riga di codice.
- Non usare un paio di parentesi graffe {} per le dichiarazioni condizionali.
Definizioni Variabili e Costanti
Come abbiamo visto in precedenza, JavaScript e PHP hanno modi diversi di dichiarare le variabili.
Definiscono anche le costanti in modo diverso.
JavaScript usa questa sintassi:
const x = 6;
Per una costante semplice come questa, il suo valore non può essere cambiato in seguito.
Mentre PHP usa la funzione define() per le costanti.
define(name, value, case-insensitive)
Per convenzione, le costanti di PHP sono scritte in maiuscolo. Un esempio è:
define('MONSTER', 'Sulley');
I primi due parametri tra parentesi sono autoesplicativi.
Il terzo, case-insensitive, ha il valore predefinito di false. Solo se è impostato su true la costante sarà insensibile alle maiuscole e minuscole.
Cioè:
define('MONSTER', 'Sulley', true);
Array
Gli array sono variabili che possono memorizzare più di una cosa.
In PHP, gli array sono array associativi o mappe ordinate. Vuol dire che gli elementi all’interno dell’array hanno coppie di chiavi e valori correlati.
<?php
$array(
key => value,
key2 => value2,
...
)
Un esempio meno astratto è il seguente, dove la chiave è il nome e il valore il cognome.
<?php
$array = array(
"Frodo" => "Baggins",
"Sam" => "Gamgee",
"Merry" => "Brandybuck",
"Pippin" => "Took",
);
Per facilità d’uso, è possibile convertire oggetti PHP in array e convertire gli array in oggetti.
Tuttavia, JavaScript può avere solo array che hanno indici numerati.
Per esempio:
var mountains = [
"Everest",
"Kilimanjaro",
"Fuji"
];
Per recuperare un valore si deve fare riferimento all’indice della matrice, che inizia con 0:
var mountain = mountains[1];
Gli array associativi con i loro indici nominativi non sono supportati in JavaScript.
Integrazione del Database
Una cosa che PHP può fare brillantemente è connettersi ai database.
Il PHP si integra particolarmente bene con MySQL o MariaDB, entrambi usati da WordPress. Diversi framework PHP offrono inoltre facili integrazioni di database.
Usare un database è utile per la ricerca, l’ordinamento e il filtraggio delle informazioni da presentare a un utente, come ad esempio i prodotti in un negozio online.
Storicamente, JavaScript non si integra con i database, anche se questo sta cominciando a cambiare.
PouchDB è un esempio di un database JavaScript.
Threading
Il threading si riferisce alle istruzioni che un linguaggio di programmazione è in grado di gestire.
PHP è multi-threaded, il che significa che può elaborare più istruzioni in parallelo.
Il converse è un linguaggio a un solo thread come JavaScript, che può gestire un solo comando alla volta.
Per illustrare il threading, lo sviluppatore Samim Yaquby usa l’analogia di del servizio clienti in una caffetteria.
Per una piccola caffetteria in cui lavora un solo barista, è più facile ed efficiente che il barista serva prima i clienti con ordini più semplici, uno alla volta. Un comportamento che ricorda il threading singolo di JavaScript.
Al contrario, uno Starbucks di grandi dimensioni avrebbe molto probabilmente più persone al banco che eseguono gli stessi ordini contemporaneamente. Ciò ricorda l’approccio multithreaded di PHP.
Velocità
In generale, JavaScript viene eseguito più velocemente di PHP sullo stesso hardware. Tuttavia, poiché JavaScript viene eseguito sul client, se la macchina client è vecchia e lenta, ciò avrà un effetto a catena sul tempo di esecuzione.
La velocità di PHP è migliorata a passi da gigante dal rilascio di PHP 7, grazie a un nuovo motore che ha raddoppiato le prestazioni e migliorato il consumo di memoria. Rispetto a PHP 5.6, PHP 7.0 è in grado di gestire più del doppio delle richieste, e le prestazioni sono ulteriormente migliorate a ogni release successiva alla 7.x.
Il PHP funziona meglio di JavaScript anche quando si costruiscono applicazioni in tempo reale come chatbot o giochi.
Si prevede che il rilascio di PHP 8 con il Just in Time Compiler renderà il PHP ancora più veloce.
Gestione dei Pacchetti
Ogni linguaggio ha il proprio gestore di pacchetti, cioè i moduli di codice riutilizzabili di terze parti che aggiungono funzionalità extra a un progetto. Alcuni pacchetti dipendono da altri per poter funzionare, quindi sono chiamati dependencies (dipendenze).
Il PHP ha due gestori di pacchetti, PEAR e Composer, che possono scaricare i pacchetti PHP sul repository Packagist.
JavaScript ha diversi gestori di pacchetti ben noti, tra cui npm, Yarn e Bower.
Tra questi, npm è il più popolare, con più di 11 milioni di sviluppatori che lo usano a livello globale.
Utilizzo sul Web
Il PHP è il linguaggio server-side più usato oggi sul web, battendo facilmente la concorrenza con quasi l’80% dei siti web che lo utilizzano.
Mentre il PHP è molto popolare, JavaScript è quasi-ubiquo sui siti web, visto che il 97% dei siti web lo utilizzano.
A Cosa Serve il PHP?
Il PHP ha una vasta gamma di utilizzi.
Probabilmente è meglio conosciuto per la creazione di pagine web dinamiche. Secondo BuiltWith, PHP viene usato da oltre 34 milioni di siti web, e alimenta alcuni dei siti più noti e più redditizi del mondo, tra cui Nike, Salesforce e Walmart.
Il PHP è perfetto se il vostro progetto ha bisogno di un’autenticazione sicura per gli utenti. Questo include la gestione dei cookie e delle sessioni, l’autenticazione del nome utente e della password e l’autenticazione a due fattori.
Come già detto in precedenza, PHP è ottimo per lavorare con i database perché può interfacciarsi con una vasta gamma di essi. Ha anche una sicurezza dei dati integrata per la gestione degli input degli utenti e per proteggersi da minacce come gli attacchi SQL injection.
Il PHP è anche comunemente usato per costruire applicazioni in tempo reale come la messaggistica istantanea.
Infine, anche se fate la maggior parte del vostro lavoro sul front end, avrete bisogno di un back end per il server. Il PHP è una scelta ideale, perché è per questo che è stato creato.
Per Cosa Viene Usato JavaScript?
JavaScript è diventato così popolare che forse la domanda giusta è: “Per cosa non viene usato JavaScript?
A parte i siti web e le applicazioni web, JavaScript è stato usato per costruire cose come:
- Applicazioni per cellulari
- Server web
- Giochi
- Slide deck
- Chatbot
- …e anche droni programmabili
JavaScript Può Essere Usato Insieme al PHP?
La risposta è sì, assolutamente.
Un esempio comune è quello dei moduli web, dove è utile convalidare l’input dell’utente prima che venga salvato in un database.
È possibile usare JavaScript per la convalida lato client, ad esempio per verificare che un’email sia nel formato corretto. In seguito, è possibile usare PHP per la validazione lato server, ad esempio per verificare che l’email esista nel vostro database.
Come WordPress Usa JavaScript e PHP
Tradizionalmente, WordPress ha usato entrambi i linguaggi, ma molto più PHP che JavaScript. Questo ha iniziato a cambiare con l’introduzione dell’editor di Gutenberg.
Durante lo State of the Word al WordCamp US nel 2015, Matt Mullenweg ha dato un’idea di quanto importante JavaScript sarebbe diventato, sollecitando il pubblico a
“Imparare JavaScript a fondo”.
Per come stanno le cose, ecco come vengono usati entrambi i linguaggi in WordPress.
Il PHP è usato per i file template dei temi, il loop, l’autenticazione, la validazione e l’accesso al database.
JavaScript alimenta il tema e l’interattività dei plugin, la validazione lato client e la gestione degli eventi. In particolare, una certa conoscenza di JavaScript è richiesta per lo sviluppo di blocchi, in quanto i blocchi dipendono dal framework React JS.
Imparare PHP vs JavaScript
Poiché sono entrambi abbastanza facili da imparare, non c’è ragione per cui non si possa studiare sia PHP che JavaScript.
I due linguaggi si basano su alcuni fondamentali della programmazione, come variabili, loop, istruzioni condizionali, ambito e oggetti.
Essendo un linguaggio così affermato e popolare, è facile imparare il PHP.
Poiché il PHP è un linguaggio lato server, è necessario un server per scrivere il codice. Potrebbe essere un vero e proprio server web, o un’emulazione di uno, come ad esempio un ambiente di sviluppo locale. Alcuni esempi sono DevKinsta, XAMPP, WAMP o MAMP.
È possibile iniziare a imparare JavaScript con relativa facilità esercitandosi nella console del browser.
Sul browser Chrome, potete accedere alla console tramite la scorciatoia Control+Shift+J su Windows, o Command+Option+J su Mac.
Il punto in cui JavaScript diventa più difficile da padroneggiare è la dimensione del suo ecosistema.
Il linguaggio JavaScript si è espanso da vanilla JavaScript a una pletora di altri framework. Angular, Vue, jQuery e React sono solo alcuni dei tanti che ora esistono.
Una buona risorsa per principianti proviene da MDN Web Docs nella loro documentazione JavaScript.
Chris Ferdinandi, che si è fatto un nome educando la gente su vanilla JavaScript, dice che il click con JavaScript per lui è avvenuto solo dopo aver imparato jQuery.
Il suo consiglio per neofiti di JS è:
“Non ti preoccupare di quale sia l’ordine in cui imparare le cose. Non perdere tempo a cercare di scegliere la cosa perfetta, perché non esiste la cosa perfetta”.
Basta che siate consapevoli della “sindrome degli oggetti luccicanti” che spesso prende chi usa i framework JavaScript senza aver prima compreso i fondamenti dell’HTML e del CSS. L’HTML è alla base di tutto sul web, e può rompersi se viene gestito male da uno sviluppatore JavaScript troppo impaziente.
PHP vs JavaScript – Tabella di Confronto
PHP | JavaScript |
Scripting lato server | Sceneggiatura lato cliente |
Utilizzato sul back end | Utilizzato sul front end (ora full stack con Node.js) |
Si combina solo con HTML | Combinato con più linguaggi |
Parzialmente case sensitive | Completamente case sensitive |
Differenze di sintassi, ad es. # per i commenti ammessi | Differenze di sintassi, ad esempio # per i commenti non ammessi |
Variabili dichiarate con prefisso $ | Variabili dichiarate con var o parole chiave let |
Ha array associativi | Nessun array associativo |
Si integra con molti database | Supporto di database scarso o inesistente |
Multi-threaded | Single-threaded |
Veloce (se PHP 7.0 o superiore) | Più veloce di PHP (di solito) |
Usa i gestori di pacchetti PEAR e Composer | Usa npm, Yarn e gestori di pacchetti Bower |
Veloce da eseguire se la versione di PHP > 7.x | Generalmente più veloce di PHP |
Usato su circa l’80% dei siti web | Usato su quasi tutti i siti web |
Riepilogo
In questo approfondimento su PHP vs JavaScript, non c’è davvero un vincitore. Entrambi hanno i loro punti di forza e le loro debolezze.
PHP è stabile e affidabile, mentre JavaScript è diventato più di moda. Ma questo non significa che uno sia migliore dell’altro.
Qualunque sia quello che scegliete per il vostro prossimo progetto – e potrebbero essere entrambi! – se vi prendete il tempo di capire il linguaggio, potete essere sicuri che costruirete un sito web o un’applicazione che delizierà i vostri utenti.
Lascia un commento