Alguém tentou tornar as funções do sistema PHP mais orientadas a objetos?

StackOverflow https://stackoverflow.com/questions/61784

  •  09-06-2019
  •  | 
  •  

Pergunta

Estou apenas curioso para saber se existe algum projeto que tente agrupar todas (ou a maioria) das funções integradas do PHP em uma hierarquia de classes mais orientada a objetos.Por exemplo, agrupar todas as funções de string em uma única classe String, etc.

Sei que isso não resolverá nenhum problema (a menos que as modificações ocorram no nível do código-fonte PHP), uma vez que todas as funções integradas ainda estariam acessíveis no namespace global, mas certamente tornaria a usabilidade muito mais fácil.

Foi útil?

Solução

Para responder à sua pergunta, sim, existem várias bibliotecas que fazem exatamente o que você está falando.Quanto a qual você deseja usar é uma questão totalmente diferente.PHPClasses e pear.org são bons lugares para começar a procurar essas bibliotecas.

Atualizar:Como os outros sugeriram, o SPL é uma boa biblioteca e envolve muitas das funções php integradas.No entanto, ainda existem muitas funções php que não são agrupadas.Deixando-nos ainda sem uma solução mágica.

Ao usar frameworks como Cakephp e Zend (outros também), percebi que eles tentam resolver alguns desses problemas incluindo suas próprias bibliotecas e construindo conceitos básicos como conectividade de banco de dados no framework.Portanto, frameworks podem ser outra solução

Outras dicas

Muitas vezes.Assim que alguém descobre que o PHP possui recursos OO, eles querem agrupar tudo em classes.

O objetivo do material OO em PHP é que você possa arquitetar suas soluções da maneira que desejar.Mas agrupar as funções existentes em Objetos não traz muitos resultados.

Dito isto, o núcleo do PHP já é bastante orientado a objetos.Dê uma olhada SPL.

Acho que algo assim é fundamental para o PHP avançar.Sendo principalmente um programador .Net, acho difícil trabalhar com PHP com 1 milhão e 1 função global.É bom que o PHP 5.3 tenha namespaces, mas isso não ajuda muito quando suas próprias bibliotecas nem são orientadas a objetos, muito menos empregam namespaces.Não me importo muito com o PHP como linguagem, mas sua API é terrivelmente desorganizada e provavelmente precisa de uma revisão completa.Mais ou menos como o VB passou quando se tornou VB.Net.

Eu não concordo.A Programação Orientada a Objetos não é inerentemente melhor que a programação processual.Acredito que você não deve usar OO a menos que precise de comportamento polimórfico (herança, substituição de métodos, etc.).Usar objetos como contêineres simples para código não compensa a sobrecarga.Isso é particularmente verdadeiro para strings porque são muito usadas (por exemplocomo chaves de array).Cada aplicativo geralmente pode se beneficiar de alguns recursos polimórficos, mas geralmente em alto nível.Você gostaria de estender uma classe String?

Além disso, é necessário um pouco de história para entender a nomenclatura estranha das funções do PHP.PHP é baseado na Biblioteca C Padrão e no padrão POSIX e usa muitos dos mesmos nomes de funções (strstr, getcwd, ldap_open, etc).Na verdade, isso é bom porque minimiza a quantidade de código de ligação de linguagem, garante que um conjunto completo e bem pensado de recursos (quase tudo que você pode fazer em C, você pode fazer em PHP) e essas bibliotecas de sistema são altamente otimizadas (por exemplo,strchr geralmente é embutido, o que o torna cerca de 10x mais rápido).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top