2009-07-08 4 views
4

J'ai récemment eu l'idée de créer ma propre classe String pour faciliter l'utilisation des fonctions de PHP. Au lieu de strlen($str), j'écris $str->length(). Facilite la mémorisation des ordres de paramètres dans certaines fonctions, par exemple substr. J'ai exécuté des scripts de temporisation et j'ai trouvé que c'était 5 fois plus lent que d'utiliser les fonctions normales. Je n'ai pas encore testé cela dans une vraie application, donc je ne sais pas à quel point cela sera négligeable (1ms vs 5ms ou 100ms vs 500ms?).PHP devrait-il utiliser des objets comme types de données de base?

Quoi qu'il en soit, il m'a semblé que maintenant PHP se concentre davantage sur la POO, est-ce qu'il ne serait pas logique que les chaînes, les tableaux et d'autres types de base soient orientés objet? Ils pourraient alors mieux nommer les fonctions et le code «se sentirait» mieux. Et progressivement éliminer la vieille façon de faire les choses. Des avantages/inconvénients à cela?

Répondre

4

Vous pouvez toujours documenter votre code et utiliser simplement les fonctions fournies par PHP. Il est difficile de dire si cela va ou non vous affecter à long terme. De nombreux facteurs peuvent influencer cela. Essayez-le, peut-être et si cela ne fonctionne pas, revenez à la façon originale. Personnellement, je garderais mon document bien documenté au lieu de devenir trop sophistiqué. Si vous voulez faire la poussée dans plus de POO, votre meilleur pari est de regarder dans un cadre.

Je souhaite que PHP le rende aussi simple que possible depuis le début. Le code aurait l'air si propre.

+2

Et si vous utilisez un cadre encore ne le fait pas pour vous, il pourrait être temps de se pencher sur un autre langage, en particulier celui qui est vraiment orienté objet. –

1

Je pense que ce serait bien, mais ce ne serait pas PHP plus ...

0

Je comprends pourquoi vous faites cela, mais les bibliothèques et les abstractions qui ne rien d'autre en plus « fais plus facile sur le programmeur "sont une perte de temps, à mon humble avis. Ils sont rarement efficaces, ils sont fluff, et ils sont même un peu prétentieux.

PHP a beaucoup de défauts, c'est sûr, mais vous passerez beaucoup de temps qui pourrait être mieux passé ailleurs si vous essayez d'inventer des solutions de contournement pour eux partout où vous allez.

1

Bien sûr, $somestring->length() est sympa mais, de l'autre côté, vous devez $somestring = new String('asdf...') chaque fois que vous créez une chaîne et que vous convertissez constamment des chaînes en chaînes et vice versa. Vous finissez probablement par rendre les choses plus difficiles à écrire à & à long terme.

Je ne vois pas vraiment le langage PHP changer de cette façon - cela changerait trop le langage fondamental. Si vous voulez une langue comme celle-ci, vous devrez changer de langue, plutôt que d'espérer que la langue change.

+0

Maintenant, ce n'est pas correct. Les objets String peuvent agir comme des chaînes normales en utilisant la méthode magique __toString. L'accès indexé sur les objets Array peut être effectué à l'aide de l'interface ArrayAccess. Je vais faire un benchmarking pour voir à quel point cela affecte réellement la performance, serait soigné. –

0

Jetez un oeil à Stringy. Il vous donne une tonne de méthodes utiles qui rend le travail avec notamment des chaînes UTF-codées plus facile en PHP:

$stringy = S::create('Fòô', 'UTF-8'); 
count($stringy); // 3 
Questions connexes