Pergunta

Eu estava lendo um artigo/entrevista (Guerra Idioma:PHP vs.Rubi (por Jeffrey Way;Março de 2011)) por um desenvolvedor do Envato usando Ruby.Ele diz: “PHP é um framework web disfarçado de linguagem”.

Ele não expôs essa afirmação, então fiquei pensando se isso é verdade e, em caso afirmativo, como.Pesquisei um pouco, mas não consegui encontrar nenhuma informação sobre esse assunto.Estou me perguntando como essa afirmação é verdadeira e o que faz do PHP não uma linguagem de programação.E por que outras linguagens como python ou ruby ​​não se enquadram nessa categoria?

Foi útil?

Solução

Oficialmente:

PHP é uma linguagem de script de uso geral amplamente utilizada, especialmente adequada para desenvolvimento Web e pode ser incorporada em HTML.

De acordo com http://us.php.net/

Mas essa não é necessariamente uma descrição muito adequada.

PHP é uma linguagem de computador completa da Turing.No entanto, qualquer distribuição de PHP virá com um enorme número de bibliotecas padrão, tanto que as bibliotecas padrão PHP poderiam ser classificadas como um framework.

Portanto, quando visto desta forma, PHP é:

Uma estrutura com sua própria linguagem de script Turing completa e exclusiva.

Ou

Uma linguagem envolta em uma enorme estrutura web, da qual não pode ser removida.

No entanto, se olharmos para o nome "PHP:Pré-processador de Hipertexto" (PHP), isso implica que o PHP é um "Pré-processador" (que pré-processa o Hipertexto) - nem um framework, nem uma linguagem, mas um software.

Olhando dessa forma, PHP é uma aplicação que executa scripts em uma linguagem proprietária, com acesso a um grande framework interno projetado para processar Hipertexto.

Portanto:PHP não pode ser classificado adequadamente como framework ou linguagem.A verdade é que existe uma linguagem, um framework e uma aplicação, todos com o mesmo nome (porque estão todos reunidos em uma só coisa)!Assim, “PHP” pode se referir a qualquer parte do sistema.

Outras dicas

Não tenho fontes – mas a afirmação faz algum sentido, mesmo que seja apenas uma tentativa de gerar controvérsia.

PHP é definitivamente uma linguagem, e não um framework - mas se você olhar o manual do PHP versus, digamos, a especificação C ou C++, o corpo de funcionalidades que o PHP oferece possui elementos que seriam considerados no domínio de um framework:PDO, manipulação de XML e assim por diante - essas coisas normalmente seriam incluídas em um framework como o Qt.

O problema do PHP é que ele não é apenas uma linguagem de programação, mas um ecossistema inteiro, que consiste em:

  • A própria linguagem de programação PHP
  • Um tempo de execução que pode se conectar a um servidor web (através de mod_php ou CGI/FastCGI) e oferece muitas maneiras de interagir com ele
  • Uma grande biblioteca de funções e classes integradas, muitas delas relacionadas à web

PHP fornece recursos na própria linguagem que são muito específicos para programação web, como os superglobais ($_SERVER, $_GET, $_POST, $_COOKIE, etc.), alternando entre o modo PHP e o modo HTML usando <?php ?> tags, etc., e sua semântica são construídas em torno do modelo de execução de um processo por solicitação que era a norma nos primeiros dias da programação web do lado do servidor.PHP começou como uma ferramenta de script da web e só evoluiu para uma linguagem de programação (um tanto) de uso geral mais tarde;a versão CLI e outros recursos não-web, embora muitas vezes possam ser usados ​​de forma bastante eficaz, são uma reflexão tardia e, com exposição suficiente à linguagem e seu ecossistema, isso pode se tornar dolorosamente óbvio às vezes.

Por outro lado, a maioria das outras linguagens de programação foram projetadas como linguagens de programação de uso geral, sistemas ou aplicativos desde o início, e qualquer coisa específica para programação web vem em bibliotecas.Se você deseja fazer programação web em, digamos, Python, você precisa de uma estrutura web, ou pelo menos uma biblioteca para implementar ligações de servidor web e coisas como análise de solicitação, modelagem HTML e gerenciamento de sessão, e provavelmente algumas ligações de banco de dados também (a menos que você sou realmente hardcore e escrevo tudo isso do zero).

O PHP tem todas essas coisas incorporadas por padrão, e é por isso que as pessoas gostam de dizer que o PHP é um framework web em si.

Para um "Olá, mundo!" Aplicativo da Web no Python, você normalmente configuria um VirtualEnv, instalaria algumas bibliotecas, configuria algum pouco de caldeira para a estrutura da web, definiu rotas e escrevia um manipulador que gera uma resposta com "Hello, World!" no corpo;em PHP, é uma questão de escrever <?php echo "Hello, world!" em index.php, copiando-o para o docroot do apache e habilitando mod_php.O resto (conectar-se ao servidor, analisar solicitações, gerar respostas, etc.) ainda acontece, mas o PHP cuida disso para você.

PHP não é uma linguagem web.Possui recursos integrados para fazer programação em aplicativos da Web.Desenvolver uma aplicação web em PHP é muito fácil em comparação com outras linguagens como java, ASP, C#.

Se você deseja desenvolver uma aplicação web que não seja tão grande e use banco de dados com tamanho menor (poucos GB), então você pode desenvolver uma aplicação web php.Existem muitas empresas de hospedagem que fornecem hospedagem na web baseada em PHP, cobrando um preço muito menor com todos os recursos. Manter um site PHP é menor em comparação com Java/ASP.PHP é um aplicativo web leve.

Ryan provavelmente está formando sua opinião com base em uma perspectiva histórica.Historicamente, o PHP foi concebido para ser uma linguagem web.Historicamente, muitos recursos da linguagem foram projetados para esse caso de uso e, na verdade, PHP costumava significar "Página inicial pessoal". http://www.nusphere.com/php/php_history.htm

Mas agora, o PHP se desenvolveu muito e eu pessoalmente diria que isso não é mais verdade.

Apenas 2 exemplos:

Threads foram adicionados ao idioma apenas recentemente.Durante muito tempo, simplesmente não foi possível.Threads são algo que não faz sentido em um ambiente web (em vez disso, você tende a iniciar um processo em segundo plano completamente novo ou passar uma mensagem por meio de uma fila para um trabalhador em outro lugar). http://uk3.php.net/manual/en/book.pthreads.php

Gerenciamento de memória e recursos.PHP fornece um método __destruct() em objetos, para que você possa liberar recursos.Mas, para começar, isso só foi chamado no encerramento do script.Agora, em um ambiente web, isso faz sentido porque você deseja que seu script seja executado no máximo por 0,5 segundos, portanto, o encerramento do script nunca está longe.Mas para um plano de fundo ou script de shell de longa duração, isso é terrível.Versões posteriores do PHP corrigiram isso. http://php.net/manual/en/linguagem.oop5.decon.php

No entanto, você ainda tende a encontrar o PHP usado em um contexto de web e servidor e não em um contexto de aplicativo de desktop - então é aqui que está o foco.

Licenciado em: CC-BY-SA com atribuição
scroll top