Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/05/2011, 11h26   #1
Nouveau Membre du Club
 
Développeur informatique
Inscription : septembre 2006
Messages : 138
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : septembre 2006
Messages : 138
Points : 32
Points : 32
Par défaut Problème d'instanciation d'objet

Bonjour,

J'ai un problème en php que j'arrive pas à résoudre.
J'ai plusieurs classes (cl1.php, cl2.php,....).
Dans mon index.php, je veux pouvoir instancier un objet ($obj) avec une des classe sus-citée en fonction d'un paramètre passé en GET.

Une solution serait :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<?php
 
$action = $_GET['action'];
switch($action){
  case '1':
       $obj = new cl1();
       break;
  case '2':
       $obj = new cl2();
       break;
}
?>
Mais je ne veux pas car je souhaite que la création de $obj soit automatisée en fonction de $_GET['action'].
C'est à dire faire un truc du type (dont la syntaxe n'est pas correcte, c'est juste pour l'exemple) :

Code :
1
2
3
4
5
6
 
<?php
$action = $_GET['action'];
$obj = new $action.'()';
 
?>
Par avance merci
lecra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2011, 08h22   #2
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 461
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 461
Points : 2 548
Points : 2 548
Envoyer un message via Skype™ à rawsrc
Bonjour,

c'est tout à fait faisable mais il va falloir que tu vérifies au préalable la définition de la classe que tu souhaites appeler via :
Code :
1
2
3
4
<?php
$action = $_GET['action'];
$obj = new $action();
?>
Pour cela il faut regarder du côté de class_exists() et de get_declared_classes().
Juste au cas où l'action pointerait vers une classe inexistante.
(Ah penses aussi à regarder du côté de l'autoloading.)
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2011, 14h01   #3
Nouveau Membre du Club
 
Développeur informatique
Inscription : septembre 2006
Messages : 138
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : septembre 2006
Messages : 138
Points : 32
Points : 32
ça marche impec.

Merci beaucoup
lecra est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h44.


 
 
 
 
Partenaires

Hébergement Web