需要加载参数才能运行,在飞行中创建变量名可怕的东西,但我没有看到另一种解决方案。此代码包含错误,请帮助
<?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();
?>
答案 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();