Accueil > Forum > > > > call_user_method_array() et __construct
call_user_method_array() et __construct
samedi 4 juin 2005 à 16:50:56 |
call_user_method_array() et __construct

MyXiLo
|
Bonjour, Je dois créer un objet en lui passant un nombre de parametre variable. J'ai donc un tableau avec mes arguments et je pourrais utiliser call_user_method_array mais le probleme etant que je veux passer mes arguments a la fonction __construct de mon objet, celui netant pas encore crée. Pour l'instant je ne vois pas comment faire pour construire mon objet avec ette methode. Merci d'avance. Thomas.
|
|
samedi 4 juin 2005 à 17:06:09 |
Re : call_user_method_array() et __construct

Anthomicro
|
Salut, dans ta fonction __construct() tu fais ça en gros (je sais pas si j'ai bien compris ta question) public function __construct($tableau) { } et lorsque tu appelles ta classe tu fais ça : $classe = new classe($tableau);
|
|
samedi 4 juin 2005 à 17:31:27 |
Re : call_user_method_array() et __construct

MyXiLo
|
En fait c'est comme ceci: class maclasse { function __construct() { $params=func_get_args(); } } et apres je dois creer cet objet, mais le probleme c que le nombre d'arguments passé est variable(0,1,2...) j'ai un tableau qui contient tous ces arguments $montableau Je dois donc creer un objet en lui passant les arguments que contient $montableau si je fais ca $monobjet=new maclasse($montableau); il va lui passer un tableau en argument donc ca ne minteresse pas. Prenons un exemple ca sera plus simple :) $montableau[0]="arg1"; $montableau[1]="arg2"; $montableau[2]="arg3"; Si je fais $monobjet=new monobjet($montableau) ds le contructeur de maclasse j'aurais $args[0]=$montableau alors que moi je veux: $args[0]="arg1" $args[1]="arg2" $args[2]="arg3" Avec call_user_method_array() c'est possible mais le probleme c'est que mon objet n'est pas crée mais je me suis rendu compte quon pouvait a la place du nom de lobjet passer le nom de la class pour le créer, ce qui donne $monobjet=call_user_method("__construct",maclasse,$montableau); Le souci maintenant est qu'il identifie pas "__construct" comme une methode statique. "__construct() cannot be called statically in" Et je veux pas utiliser la fonction "mclasse()" comme en PHP4. Donc voila :)
|
|
samedi 4 juin 2005 à 17:34:54 |
Re : call_user_method_array() et __construct

MyXiLo
|
"$args" cest "$params" en fait
|
|
dimanche 5 juin 2005 à 11:26:55 |
Re : call_user_method_array() et __construct

malalam
|
Hello, func_get_arg() peut être utilisé conjointement à func_num_args() et func_get_args() pour permettre aux fonctions utilisateurs d'accepter un nombre variable d'arguments
|
|
dimanche 5 juin 2005 à 14:49:49 |
Re : call_user_method_array() et __construct

MyXiLo
|
Bonjour, Ce n'est pas récuperer les parametres qui est compliqué mais bien de les transmettre lors de la creation d'un objet. Ma question reste entière :)
|
|
lundi 6 juin 2005 à 12:32:01 |
Re : call_user_method_array() et __construct

