Come funziona PHP5 con le versioni precedenti della lingua

8

Vorrei imparare PHP per lo sviluppo web, ma sono stato ritirato a causa di commenti come il seguente * :

  • PHP è buono ma genera codice spaghetti
  • PHP è bello ma Python è materiale per il matrimonio
  • PHP manca di roba che si ottiene in altri linguaggi come C # o Java

Ma per PHP5 ho visto alcuni commenti promettenti. Quindi, la mia domanda è: come funziona PHP5 con le versioni precedenti della lingua ed è abbastanza buono ora da imparare per lo sviluppo web.

* I commenti servono solo per non incitare a una guerra di fuoco. Qui non è richiesto alcun confronto tra PHP e altre lingue. Si prega di commentare solo su PHP5 e come si confronta con le versioni precedenti.

    
posta Pankaj Upadhyay 16.11.2011 - 07:16
fonte

4 risposte

17

Quando si discutono le lingue, queste due citazioni Stroustrup ricordano sempre:

Anybody who comes to you and says he has a perfect language is either naive or a salesman.

e

There are only two kinds of languages: the ones people complain about and the ones nobody uses.

Ora alla domanda in questione. La maggior parte dell'odio è diretta principalmente a PHP4. PHP5 è stato il primo rilasciato nel luglio 2004 (beta un anno prima) e l'ultima versione di PHP4 è 4.4.9 pubblicato nell'agosto 2008 . Non c'è più alcun motivo valido per utilizzare PHP4, a meno che, naturalmente, non si mantenga un'app legacy. PHP4 non è più supportato dal gruppo PHP, e speriamo tutti che svanisca presto.

Il divario tra le due versioni è maggiore di quello che solitamente avviene tra due versioni principali, poiché il motore dietro l'interprete è stato riscritto da zero e ha incluso un nuovo modello di oggetto. Il rilascio di PHP5 ha coinciso grosso modo con il rilascio di MySQL5, un'importante revisione di MySQL. PHP è solitamente abbinato a MySQL e la quinta versione di entrambi ha affrontato diversi problemi e li ha portati alla velocità con la concorrenza. MySQL è anche soggetto a commenti FUD , ma, beh, è database dietro AdWords di Google .

PHP 5.3 è stato un importante rilascio in tutto tranne il nome. Un sacco di funzionalità che, laddove previsto per PHP6, hanno trovato la loro strada in 5.3 e per ogni sviluppatore 5.2 là fuori, raccomanderei vivamente di migrare a 5.3+ prima possibile. La versione corrente, 5.4, include alcune fantastiche funzionalità (tra le altre):

Ora per i tuoi commenti specifici:

PHP is good but generates spaghetti code

Questo non è assolutamente vero. Nessun linguaggio genera alcun tipo di codice, è sempre compito dello sviluppatore rovinarsi, il codice spaghetti è possibile in tutte le lingue. Ciò che è vero però è che PHP ha una barriera di ingresso molto bassa rispetto ad altri linguaggi popolari, quindi è molto più facile per gli sviluppatori inesperti scrivere codice cattivo (ma funzionante). Ma questo è un effetto collaterale di ogni lingua facile da imparare.

Inoltre, PHP non applica alcun particolare stile o paradigma e dipende sempre da te decidere cosa fare. Ho sempre pensato che fosse una buona cosa, mentre altri lo considerano un valido punto di critica. Dovrai decidere da solo.

PHP is nice but Python is marriage material

PHP lacks stuff that you get in other languages like C# or JAVA

Sì, lo fa. E linguaggio X per uso generico mancano molte cose che si trovano in PHP. Come essere portatili tra sistemi operativi E attraverso server http e supporto per ogni libreria di terze parti immaginabile che sarebbe utile in un ambiente di sviluppo web. Devi capire che PHP non manca di importante , se lo facesse sarebbe morto molto tempo fa. Il confronto tra linguaggio generico X e altri linguaggi multiuso in PHP è un errore, mele e arance. Sebbene PHP offra alcune funzionalità per supportare l'idea che sia di uso generale, non lo è, è un linguaggio web.

Devi tenere a mente che il percorso evolutivo di PHP è molto diverso da linguaggio generico X : PHP è cresciuto e si è evoluto, non è stato progettato. Ogni volta che una caratteristica viene aggiunta alla lingua è per necessità reale, non in accordo con qualche ideale immaginario di quale dovrebbe essere una lingua. Le lingue sono prima di tutto strumenti, e PHP è perfetto come tale.

Non ho nulla contro linguaggio generico X , sono tutto per la scelta dello strumento giusto per il lavoro. Ho sempre mixato e abbinato, e sto codificando anche in Java e Python, a volte in parallelo con PHP. Ma PHP è l'unico che prenderei in considerazione di sposare. :)

