Gostaria de aprender PHP para desenvolvimento web, mas fui atraído por comentários como o seguinte * :
- PHP é bom, mas gera código espaguete
- PHP é legal, mas Python é material de casamento
- O PHP não possui material que você obtém em outras linguagens como C # ou Java
Mas para o PHP5 eu vi alguns comentários promissores. Então, minha pergunta é: como o PHP5 se sai com versões anteriores da linguagem e agora é bom o suficiente para aprender sobre desenvolvimento web.
* Os comentários são apenas para referência, para não incitar uma guerra de chamas. Nenhuma comparação do PHP com outras linguagens é solicitada aqui. Por favor, comente apenas no PHP5 e como ele se compara às versões anteriores.
Respostas:
Ao discutir idiomas, essas duas citações de Stroustrup sempre lembram :
e
Agora para a pergunta em questão. A maior parte do ódio é principalmente dirigida ao PHP4. O PHP5 foi lançado pela primeira vez em julho de 2004 (beta um ano antes) e a última versão do PHP4 é a 4.4.9 lançada em agosto de 2008 . Não há mais razão válida para usar o PHP4, a menos que você mantenha algum aplicativo herdado. O PHP4 não é mais suportado pelo grupo PHP, e todos esperamos que desapareça em breve.
A diferença entre as duas versões é maior do que costuma ser entre duas versões principais, pois o mecanismo por trás do intérprete foi reescrito do zero e incluiu um novo modelo de objeto. O lançamento do PHP5 coincidiu aproximadamente com o lançamento do MySQL5, uma grande revisão do MySQL. O PHP geralmente é acoplado ao MySQL e a quinta versão de ambos tratou de vários problemas e os atualizou com a concorrência. O MySQL também está sujeito a comentários do FUD , mas, bem, é o banco de dados por trás do Google AdWords .
O PHP 5.3 foi uma versão importante em tudo, menos no nome. Muitos recursos destinados ao PHP6 foram encontrados na versão 5.3 e para todos os desenvolvedores da versão 5.2, recomendo fortemente que migrem para a versão 5.3+ mais cedo ou mais tarde. A versão atual, 5.4, inclui alguns recursos impressionantes (entre outros):
Agora, para seus comentários específicos:
Isso absolutamente não é verdade. Nenhuma linguagem gera qualquer tipo de código, é sempre responsabilidade do desenvolvedor estragar, o código espaguete é possível em todas as línguas existentes. O que é verdade, porém, é que o PHP tem uma barreira de entrada muito baixa em comparação com outras linguagens populares; portanto, é muito mais fácil para desenvolvedores inexperientes escreverem código ruim (mas funcionando). Mas esse é um efeito colateral de todo idioma fácil de aprender.
Além disso, o PHP não impõe nenhum estilo ou paradigma específico, e sempre depende de você decidir o que fazer. Eu sempre pensei nisso como uma coisa boa, enquanto outros a veem como um ponto válido de crítica. Você terá que decidir por si mesmo.
Sim. E a linguagem de uso geral X não possui muitas coisas que você obtém no PHP. Como ser portátil em sistemas operacionais E servidores http e suporte para todas as bibliotecas imagináveis de terceiros que seriam úteis em um ambiente de desenvolvimento da web. Você precisa entender que o PHP não falta nada importante , se isso acontecesse, teria morrido há muito tempo. A comparação entre a linguagem de uso geral X e outras linguagens de uso múltiplo com PHP é uma falácia, maçãs e laranjas. Embora o PHP ofereça algumas facilidades para apoiar a ideia de que é de uso geral, não é, é uma linguagem da web.
Você deve ter em mente que o caminho evolutivo do PHP é bem diferente da linguagem de uso geral X : o PHP cresceu e evoluiu, ele não foi projetado. Toda vez que um recurso é adicionado ao idioma está fora da necessidade real, não de acordo com algum ideal imaginário do que um idioma deveria ser. Os idiomas são a primeira e principal ferramenta, e o PHP é perfeito como tal.
Não tenho nada contra a linguagem de uso geral X , sou a favor de escolher a ferramenta certa para o trabalho. Sempre misturei e combinei, e também estou codificando em Java e Python, às vezes em paralelo com PHP. Mas o PHP é o único com quem eu consideraria me casar. :)
Se você está pensando em começar com o PHP, é claro que deve começar com a versão estável mais recente, como faria em qualquer outro idioma.
fonte
O PHP é "bom o suficiente" para o desenvolvimento da web há muito tempo . Como em qualquer linguagem de programação, a qualidade do código depende das habilidades do desenvolvedor para escrevê-lo.
Uma crítica comum ao PHP é que sua flexibilidade facilita para desenvolvedores inexperientes escreverem códigos ruins ou "espaguete". Isso ocorre principalmente porque tenta abraçar simultaneamente vários paradigmas que ocasionalmente entram em conflito, são mal implementados ou não combinam bem.
O script do lado do servidor (PHP) justaposto ao código do lado do cliente (HTML + Javascript) sem modularidade é comum, quase incentivado, em detrimento da clareza e legibilidade.
É comumente escrito em um estilo imperativo, mas fornece mecanismos para orientação a objetos. Isso resulta facilmente em estilos mistos e geralmente pode levar a um design ruim.
O design orientado a objetos foi (na minha opinião) pouco suportado no PHP4. Esta é uma área em que o PHP5 melhorou significativamente (por exemplo, com modificadores de acesso, classes abstratas, resolução de escopo aprimorada ).
A digitação dinâmica do PHP permite erros de tempo de execução que podem ser eliminados com a verificação de tipo estática. Isso é inerente ao design de todas as versões do PHP e não será alterado tão cedo; o ônus de validar tipos de objetos é deixado para o programador.
As mudanças no modelo OOP do PHP5 contribuem muito para incentivar o bom design, mas não adicionam nenhum desincentivo para desencorajar as más práticas mencionadas acima.
fonte
O PHP tem alguns problemas significativos em si, mas esses são principalmente da variedade irritante: Sua biblioteca é inconsistente e um tanto esquizofrênica, não possui strings como objetos de primeira classe, coisas assim. Não obriga a escrever código ruim e funciona bastante bem para o que faz - escrever páginas da web. Seu PHP será tão bom quanto você se esforça para que seja; é bem possível escrever PHP que seja extremamente processual e parecido com o código C, e também é possível escrever PHP excessivamente orientado a objetos e parecido com Java. Como alguém que desenvolve PHP diariamente, eu gosto de algumas coisas e odeio algumas e não posso esperar por algumas funções 5.4 (como Traits e desatenção de retorno de função sã), mas encorajaria sinceramente alguém que está pensando em escolher pronto para fazê-lo.
fonte
O php5 é uma versão muito melhorada do php4.
A maioria, mas nem todo o código php4 funciona no php5.
O que realmente mudou foi o muito aprimorado Modelo de Objetos, que corrigiu muitas limitações e peculiaridades inerentes à implementação OO anterior, mas que é amplamente incompatível com as versões anteriores.
Documentos aqui
Os outros comentários têm validade, mas não são proibidos.
"PHP é bom, mas gera código espaguete" - você pode gerar todos os tipos de massas em qualquer idioma, mas o php não faz nada para desencorajar o codificador inexperiente que escreve um ninho de código não estruturado. Por outro lado, você pode escrever um bom código em qualquer idioma, programadores qualificados não têm problemas para escrever php limpo e bem estruturado.
"PHP é legal, mas Python é material para casamento" - é uma linguagem legal, mas existem diversas estruturas da Web, todas com pontos extremamente bons, mas nenhuma delas realmente decolou, o que é bom, mas qualquer Python / A estrutura de sua combinação de escolha sempre será uma habilidade de nicho.
"PHP atrasa coisas que você obtém em outras linguagens como C # ou JAVA" - o php possui o suporte à biblioteca mais diversificado e bem implementado de qualquer linguagem, exceto o perl. Existem alguns pontos em branco como análise estatística e processamento de vetores. Mas, geralmente, se você quiser fazer algo, uma pesquisa rápida do PEAR localizará uma biblioteca que faz isso. A linguagem em si é mais simples que C # ou Java - mas a simplicidade da sintaxe básica mais "Duck Typing" significa que você pode fazer qualquer coisa em php que possa fazer em Java de uma maneira mais legível e elegante.
fonte
strip_tags
vsstripslashes
. Eu diria que C não exibe esses problemas, mas já existe há um tempo. ;)