Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Pro e contro di PHP

Link copiato negli appunti

Il percorso di studio utile al raggiungimento dello Zend Certificate PHP5 mi ha permesso di analizzare ogni singolo anfratto di PHP e, come logica conseguenza, di avere la consapevolezza dei punti forti di questo linguaggio e soprattutto dei punti deboli.

In questo post voglio discutere di entrambi gli aspetti e condividere con il pubblico di Edit i miei personali pareri sul linguaggio in questione e su come potrebbe essere migliorato.

Partendo dai pro, ci sarebbe tantissimo da scrivere: PHP è il linguaggio server-side più utilizzato nel globo e il motivo principale di questo successo può essere sicuramente sintetizzato con la frase "immensa potenza".

Non esiste compito server-side che PHP non possa svolgere e che non possa essere svolto con una relativa semplicità. Pensiamo ad esempio all'interazione con un servizio SOAP o REST: nonostante la complessità del procedimento che viene eseguito in background sia notevole, il programmatore può gestire le varie fasi semplicemente con chiamate di funzioni e creazioni di istanze.

Il modello OOP della versione 5 consente di creare codice veramente modulare e riusabile, permettendo di mettere in pratica quei Design Patterns prima impossibili. Questo punto non va sottovalutato: per le applicazioni sviluppate in team l'utilizzo di strutture OOP porta innumerevoli vantaggi, ma non basterebbe un solo articolo per elencarli tutti!

Le nuove estensioni che PHP5 ci offre sono molto interssanti e permettono di dare un tocco d'arte al nostro codice rendendolo più mantenibile: mysqli, SPL, Reflection, supporto per le eccezioni e così via.

Tutto ciò che "esiste" però, presenta dei punti deboli e PHP non fa eccezione. Prima di tutto, a mio avviso, il namespacing dovrebbe essere notevolmente migliorato. Facciamo qualche esempio. Per confrontare due stringhe tra di loro, una delle possibili soluzioni è quella di usare la funzione strcmp. Se invece vogliamo confrontare una stringa con una sua particolare sottostringa dobbiamo utilizzare substr_compare e non substr_cmp. Per invertire l'ordine dei caratteri di una stringa si usa la funzione strrev. Per invertire l'ordine degli elementi in un array, arrayrev dunque? No, la funzione si chiama array_reverse. E potrei continuare ancora.

Questo non è un vero e proprio punto di debolezza, ma è più una mancanza di eleganza che molte volte spinge il programmatore ad usare particolari "wrapper" con le proprie sintassi (io sono uno di quelli). Anche gli argomenti che le funzioni si aspettano dovrebbero essere "conformati" con una maschera comune.

Il numero di funzioni, inoltre, potrebbe essere notevolmente ridotto: se invece di ogni variante case-insensitive (contrassegnata dalle parole "case" o "i") si riuscisse ad aggiungere un valore boolean per indicare la presenza del case o meno od un array di opzioni del tipo:

array('case-sensitive' => false, /* altre opzioni */)

Alcune componenti di PHP ed opzioni in php.ini rappresentano un grave rischio per la sicurezza e a mio avviso non hanno ragione di esistere. Sono i casi di register_globals, dell'array $_REQUEST, delle magic_quotes e cosi via, che permettono ai beginners di "fare più in fretta" ma espongono l'applicazione (e il server) ad attacchi di immensa pericolosità.

Infine, uno dei vantaggi di PHP è anche uno dei suoi più discussi svantaggi, per questo ho deciso di inserirlo nella lista dei contro: l'assoluta mancanza di regole di scrittura, o "totale libertà". Per eseguire un compito server-side con PHP, lo sviluppatore può intraprendere milioni di strade differenti che portano APPARENTEMENTE allo stesso risultato. Ciò significa ad esempio, che anche un programmatore di scarsa esperienza può scrivere un'applicazione per interfacciarsi con un database o scrivere uno script per creare o eliminare i file su disco. Questo discorso potrebbe collegarsi con l'articolo scritto da Cesare riguardo all'HTML spazzatura: il "PHP spazzatura" esiste e continuerà ad esistere, magari venendo considerato addirittura "di qualità". Un semplice script per il profiling e controllo delle performance, potrebbe dare risultati sconcertanti, ma a molti (datori di lavoro e soprattutto clienti) questo non importa, "basta che funzioni".

Fortunatamente, con la versione 5 abbiamo sempre la stessa libertà ma con regole e sintassi molto più rigide e questa è un'ottima cosa.

Queste le mie considerazioni "compresse". Voi che ne dite?

Ti consigliamo anche