Se stai pensando di iniziare con PHP, dovresti ovviamente iniziare con l'ultima versione stabile, come faresti in qualsiasi altra lingua.

    
risposta data 16.11.2011 - 08:36
fonte
6

PHP è stato "abbastanza buono" per lo sviluppo web per molto tempo . Come con qualsiasi linguaggio di programmazione, la qualità del codice dipende dalle capacità dello sviluppatore di scriverlo.

Una critica comune a PHP è che la sua flessibilità rende facile per gli sviluppatori inesperti scrivere codice cattivo o "spaghetti". Ciò è dovuto in gran parte al fatto che cerca di abbracciare simultaneamente un certo numero di paradigmi che occasionalmente entrano in conflitto, sono mal implementati o non si adattano bene.

  • Lo scripting lato server (PHP) giustapposto al codice lato client (HTML + Javascript) senza modularità è comune, quasi incoraggiato, a scapito della chiarezza & leggibilità.

  • È comunemente scritto in uno stile imperativo, ma fornisce meccanismi per l'orientamento agli oggetti. Ciò si traduce facilmente in stili misti e può spesso portare a una cattiva progettazione.

  • Il design orientato agli oggetti era (a mio avviso) scarsamente supportato in PHP4. Questa è un'area su cui PHP5 ha significativamente migliorato (ad esempio con modificatori di accesso, classi astratte, risoluzione migliorata dello scope .)

  • La digitazione dinamica di PHP consente di correggere errori di run-time che potrebbero essere eliminati con il controllo statico dei tipi. Questo è inerente al design di tutte le versioni di PHP e non cambierà in qualunque momento presto; il peso della convalida dei tipi di oggetti è lasciato al programmatore.

I cambiamenti nel modello OOP di PHP5 fanno molto per incoraggiare il buon design a progredire, ma non aggiungono alcun disincentivo per scoraggiare le cattive pratiche sopra menzionate.

    
risposta data 16.11.2011 - 08:23
fonte
2

PHP ha alcuni problemi significativi in sé, ma quelli sono principalmente della varietà fastidiosa: la sua libreria è incoerente e in qualche modo schizofrenica, manca di stringhe come oggetti di prima classe, cose del genere. Non ti costringe a scrivere codice scadente, e funziona abbastanza bene per quello che fa: scrivere pagine web. Il tuo PHP sarà buono quanto ti impegni; è abbastanza possibile scrivere PHP che è terribilmente procedurale e sembra un codice C, ed è abbastanza possibile scrivere PHP che è eccessivamente orientato agli oggetti e sembra Java. Come qualcuno che si sviluppa quotidianamente in PHP, mi piacciono alcune cose a riguardo e odio alcune cose al riguardo e non vedo l'ora che alcune funzioni 5.4 (come i tratti e la sane funzionalità restituiscano il dereferenziamento), ma incoraggerei con tutto il cuore qualcuno che sta pensando di scegliere fino a farlo.

    
risposta data 17.11.2011 - 22:58
fonte
0

php5 è una versione molto migliorata di php4.

La maggior parte, ma non tutto il codice php4 funziona in php5.

Ciò che veramente è cambiato è stato il modello di oggetti molto migliorato, che ha risolto molte limitazioni e stranezze inerenti alla precedente implementazione di OO, ma che è ampiamente incompatibile con le versioni precedenti.

Documenti qui

Gli altri commenti hanno una certa validità ma non sono un "no go"

"PHP è buono ma genera codice spaghetti" - puoi generare tutti i tipi di pasta in qualsiasi lingua, ma, php, non fa nulla per scoraggiare l'inesperto programmatore che scrive un ratto di codice non strutturato. Conversare è possibile scrivere codice piacevole in qualsiasi lingua, i programmatori esperti non hanno problemi a scrivere php puliti e ben strutturati.

"PHP è bello ma Python è materiale per il matrimonio" - È un bel linguaggio, ma ci sono molti diversi framework web che hanno tutti dei punti estremamente buoni, ma nessuno dei quali è davvero decollato, il che va tutto bene, ma qualsiasi Python / framework della combinazione scelta sarà sempre un'abilità di nicchia.

"PHP ritarda quello che si ottiene in altri linguaggi come C # o JAVA" - php ha il supporto di libreria più vario e ben implementato di qualsiasi lingua tranne perl. Ci sono alcuni punti in bianco come l'analisi statistica e l'elaborazione vettoriale. Ma generalmente se vuoi fare qualcosa una rapida ricerca di PEAR localizzerà una biblioteca che lo fa. Il linguaggio stesso è più semplice di C # o Java - ma la semplicità della sintassi di base più "Duck Typing" significa che puoi fare qualsiasi cosa in PHP che puoi fare in Java in un modo più leggibile ed elegante.

    
risposta data 16.11.2011 - 08:14
fonte

Leggi altre domande sui tag