Quelqu'un a-t-il tenté de rendre les fonctions système de PHP plus orientées objet?

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

  •  09-06-2019
  •  | 
  •  

Question

Je suis simplement curieux de savoir s'il existe un projet tentant de regrouper toutes les fonctions intégrées de PHP (ou la plupart d'entre elles) dans une hiérarchie de classes plus orientée objet. Par exemple, regrouper toutes les fonctions de chaîne dans une seule classe String, etc.

Je réalise que cela ne résoudra aucun problème (à moins que les modifications ne soient apportées au niveau du code source PHP), car toutes les fonctions intégrées seraient toujours accessibles dans l'espace de noms global, mais cela rendrait certainement beaucoup plus facile à utiliser. plus facile.

Était-ce utile?

La solution

Pour répondre à votre question, oui, il existe plusieurs bibliothèques qui font exactement ce dont vous parlez. En ce qui concerne celui que vous voulez utiliser est une question totalement différente. PHPClasses et pear.org sont de bons endroits pour commencer à chercher de telles bibliothèques.

Mise à jour: Comme d'autres l'ont suggéré, SPL est une bonne bibliothèque et englobe de nombreuses fonctions PHP intégrées. Cependant, il y a encore beaucoup de fonctions php qui ne sont pas emballées. Nous laissant toujours sans solution miracle.

En utilisant des frameworks tels que Cakephp et Zend (autres), j'ai remarqué qu'ils tentaient de résoudre certains de ces problèmes en incluant leurs propres bibliothèques et en intégrant des bases telles que la connectivité à la base de données. Donc, les cadres peuvent être une autre solution

Autres conseils

Beaucoup trop de fois. Dès que quelqu'un découvre que PHP dispose de fonctionnalités OO, il souhaite tout inclure dans des classes.

Le but de l’utilisation de OO en PHP est que vous pouvez concevoir vos solutions de la manière qui vous convient le mieux. Mais encapsuler les fonctions existantes dans Objects ne rapporte pas grand chose.

Cela étant dit, le noyau de PHP est déjà assez orienté objet. Consultez SPL .

Je pense que quelque chose comme ceci est primordial pour que PHP avance. Étant principalement un programmeur .Net, je trouve pénible de travailler avec PHP avec 1 million et 1 fonctions globales. C'est bien que PHP 5.3 ait des espaces de noms, mais cela n'aide pas beaucoup lorsque leurs propres bibliothèques ne sont même pas orientées objet, et encore moins emploient des espaces de noms. Le langage PHP ne me dérange pas tellement, mais leur API est terriblement désorganisée et nécessite probablement une refonte complète. Un peu comme ce que VB a traversé quand il est devenu VB.Net.

Je ne suis pas d'accord. La programmation orientée objet n'est pas intrinsèquement meilleure que la programmation procédurale. Je crois que vous ne devriez pas utiliser OO sauf si vous avez besoin d'un comportement polymorphe (héritage, méthodes de substitution, etc.). L'utilisation d'objets comme simples conteneurs de code ne vaut pas la charge. Ceci est particulièrement des chaînes car elles sont très utilisées (par exemple, des clés de tableau). Chaque application peut généralement bénéficier de certaines caractéristiques polymorphes, mais généralement à un niveau élevé. Souhaitez-vous jamais étendre une classe String?

De plus, un peu d’historique est nécessaire pour comprendre le nom étrange des fonctions de PHP. PHP est basé sur The Standard C Library et POSIX standard et utilise plusieurs des mêmes noms de fonctions (strstr, getcwd, ldap_open, etc.). C’est une bonne chose, car elle minimise la quantité de code de liaison de langue, garantit un ensemble de fonctionnalités bien pensées (tout ce que vous pouvez faire en C et en PHP) et ces bibliothèques système sont hautement optimisées (par exemple, strchr est généralement en ligne, ce qui le rend environ 10 fois plus rapide).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top