Accueil > Forum > > > > constante de classe à récupérer dans la classe parente
constante de classe à récupérer dans la classe parente
dimanche 27 janvier 2008 à 19:42:28 |
constante de classe à récupérer dans la classe parente

rekam
|
Bonjour! oui, je sais, le titre fait 3km de long, mais j'ai de la peine à le raccourcir... Ainsi donc, voici mon problème: 1) J'ai 2 classe A et B 2) La classe B étend la classe A 3) La classe A définit une méthode statique A::chose() 4) La classe B définit une constante ou une propriété statique B::$test 5) je voudrais afficher la constante ou propriété statique définie dans B dans la méthode de A Et évidemment, j'y arrive pas. En définissant "const test = 'truc';" ou "public static $test = 'truc';", j'obtiens un "not defined" dans la méthode de A. Le code est celui-ci (copiez-collez, vous verrez bien) class A { public static $test = 'truc A'; public static function chose () { echo "voila : ".self::$test; } } class B extends A { public static $test = 'truc B'; } B::chose();Là, il me crache la valeur de $test définie dans A. Donc, bêtement, je commente la déclaration dans A, et là, pouf, "undefined static var...." qu'il me dit, le mécréant! Alors bon, je tente le coup avec un petit "const test = 'truc B'" en lieu et place de la variable statique, mais non... même problème. Est-ce qu'il y a moyen de faire fonctionner ce binz? Est-ce que ce cas de figure est totalement débile? Je n'ai pas l'impression, pourtant. Je souhaite simplement pouvoir savoir, dans A, que l'appel à la méthode statique vient de B... Bref si qqun m'a compris, je lui dis "bravo!". Et si en plus, ce qqun a une solution, alors là, c'est champion du monde. Bien la bonne soirée! rekam
|
|
dimanche 27 janvier 2008 à 20:53:46 |
Re : constante de classe à récupérer dans la classe parente

morpheus57
|
Hello, Tout d'abord, attention à ne pas confondre constante de classe et propriété : Tu peux définir une constante de classe de la manière suivante class A{ const CONST = "test"; }
Ensuite, en ce qui concerne ton problème, tu dois surcharger la méthode "chose" dans la classe B... En fait le problème vient du fait que le mot clé "self" fait référence à la classe courante.... Donc dans ton exemple il fait toujours référence à la classe A
Voilà, avoir été clair ;-) Bye

|
|
dimanche 27 janvier 2008 à 21:18:37 |
Re : constante de classe à récupérer dans la classe parente

rekam
|
merci bien! je m'en doutais et en fait... c'est triste. Parce qu'en fait, j'essaie précisément d'éviter de surcharger les fonctions. D'autant que la méthode A::chose() va contenir une sacrée quantité de choses, justement. Donc bon, à moins d'avoir une de ces superbes constantes magiques PHPesque (telle __METHOD__  ), je ne vois pas trop comment faire... D'ailleurs, je viens d'essayer avec "method_exists", mais forcément, ça marche pas non plus, puisqu'il faut faire appel à self... Snif... donc à moins de tout redéfinir la méthode, c'est pas possible, si j'ai bien compris? merci rekam
|
|
dimanche 27 janvier 2008 à 21:18:38 |
Re : constante de classe à récupérer dans la classe parente

rekam
|
merci bien! je m'en doutais et en fait... c'est triste. Parce qu'en fait, j'essaie précisément d'éviter de surcharger les fonctions. D'autant que la méthode A::chose() va contenir une sacrée quantité de choses, justement. Donc bon, à moins d'avoir une de ces superbes constantes magiques PHPesque (telle __METHOD__  ), je ne vois pas trop comment faire... D'ailleurs, je viens d'essayer avec "method_exists", mais forcément, ça marche pas non plus, puisqu'il faut faire appel à self... Snif... donc à moins de tout redéfinir la méthode, c'est pas possible, si j'ai bien compris? merci rekam
|
|
dimanche 27 janvier 2008 à 22:43:35 |
Re : constante de classe à récupérer dans la classe parente

malalam
|
Réponse acceptée !
Hello,
http://www.php.net/manual/en/language.oop5.late-static-bindings.php
|
|
dimanche 27 janvier 2008 à 23:36:58 |
Re : constante de classe à récupérer dans la classe parente

rekam
|
alors là, chapeau, c'est pile poil ce qu'il faut! je dois juste recompiler mon php linux pour matcher la version 5.3.0, sinon ça va pas marcher (d'ailleurs ça ne marche pas, visiblement, puisqu'un copier-coller me fait une parse error ;) .. j'ai php 5.2.3, donc forcément). bref, merci. En tous les cas, malalam, tes posts sur les forums sont tout autant pertinents que tes sources et tutoriaux!  a+ rekam
|
|
lundi 28 janvier 2008 à 08:25:19 |
Re : constante de classe à récupérer dans la classe parente

malalam
|
:-) Merci rekam! En fait, ta question tombait pile poil : c'est un comportement de php qui m'emm*** depuis longtemps. Et je suis tombé sur cette nouvelle fonctionnalitée OO il y a peu. Et j'insiste au passage sur la necessité d'au moins consulter la doc version anglaise régulièrement parce que la version française a toujours beaucoup de retard dessus.
|
|
lundi 28 janvier 2008 à 13:55:34 |
Re : constante de classe à récupérer dans la classe parente

morpheus57
|
Ah ben merci malalam : c'est vrai que c'était un comportement de PHP qui n'était pas terrible

|
|
Cette discussion est classée dans : test, static, truc, classe, statique
Répondre à ce message
Sujets en rapport avec ce message
Return pour une Classe [ par mandark ]
Bonjour à tous et encore merci à tous de l'aide que vous offrez ici (:Voilà j'aimerai savoir comment gérer les valeurs de retour d'une classe, je m'ex
POO php5 classe abstraite et méthode static [ par dorian91 ]
Bonjour à tous,J'ai une petite question pour vous. Je vais vous écrire le code et vous expliquer mon problèmeclass Test1 extends Test2{}abstract class
Variable static [ par VANGELIS02 ]
Bonjour à tous,Alors voila j'ai un petit problème de variable static.Exemple : class Test{ private static $test; public static function getVariabl
Problème variable externe a une classe [ par destiny ]
Bonjour,Ma question est simple, comment recuprer dans une classe un variable constante ? Exemple :define("DEFAULT_PAGE", "welcome");class initPage {
Modelisation d'une class avec les design pattern [ par devcphp12 ]
Bonjour à tous, j'ai crée differents fonctions qui me premettent tout de manipuler des fichiers afin de les transformer en pdf , jpg , tiff. Après b
comparer une date à la date aujourd'hui [ par vincej ]
Bonjour, je veux vérifier dans une table que aucun des enregistrements est à la date d'aujourd'hui. pour vérifier cette condition j'ai mis un enregi
Filtrer une table [ par S83V ]
Bonjour à tous Voilà, j'ai créé 2 tables : une table eleve avec les champs ID, nom, prenom, classe, mot de passe. Une table fiches avec les champs ID
comparaison 2 URLs [ par Orlulas ]
Bonjour @tous et @toutes, Depuis plusieurs jours maintenant je bute sur un script en apparence tout bête : dans ma base de données je dispose d'un
Pb récupération d'une valeur d'un formulaire [ par NicoIRIS ]
Bonjour, Dans mon formulaire [b][/b] j'ai un champs [b][/b]. J'effectue des series de tests sur ma page via la fonction verif_saisie_user() située
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio [WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|