PHP è in realtà un framework web? [chiuso]

5

Stavo leggendo un articolo / intervista ( Language War: PHP vs. Ruby (di Jeffrey Way, marzo 2011)) da uno sviluppatore di Envato che utilizza Ruby. Dice "PHP è un framework web camuffato da linguaggio"

Non ha esposto su questa affermazione, quindi mi sono chiesto se fosse vero, e se sì, come. Ho fatto un po 'di ricerche ma non ho potuto trovare alcuna informazione su questo argomento. Mi chiedo come sia vera questa affermazione e cosa rende il PHP non un linguaggio di programmazione. E perché altri linguaggi come Python o Ruby non rientrano in quella categoria?

    
posta jordan 16.07.2013 - 05:58
fonte

5 risposte

12

Ufficialmente:

PHP is a widely-used general-purpose scripting language that is especially suited for Web development and can be embedded into HTML.

Secondo link

Ma questa non è necessariamente una descrizione molto appropriata.

PHP è un linguaggio di computer completo di Turing. Comunque qualsiasi distribuzione di PHP arriverà con un enorme numero di librerie standard, al punto che le librerie PHP standard potrebbero essere classificate come framework.

Pertanto, se guardato in questo modo, PHP può essere:

Un framework con il suo esclusivo linguaggio di scripting completo di Turing.

o

Una lingua avvolta in un enorme framework web, da cui non può essere rimosso.

Tuttavia, se guardiamo al nome "PHP: Hypertext Preprocessor" (PHP), ciò implica che PHP sia un "Preprocessor" (che preprocessa l'Hypertext) - né un framework, né un linguaggio, ma un pezzo di software.

Quando lo guardi in questo modo, PHP è un'applicazione che esegue script in un linguaggio proprietario, con accesso a un grande framework interno progettato per elaborare l'ipertesto.

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

    
risposta data 16.07.2013 - 08:21
fonte
7

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

PHP è sicuramente un linguaggio, e non è un framework - ma se si guarda il manuale PHP rispetto, ad esempio, alle specifiche C o C ++, il corpo di funzionalità che PHP offre ha elementi che sarebbe considerato nel dominio di un framework: PDO, gestione XML e così via - questa roba è ciò che normalmente sarebbe incluso in un framework come Qt.

    
risposta data 16.07.2013 - 06:25
fonte
4

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

  • Il linguaggio di programmazione PHP stesso
  • Un runtime che può essere collegato a un server Web (tramite mod_php o CGI / FastCGI) e offre molti modi per interagire con esso
  • Un'ampia libreria di funzioni e classi integrate, molte delle quali correlate al Web

PHP fornisce funzionalità nella lingua stessa che sono molto specifiche per la programmazione web, come i superglobali ( $_SERVER , $_GET , $_POST , $_COOKIE , ecc.), saltando tra la modalità PHP e la modalità HTML usando% tag<?php ?>, ecc., e la sua semantica è costruita attorno al modello di esecuzione one-process-per-request che era la norma agli inizi della programmazione web lato server. PHP è iniziato come uno strumento di scripting web e solo in seguito si è evoluto in un linguaggio di programmazione (un po ') generico; la versione CLI e altre funzionalità non Web, anche se spesso possono essere utilizzate in modo abbastanza efficace, sono un ripensamento e, con una sufficiente esposizione alla lingua e al suo ecosistema, a volte possono diventare dolorosamente evidenti.

Al contrario, la maggior parte degli altri linguaggi di programmazione sono stati concepiti come linguaggi di programmazione generici, di sistemi o applicazioni fin dall'inizio, e qualsiasi cosa specifica per la programmazione web è disponibile nelle librerie. Se vuoi fare programmazione web, per esempio, in Python, hai bisogno di un framework web, o almeno di una libreria per implementare collegamenti al server web e cose come l'analisi delle richieste, i template HTML e la gestione delle sessioni, e probabilmente anche alcuni binding di database (a meno che tu non sei davvero hardcore e scrivi tutto da zero).

PHP ha incorporato tutte queste cose per impostazione predefinita, ed è per questo che alla gente piace dire che PHP è un framework web in sé.

Per un "Ciao, mondo!" applicazione web in Python, di solito si imposta un virtualenv, si installano alcune librerie, si impostano alcune regole per il framework web, si definiscono i percorsi e si scrive un gestore che genera una risposta con "Hello, world!" nel corpo; in PHP, si tratta di scrivere <?php echo "Hello, world!" in index.php, copiarlo nel docroot di apache e abilitare mod_php. Il resto (aggancio al server, analisi delle richieste, generazione di risposte, ecc.) Accade ancora, ma PHP si prende cura di esso per te.

    
risposta data 16.07.2013 - 09:56
fonte
2

PHP non è un linguaggio web. Ha funzioni incorporate per la programmazione in applicazioni Web. Lo sviluppo di un'applicazione Web in PHP è molto semplice rispetto ad altri linguaggi come java, ASP, C #.

Se vuoi sviluppare un'applicazione web che non è così grande e utilizza un database con meno dimensioni (pochi GB), puoi sviluppare un'applicazione web php. Ci sono molte società di web hosting che forniscono web hosting basato su PHP con un prezzo molto inferiore con tutte le funzionalità. L'uso di un sito PHP è inferiore rispetto a Java / ASP. PHP è un'applicazione web leggera.

    
risposta data 16.07.2013 - 10:27
fonte
1

Ryan sta probabilmente formando la sua opinione sulla base di una prospettiva storica. Storicamente, PHP doveva essere un linguaggio web. Storicamente un sacco di funzionalità del linguaggio sono state progettate per questo caso d'uso, e infatti PHP è stato utilizzato come "Home page personale". link

Ma ora, PHP ha sviluppato molto e personalmente direi che non è più così vero.

Solo 2 esempi:

I thread sono stati aggiunti alla lingua solo di recente. Per molto tempo, non è stato possibile. I thread sono qualcosa che non ha senso in un ambiente web (invece si tende a dare il calcio a un processo in background completamente nuovo o a passare un messaggio attraverso una coda a un operatore altrove). link

Memoria e amp; Gestione delle risorse. PHP fornisce un metodo __destruct () sugli oggetti, in modo da poter cancellare le risorse. Ma per cominciare, questo è stato chiamato solo allo spegnimento dello script. Ora in un ambiente Web questo ha senso perché si desidera che lo script esegua al massimo 0,5 secondi al massimo, quindi l'arresto dello script non è mai lontano. Ma per uno sfondo di lunga durata o script di shell questo è terribile. Versioni successive di PHP hanno risolto questo problema. link

Tuttavia, in genere tenderai a trovare PHP usato in un contesto web e server e non in un contesto di app desktop, quindi questo è il punto su cui si concentra maggiormente.

    
risposta data 16.07.2013 - 10:49
fonte

Leggi altre domande sui tag