malalam
|
Je ne comprends pas ton probleme, alors, je pense. Et je ne comprends pas ton exemple non plus lol. si j'ai ca : class maclasse { private $tabArgs; public function __construct ($tableau) { $this -> tabArgs = $tableau; // par exemple, ce n'est sans doute pas necessaire de faire de ton tableau un argument a part entiere } } tu auras bien $tabArgs[0] = $tableau[0] (donc = arg1). call_user_method () sert a appeler une methode indirectement, pas a instancier un objet : <?php class maclasse { private $tabArgs; public function __construct ($tableau = '') { $this -> tabArgs = $tableau; // par exemple, ce n'est sans doute pas necessaire de faire de ton tableau un argument a part entiere } public function helloWorld ($choix) { echo 'Hello ', $choix; } } $obj = new maclasse (); call_user_method ('helloWorld', $obj, 'World'); ?> Ensuite, note ceci : <?php class maclasse { private $tabArgs; public function __construct ($tableau = '') { $this -> tabArgs = $tableau; // par exemple, ce n'est sans doute pas necessaire de faire de ton tableau un argument a part entiere } public function helloWorld ($choix) { echo 'Hello', $choix; } } $obj = new maclasse (); //call_user_method ('helloWorld', $obj, 'World'); $tab = array ('helloWorld'); $obj -> $tab[0] ('World'); ?> Et enfin ceci : <?php class maclasse { public function __construct ($tableau) { $this -> $tableau[0] ('World'); } public function helloWorld ($choix) { echo 'Hello', $choix; } } $tab = array ('helloWorld'); $obj = new maclasse ($tab); ?> A noter que call_user_method () est deprecie => call_user_func () a la place.
|
|
lundi 6 juin 2005 à 16:03:18 |
Re : call_user_method_array() et __construct

MyXiLo
|
Salut, Oui en effet j'ai bien l'impression que je ne suis pas compris :) Je vais expliquer le plus exhaustivement ma situation. J'ai une classe(gcls) qui gere toutes mes autres classes. Lorsque je veux creer un nouvel objet je ne fais pas : $obj=new monobj(); mais: $obj=$gcls->new_class(type, params); de sorte que comme mes objets sont identifiés par un id unique je ne peux pas creer deux fois un objet qui fait reference a un seul objet en fin de compte. Par exemple j'ai une classe "member" qui se creer de la facon suivante: $member=new member(1); Ou 1 est l'identifiant unique du membre en question. Il se trouve que parfois dans une meme page je fais reference deux fois au membre 1 mais avec deux objets differents: $member1=new member(1): $member2=new member(1): Ce qui est stupide puisque je fais des requetes SQL en plus pour rien du tout, sans parler de la memoire utilisée pour rien. Donc je passe par glcs qui possede un tableau contenant tous mes objets crées. Il m'arrive donc d'avoir: $member1=$gcls->new_class("member","1"); $member2=$gcls->new_class("member","1"); Mais au lieu de creer 2 objets je n'en creer qu'un au premier appel et le deuxieme n'est pas crée, il fait juste reference au premier. Mais lors de la creation de l'objet dans gcls je dois passer mes arguments de new_class, a partir du 2e, a la fonction constructrice de l'objet. Je peux passer un tableau comme argument et ainsi n'avoir qu'un seul arguement pour chaque creation de classe mais ca ne minteresse pas. Aussi j'utilise call_user_method_array() pour passer ces arguments. Jusque la c'est bon, sauf que la methode que je veux appeler est __construct(). Il se trouve qu'avec call_user_method_array() on peut creer un objet mais je ne sais pas comment appeler __construct() car il me dit que ce n'est pas une methode statique. Ai je ete clair ?
|
|
lundi 6 juin 2005 à 16:31:15 |
Re : call_user_method_array() et __construct

malalam
|
Mouais, lol
je ne suis toujours pas sur de comprendre pourquoi tu as absolument besoin de faire ca. Tu peux sans doute eviter de creer 2 fois le meme objet (identique je veux dire), il y a plein de fonctions (et operateurs) pour ca en php.
Tu ne pourras pas appeler le constructeur comme ca : le constructeur ne peut pas etre declare statique (normal, ce n'est pas une methode "normale").
Mais comme je ne pige toujours pas pourquoi tu veux absoument appeler le constructeur de cette maniere, lol...je peux difficilement essayer de t'aider plus :-(
|
|
lundi 6 juin 2005 à 17:26:24 |
Re : call_user_method_array() et __construct

MyXiLo
|
Le truc c'est que la j'ai une classe qui va tout gerer. Parceque j'ai quand meme une 50aine de classe differentes et pas mal de processus qui tournent en parallele. Alors si je m'amuse a chaque fois separement a tester ca... Et la les includes des fichiers contenant mes classes ne sont faits que lorsque la classe est reellement utilisee. De plus ce mode de fonctionnement me permet de faire des logs puisque chaque creation dobjet est repertorie. Et j'espere ensuite pouvoir faire passer tous mes appels de fonctions de classe par cette classe. Mais bon ca va attendre un peu, ca demande reflection :) Je sens que je vais etre une oblige de creer une méthode particuliere pour se "substituer" a __construct() mais ca mennuie fortement. En tout cas merci. Thomas.
|
|
Cette discussion est classée dans : user, array, method, call, construct
Répondre à ce message
Sujets en rapport avec ce message
push_array associatif [ par Teddy_le_gnein ]
bonjour,j'ai une question qui me semble simple, mais j'ai énormément de mal à trouver la réponse.alors voilà, j'ai une boucle while qui récupère des d
exploiter une variable inconnue dans un array incrémenté [ par Teddy_le_gnein ]
Hello tous le monde.je reviens à la charge avec mes array incrémentés...Comme la dernière fois je suis persuadé qu'il y a une solution simple mais que
orienter un utilisateur en fonction de son login [ par pronostic ]
Bonjour à tous et merci de votre précieuse aide. Je voudrais qu'un utilisateur soit redirigé en fonction de son login. Voila ma page . J'ai essayé nom
page php et base sql [ par pronostic ]
Bonjour à tous. Petite question peut etre idiote...Est il possible d'appeller un mot dans un fichier au lieu de l'appeller dans la base de donnée ? $u
Impossible de ressortir mes champs dans mysql [ par SpaceHam ]
Est-ce normal que je ne puisse pas sortir les informations des champs voulu dans mysql malgré le fait que le Array se forme et qu'il contienne cette i
Requête sur base access à un million de lignes [ par roro59650 ]
Bonjour à toutes et tous! Voilà, je suis dans une petite panade... Pour une appli, il faut que je lise une table sur une base Access, qui contient 1
fatal error call to undefined function dl() [ par badsha ]
bonjour d'ou vient cette error je suis sous linux et j'essaye de charger une librairie.so. dans php.ini j'ai enable_dl=Off je l'ai mis sur on et rie
Sous Wamp locahost quels sont les $user etc... [ par Georges97427 ]
Bonjour, Je suis sous wamp localhost, quels sont utilisés? $hote = "localhost"; $base = "00000_mabase"; $user = "root"; $password = ""; Peut-on pren
un probleme avec la fonction mysql_fetch_array() [ par soukaouta ]
bonjour tt le monde J'obtiens cette erreur lorsque je tente de récupérer une donnée située dans ma base MySQL en local via WAMPServer. Warning: mysql_
PHP Array, impossible de lire le contenu [ par mrassaa ]
Salut, Je bosse avec Zend Framework pour pouvoir prendre des données de google spreadsheet (j'y suis obligé, pas de mysql possible). Bref, le problè
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
XML ET PHPXML ET PHP par karouani
Cliquez pour lire la suite par karouani RE : GOOGLE MAPRE : GOOGLE MAP par inwebo
Cliquez pour lire la suite par inwebo
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|