2011-08-14 4 views
0

Besoin de paramètres de charge pour fonctionner, créer un nom de variable à la volée chose terrible, mais je ne vois pas une autre solution. Ce code contient une erreur s'il vous plaît aidercréation de mouche variable

<?php 

class A{ 

    public $vars; 
    public $tab_names; 

    public $tab_names = array('car'=>'audi', 'honda' => 'name'); 
    public $tab_fruits = array('name'=>'banana', 'banana'=>'fruit'); 

public function load($varr){ 

    $$varr; 

    $this->vars = $varr; 

} 

public function display(){ 

    return $this->vars; 

} 

} 

$ob = new A; 
$ob->load('tab_names'); 
$ob->display(); 



?> 

Répondre

2

Comme ça?

public function load($varr){ 
    $this->vars = $this->$varr; 
} 
+0

travail, +1 comment puis-je sérialiser la table et envoyer l'URL? prochaine obtenir et désérialiser .. – xyz

+0

Voir http://www.php.net/manual/en/function.serialize.php pour la sérialisation/désertification – kjetilh

0

Vous devez créer des méthodes distinctes pour renvoyer les types de données disparates. Ils peuvent être wrappers pour la fonction « réelle », si nécessaire:

public function displayCars() { 
    return $this->tab_names; 
} 

public function displayFruit() { 
    return $this->tab_fruits; 
} 

Cela évitera la nécessité pour les variables variables.

0

Je ne pense pas que vous pouvez définir la valeur d'une variable au début

public $tab_names = array('car'=>'audi', 'honda' => 'name'); 
public $tab_fruits = array('name'=>'banana', 'banana'=>'fruit'); 

qui devrait être

public $tab_names; 
public $tab_fruits; 

puis

class A { 
    public $vars; 
    public $variables; 
    public $tab_names; 
    public $tab_fruits; 

    public function __construct($variables){ 
     $this->variables = $variables; 
    } 

    public function load($varr){ 
     $this->vars = $this->variables[$varr]; 
    } 

    public function display(){ 
     return $this->vars; 
    } 

} 

$variables = array(); 
$variables['tab_names'] = array('car'=>'audi', 'honda' => 'name'); 
$variables['tab_fruits'] = array('name'=>'banana', 'banana'=>'fruit'); 

$ob = new A($variables); 
$ob->load('tab_names'); 
print_r($ob->display()); 
+0

merci cela va fonctionner – xyz

0

Voici comment je faites-le:

class A { 
    public $loaded_vars; 

    public static $vars = array(
     'tab_names' => array('car'=>'audi', 'honda' => 'name'), 
     'tab_fruits' => array('name'=>'banana', 'banana'=>'fruit') 
    ); 

    public function load($name){ 
     $this->loaded_vars = self::$vars[ $name ]; 
    } 

    public function display() { 
     return $this->loaded_vars; 
    } 
} 

$ob = new A; 
$ob->load('tab_names'); 
$ob->display(); 
Questions connexes