Domanda

.

Vuoi migliorare questa domanda? Aggiorna la domanda in modo che possa essere risolta con fatti e citazioni di Modifica di questo post .

chiuso 7 anni fa .

Stavo leggendo un Articolo / intervista (< EM> Guerra linguistica: PHP vs. Ruby (di Jeffrey Way; Mar 2011)) da uno sviluppatore per l'invio con rubino. Dice: "PHP è un framework web travestito da linguaggio."

Non ha esposto questa affermazione, quindi mi ha chiesto se è vero, e se sì, come. Ho fatto un po 'di ricerca ma non ho potuto presentare informazioni su questo argomento. Mi chiedo come questa affermazione è vera e ciò che rende PHP non un linguaggio di programmazione. E perché altre lingue come Python o Ruby non si adattano in quella categoria?

È stato utile?

Soluzione

Ufficialmente:

.

PHP è un linguaggio di scripting generico ampiamente utilizzato che è particolarmente adatto per lo sviluppo web e può essere incorporato in HTML.

Secondo http://us.php.net/

Ma ciò non è necessariamente una descrizione molto apt.

PHP è un linguaggio completo di Turing Complete. Tuttavia qualsiasi distribuzione di PHP verrà fornita con un numero Enorme di librerie standard, tanto che le librerie PHP standard potrebbero essere classificate come quadro.

Pertanto, quando guardati in questo modo, PHP è:

un quadro con il proprio linguaggio di scripting completo di Turing Turing.

o

una lingua avvolta in un massiccio quadro web, da cui non può essere rimosso.

Comunque se guardiamo il nome "PHP: Ipertext Preprocessor" (PHP), ciò implica che PHP sia un "preprocessore" (che preprogende ipertesto) - né un quadro, né una lingua, ma un software.

Quando lo guardi in questo modo, PHP è un'applicazione che esegue script in una lingua proprietaria, con accesso a un ampio quadro interno progettato per elaborare ipertesto.

Pertanto: PHP non può essere classificato correttamente come un framework o come lingua. La verità è che c'è una lingua, un framework e un'applicazione, che tutti hanno lo stesso nome (perché sono tutti arrotolati in una cosa)! Quindi "PHP" può fare riferimento a qualsiasi parte del sistema.

Altri suggerimenti

Non ho fonti - ma la dichiarazione ha senso, anche se potrebbe essere solo un tentativo di mescolare controversie.

PHP è sicuramente una lingua, e molto non un framework - ma se guardi il manuale PHP contro, diciamo, le specifiche C o C ++, il corpo di funzionalità che le offerte PHP hanno elementiCiò sarebbe considerato nel dominio di un quadro: DOP, Gestione XML e così via - Questa roba è ciò che normalmente sarebbe incluso in un quadro come Qt.

La cosa con PHP è che non è solo un linguaggio di programmazione, ma un intero ecosistema, composto da:

    .
  • Il linguaggio di programmazione PHP stesso
  • Un runtime che può agganciare a un server Web (tramite mod_php o CGI / FastCGI) e fornisce molti modi per interagire con esso
  • Una grande libreria di funzioni e classi integrate, molti di loro relativi al web

PHP fornisce funzionalità nella lingua stessa che sono molto specifiche per la programmazione Web, come i superglobals ($_SERVER, $_GET, $_POST, $_COOKIE, ecc.), Saltando tra la modalità PHP e la modalità HTML utilizzando tag <?php ?>, ecc., E La sua semantica è costruita attorno al modello di esecuzione a richiesta di processo che è stata la norma entro i primi giorni della programmazione web lato server. PHP ha iniziato come strumento di scripting Web e si è evoluto solo in un linguaggio di programmazione (un po 'un po') in seguito; La versione CLI e altre caratteristiche non Web, anche se spesso possono essere usate in modo abbastanza efficace, sono un ripensamento, e con un'esposizione sufficiente alla lingua e al suo ecosistema, questo può diventare dolorosamente ovvio a volte.

Al contrario, la maggior parte degli altri linguaggi di programmazione sono stati progettati come linguaggio generale, sistemi o linguaggi di programmazione dell'applicazione fin dall'inizio, e qualsiasi cosa specifica per la programmazione web è disponibile nelle biblioteche. Se si desidera eseguire la programmazione del web, ad esempio, Python, è necessario un framework Web o almeno una libreria per implementare le associazioni dei server Web e le cose come la richiesta di analisi, la gestione della sessione HTML e la gestione della sessione, e probabilmente anche alcuni collegamenti di database (a meno che tu "Really hardcore e scrivi tutto quello da zero).

PHP ha tutte queste cose costruite in esso per impostazione predefinita, ed è per questo che le persone piace dire che PHP è un quadro web in sé.

Per un "Ciao, mondo!" Applicazione Web in Python, tipicamente si imposta un virtualV, installare alcune librerie, configurare un po 'di caldaia per il quadro web, definire i percorsi e scrivere un gestore che genera una risposta con "Ciao, mondo!" nel corpo; In PHP, è una questione di scrivere <?php echo "Hello, world!" in Index.php, copiandolo su Docroot di Apache e abilitare Mod_php. Il resto (agganciare il server, le richieste di analisi, generare risposte, ecc.) Accata ancora, ma PHP si prende cura di te.

PHP non è un linguaggio web.È interamente costruito nelle funzionalità per fare la programmazione nell'applicazione Web.Lo sviluppo di un'applicazione Web in PHP è molto facile rispetto ad altre lingue come Java, ASP, C #.

Se si desidera sviluppare un'applicazione Web che non è così grande e utilizza il database con meno dimensione (pochi GB), è possibile sviluppare un'applicazione Web PHP.Ci sono molte compagnie di host web che forniscono il web hosting Web basato su PHP che si carica molto meno prezzo con tutte le funzionalità. Lamantananing un sito PHP è meno rispetto a Java / Asp.PHP è un'applicazione web leggera.

Ryan sta probabilmente formando la sua opinione basata su una prospettiva storica. Storicamente, PHP doveva essere un linguaggio web. Storicamente molte funzioni nella lingua sono state progettate per questo caso d'uso, e infatti PHP utilizzava per "Home page personale". http://www.nusphere.com/php/php_history.htm

Ma ora, PHP ha sviluppato molto e avrei personalmente discutere che questo non è davvero vero.

Solo 2 esempi:

I thread sono stati aggiunti solo alla lingua di recente. Per molto tempo, non è stato possibile. I thread sono qualcosa che non ha senso in un ambiente web (invece tendi a calciare un processo di sfondo completamente nuovo o passare un messaggio attraverso una rete a un lavoratore altrove). http://uk3.php.net/manual/en/book.pthreads.php

Gestione della memoria e delle risorse. PHP fornisce un metodo __Destruct () sugli oggetti, in modo da poter chiarire le risorse. Ma per iniziare, questo è stato chiamato solo sullo spegnimento dello script. Ora in un ambiente web ha senso perché vuoi solo il tuo script per eseguire 0.5secs al massimo, quindi lo spegnimento dello script non è mai lontano. Ma per uno sfondo lungo o uno script di shell, questo è terribile. Versioni successive di PHP ha riparato questo. http://php.net/manual/en/language.ooooOP5.decon.php

Tuttavia, generalmente, in genere tenderai a trovare PHP utilizzato in un contesto Web e server e non un contesto di app desktop - quindi è qui che è un sacco di focus.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a softwareengineering.stackexchange
scroll top