创建飞变量

时间:2011-08-14 11:26:25

标签: php

需要加载参数才能运行,在飞行中创建变量名可怕的东西,但我没有看到另一种解决方案。此代码包含错误,请帮助

<?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();



?>

4 个答案:

答案 0 :(得分:2)

喜欢这个?

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

答案 1 :(得分:0)

您应该创建单独的方法来返回不同类型的数据。如有必要,它们可以是“真实”功能的包装器:

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

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

这将消除对变量变量的需求。

答案 2 :(得分:0)

我认为你不能在开始时设置变量的值

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

应该是

public $tab_names;
public $tab_fruits;

然后

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());

答案 3 :(得分:0)

我就是这样做的:

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();