|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Bonsoir à tous.
Ça fait un moment que je fraye dans les eaux nébuleuses des bizarreries de l'implémentation de l'OOP en PHP 5.3.x mais je suis tombé à la renverse récemment en voyant ça: Code :
Du coup mon idée d'utiliser le __callStatic pour résoudre en Code :
MonSingleton::instance()->maMethodeObjet() Vous avez des idées sur ce point ?
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
||
|
00
|
|
|
#2 | |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
y'a rien de choquant mais t'as un belle erreur :
Citation:
__________________
http://blog.stealth35.com/ |
|
|
|
00
|
|
|
#3 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
J'ai remarqué oui. C'est assez impressionnant ce manque de sécurité dans le langage.
Je me demande si c'est possible également en 5.1 ou si c'est un side effect de l'implémentation du late static binding...
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé
![]() ![]() |
Bonjour,
Autre bizzarerie du PHP 5.3.x : la résolution de constantes à la volée, oui oui et pas de fonctions statiques : Code :
|
||
|
01
|
|
|
#5 |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
y'a rien de choquant non plus c'est le late static binding ca
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() ![]() |
Oui je suis bien d'accord, juste que la doc de PHP n'en fait pas mention du LSB sur les constantes.
|
|
00
|
|
|
#7 | |||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Citation:
Un autre truc qui est bien illogique: Code :
Je me pose donc la question suivante, est-ce qu'en PHP tout est par défaut publc static (un peu comme en C#) ?
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|||
|
00
|
|
|
#8 | ||
|
Membre actif
![]() Inscription : décembre 2006 Messages : 184 ![]() |
je vois pas le problème, si on commence à comparer les interpréteurs de chaque langage et leur syntaxe pas fini de discuter
sinon si c'est un singleton que tu voulais faire ca fonctionne très bien Code :
|
||
|
|
00
|
|
|
#9 | ||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Ouais enfin, le but c'était de proposer un accès direct aux méthodes de l'objet interne sans avoir à tout redéclarer / redéfinir dans le singleton.
A la base, je voulais détourner l'usage de __callStatic pour ça... mais visiblement c'est impossible sans une méthode invoke() (pas __invoke) ce qui est absurde puisqu'on a instance(). Tien au passage, voila mon singleton: Code :
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
||
|
00
|
|
|
#10 |
|
Membre actif
![]() Inscription : décembre 2006 Messages : 184 ![]() |
ah ben d'après la doc php il faut que ton serveur php soit au moins en version 5.3.0 pour utiliser
Code :
public static function __callStatic ($name, $args) |
|
|
00
|
|
|
#11 |
|
Expert Confirmé
![]() Olivier Développeur Web Inscription : août 2003 Messages : 1 837 ![]() |
Je dis peut être une connerie mais le principe du singleton n'est il pas d’empêcher plusieurs instances d'une classe ?
Si ta classe est en abstract , elle ne peux pas être instanciée, du coup le singleton n'a pas lieu d'être si ? |
|
00
|
|
|
#12 |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
elle non mais les classes fille oui, sinon oui le singleton garde qu'une seule instance
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#13 | |||||||||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Citation:
Code :
Code :
Code :
ça signifie qu'il est possible en PHP d'appeller des méthodes d'instance comme des méthodes statiques! Personnellement ça me choque, mais c'est un point de vue que ne partage pas stealth35 C'est domage car ça m'aurait évité de devoir faire systématiquement: Code :
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|||||||||
|
00
|
|
|
#14 | ||
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
c'est pas self qui faut utilise mais static a la place
et la t'as : Code :
si tu veux le callStatic il faut faire : MySingleton::testC(); tu peux le faire, mais t'as une erreur
__________________
http://blog.stealth35.com/ |
||
|
|
00
|
|
|
#15 | |||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Code :
Strict Standards: Static function Singleton::whoami() should not be abstract C'est louche, je n'ai pas cette erreur: Code :
Citation:
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|||
|
00
|
|
|
#16 | |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
tu peux pas le forcer __callStatic est appelle uniquement si la methode n'existe pas, la elle existe ton il passera pas par __callStatic, dans ce qu'a la utilise du Delegate, sinon pour ton niveau d'erreur c'est pas E_STRICT mais E_ALL | E_STRICT, si y'a pas le E_ALL ca marche pas
Citation:
__________________
http://blog.stealth35.com/ |
|
|
|
00
|
|
|
#17 | ||
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
si vous voulez un truc plus marrant y'a ca :
Code :
__________________
http://blog.stealth35.com/ |
||
|
|
00
|
|
|
#18 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Ahaha, en effet, c'est n'importe quoi!
Mais comment ils ont implémenté la POO les gars de chez Zend ? C'est à se demander.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
00
|
|
|
#19 | |||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Citation:
Code :
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|||
|
00
|
|
|
#20 | |||
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
Citation:
__________________
http://blog.stealth35.com/ |
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com