Là tu es dans la pure idéologie OO désolé. Les méthodes statiques ne sont pas mauvaises, sinon elles ne seraient pas implémentées dans la plupart des langages, ce n'est pas parce que tu crées une classe utilitaire avec des méthodes statiques que tu corromps le sacro-saint modèle objet. PHP est un langage multi-paradigmes, se focaliser sur un seul c'est à mon avis louper beaucoup, beaucoup de choses.
Au passage, ton argumentation sur le fait qu'il faut arrêter de faire du 5.2 me fait sourire, je n'ai pas fait de code pour 5.2 depuis au moins 2008 et je n'ai plus de projet sous 5.3 depuis 2011, 5.3 va d'ailleurs avoir sa toute dernière version en août avec la sortie de 5.6.
Qu'il ne faille pas utiliser de méthodes statiques quand on fait de la programmation orientée objet je peux sans problème en convenir (et encore il y a toujours des exceptions), mais dans ce fil personne ne te parle de faire de l'objet, et non, réunir des méthodes dans une classe n'est pas faire de l'objet. Ce n'est pas parce que des gens ont fait du pseudo objet il y a 10 ans en utilisant des méthodes statiques et ont pondu des horreurs que le principe de réunir des méthodes statiques dans des classes utilitaires est mauvais en soi.
Ah, et je n'ai jamais eu aucun problème pour tester des méthodes statiques, il faut dire que j'utilise Atoum et pas PhpUnit (mais pour être honnête, PhpUnit dans une version récente et une version de PHP actuelle, donc >=5.4, ne doit pas avoir le moindre problème non plus, les problèmes de tests de méthodes statiques, c'était surtout lié au late static binding qui n'a été implémenté qu'en 2009 avec la 5.3).
Puisque tu mentionnes Symfony, je suis allé voir:
https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Yaml/Inline.php
https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Intl/Util/IcuVersion.php
https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Intl/Util/Version.php
…
j'ai pas eu à chercher plus d'une minute, la première classe sur laquelle j'ai cliqué est une classe utilitaire contenant uniquement des méthodes statiques. Eh oui, Symfony utilise aussi cette technique, et pas du tout marginalement, et ils ont d'ailleurs bien raison d'utiliser toute la panoplie d'outils fournis par le langage.
Au passage tu peux nous expliquer comment faire facilement de l'autoloading de tes fonctions namespacées sans les mettre dans une classe ? L'autoloading ne fonctionne qu'avec les classes, encore une raison pour réunir ses fonctions dans une classe thématique avec des méthodes statiques. Composer offre une solution en permettant l'autoloading d'un fichier de fonctions (il rajoute un require_once dans son autoloader) mais ce n'est pas encore l'autoloader universel et c'est juste beaucoup plus simple de faire une classe thématique. Au passage la classe avec méthodes statiques, c'est l'une des solutions conseillées par Anthony Ferrara (ircmaxell) sur stackoverflow pour cette même question, core dev PHP à qui on doit l'API de gestion des mots de passe et un des plus grands experts en orienté objet de la communauté PHP, comme quoi… http://stackoverflow.com/questions/4737199/autoloader-for-functions
Sinon, tu penses quoi des traits depuis 5.4? Parce que finalement, c'est des classes utilitaires aussi, ça doit te faire hurler