2010-06-26 6 views
2

Est-il possible d'obtenir une fonctionnalité __callStatic, ou similaire, dans PHP 5.2?Solution de contournement statique d'appel PHP pour PHP 5.2

Je termine un Framework PHP et j'ai besoin d'utiliser cette fonctionnalité pour une classe ORM de base de données. Ainsi, par exemple, vous pouvez utiliser le code ci-dessous pour obtenir des données de la colonne 2 et de la colonne 4 de la table de base de données en déclarant les méthodes dynamiquement en fonction de ce que vous voulez (comme les rails je suppose).

Class::find_by_col2_or_col4(); 

Je l'ai déjà fait en PHP 5.3 et il fonctionne parfaitement, mais je suis en train de faire la même chose pour ceux qui utilisent PHP 5.2.

Ou existe-t-il un autre moyen de récupérer le nom de la méthode statique et des arguments en utilisant PHP 5.2?

Merci.

Répondre

0

Pas dans une capacité statique. Techniquement, Rails, CakePHP, etc. n'appellent pas ces types de méthodes dynamiques de manière statique. Pour ne pas entrer dans un débat philosophique, mais si la rétrocompatibilité est une exigence, vous pouvez changer votre paradigme et utiliser __call(). Dans ce cas, vous appelez avec un objet comme ModelObject->find_by_col2_or_col4. Bien sûr, je comprends que ce n'est probablement pas ce que vous vouliez entendre.

C'est PHP, il y a probablement un moyen de le pirater, mais je ne crois pas qu'une méthode native existe.

+0

Merci Jason, Je cherchais un moyen de faire cela pour PHP 5.2 mais je n'arrivais pas à trouver de bidouille ou de solution de contournement. Aussi ne peut pas trouver de hacks pour inspecter quelles fonctions statiques sont appelées. Quoi qu'il en soit, la fonctionnalité qui repose sur __callStatic n'est requise que pour les modules ORM Forms et Database, de sorte que le besoin n'est pas lié à l'ensemble de la plate-forme. Je suppose que pour les utilisateurs qui ne peuvent pas passer à la version 5.3, ils devront se contenter de fonctionnalités compatibles 5.2. Ils seront toujours capables de tout faire, mais pas de la manière la plus cool, par exemple. Base de données ORM. Cheers. –

+0

Bonne chance l'homme. On dirait que ce que vous faites est assez soigné et vaut probablement la mise à niveau. –

Questions connexes