Problème avec le constructeur

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème avec le constructeur

par Sékiltoyai » 22 avr. 2007, 23:24

Ah ok, on en apprend tous les jours :)

par Jules Petibidon » 22 avr. 2007, 23:09

hello,

argc et argv sont surtout intéressants pour passer des parametres à des scripts PHP CLI (en ligne de commande quoi) où les variables $_GET ou $_POST n'existent pas.

par Sékiltoyai » 22 avr. 2007, 22:34

Merde, j'ai toujours été persuadé que ca s'appliquait aux fonctions :-/
Mea culpa la :-/

par titerm » 22 avr. 2007, 20:32

Sauf pb de compréhension de ma part, cela concerne ce qui est passé via GET lors de la soumission d'un formulaire... Je ne pense pas qu'il y a un rapport avec la fonction func_get_args() qui ne traite que les arguments passées à une fonction.

par Sékiltoyai » 22 avr. 2007, 20:14

http://fr.php.net/manual/fr/ini.core.php
register_argc_argv boolean

Dit à PHP s'il doit déclarer ou non les variables argv et argc (qui contiendront les informations GET).

Voir aussi les lignes de commande. Cette directive a été introduite depuis PHP 4.0.0 et valait toujours "on" avant.

par titerm » 22 avr. 2007, 20:09

De quelle directive parles tu ?

par Sékiltoyai » 22 avr. 2007, 18:41

Oui, je suis d'accord, par contre faut s'assurer que la directive ad hoc soit activée dans le php.ini, et c'est pas tjs le cas :-/

par titerm » 22 avr. 2007, 18:20

Oops, désolé pour le nick, je recommencerai plus :)
Et bien évidemment, il est plutôt improbable que ca fonctionne avec __construct ou __destruct (faut tester mais ca m'étonnerait beaucoup en tous cas :-/ ).
Bah, ca par contre je peux répondre, __call ne sera jamais appelé en tant que constructeur...

Quand à utiliser __call pour émuler des fonction a signatures multiples, ca revient a faire ce que je proposais, une methode ss aucun parametre, puis utiliser func_get_args() pour faire la gestion de signature a la main, et ca, c'est aussi faisable sur le constructeur.
Utiliser __call dans ce context n'apporterait rien voir va compliquerait la chose puisque tu vas entrer dans __call à chaque appel d'une methode non déclarée, il faudra donc faire en plus du tri sur les signatures le tri sur les noms de methodes.

par Sékiltoyai » 22 avr. 2007, 16:23

Skitoyai, ca semble etre plus de la surcharge d'opérateur, ce que tu proposes. Je n'ai pas l'impression que cela permette de faire des fonctions à signatures multiple.
(Sékiltoyai :) )
D'après la même page :
Les appels de méthodes et l'accès aux membres peuvent être surchargés via les méthodes __call(), __get() et __set().
C'est à dire que sur les méthodes de classe, on peut faire une pseudo surcharge, c'est à dire que la méthode __call($fonction, $args) recoit le nom de la fonction est ses arguments sous forme de tableau, ce qui permet d'appeler une méthode avec le nombre et les types d'argument que l'on veut, mais l'intérêt est limité parce que c'est la méthode __call en elle même qui doit gérer toutes les fonctions à surcharger, c'est à dire que les signatures multiples restent invalides.
Et bien évidemment, il est plutôt improbable que ca fonctionne avec __construct ou __destruct (faut tester mais ca m'étonnerait beaucoup en tous cas :-/ ).
Pour le module expérimental, je crois que j'ai parlé trop vite, en fait je pense qu'il oblige juste à passer par __set, __get, et __call, même lorsque la méthode ou l'élément existe...

par titerm » 22 avr. 2007, 16:14

Je vois pas ou je suis agressif ? C'est un forum d'aide, je trouve donc logique de vérifier l'aide que l'on apporte si on est pas sur de ce qu'on avance, faute de quoi on risque plus d'embourber la personne qu'autre chose. Je trouve juste que c'est du bon sens, rien d'autre.

Skitoyai, ca semble etre plus de la surcharge des geter/seter, ce que tu proposes. Je n'ai pas l'impression que cela permette de faire des fonctions à signatures multiple.

Quand au module expérimental, j'avoue avoir du mal a en saisir l'interret par apport a ce qui est dispo nativement via les __set/__get/__call standards

par Sékiltoyai » 22 avr. 2007, 15:45

En fait, php5 gère une pseudo surcharge nativement, et une vraie surcharge si on installe les bons modules (c'est expérimental toutefois :-/)

par Zolmitriptan » 22 avr. 2007, 15:39

Avant de répondre, et surtout si on n'est pas sur, la moindre des choses est qd meme de vérifier non ?
Euh, doucement hein. J'ai bien précisé que je n'étais pas sur, je n'ai pas dit voila, ta solution est ceci.
Ensuite, j'ai dit ca ne coute rien d'essayé. C'est juste une ligne de code à changé, personne ne va en mourir je crois, alors, pas la peine d'être agressif...

par titerm » 22 avr. 2007, 13:47

php5 ne gère pas de déclaration multiple d'une meme fonction. Meme si la signature diffère.
Avant de répondre, et surtout si on n'est pas sur, la moindre des choses est qd meme de vérifier non ?

par code3 » 22 avr. 2007, 11:28

Merci pour vous tous,

Donc j'ai utilisé la solution de notre invité qui marche plutot bien.

Merci :D

par Zolmitriptan » 22 avr. 2007, 04:47

Attention, il te semble mal Wink
Sur...?? Php5 gère pas la surcharge...on m'aurait menti ?? :lol:
Je croyais pourtant.