举例来说:
class myCar{
public $funcName="run";
public function run(){
echo "i'm running now!";
}
public function say(){
//这里我不想用。$this->run();
//而是通过变量$funcName来执行相应的方法,我该怎么做呢?
//就像: $this->$funcName();虽然可以执行,但总觉得这样做既不规范,可能又低效。我是新手,有很多原理还理解不清楚,请问各位前辈有什么好的实现方法吗?
}}
class myCar{
public $funcName="run";
public function run(){
echo "i'm running now!";
}
public function say(){
//这里我不想用。$this->run();
//而是通过变量$funcName来执行相应的方法,我该怎么做呢?
//就像: $this->$funcName();虽然可以执行,但总觉得这样做既不规范,可能又低效。我是新手,有很多原理还理解不清楚,请问各位前辈有什么好的实现方法吗?
}}
你本身的需求就很奇怪。
如果我的变量是外部文件的一个数组,我可以作为一个配置文件引用到类里面来。
例如:
$funcName=array("a"=>"a_func","b"=>"b_func");
而我在类里面,想做一个总的处理函数:
如果外部传入的参数,类型为a就执行类里a_func方法,类型为b则执行b_func方法,因为我假定对应的处理方法a_func和b_func都是未知的,所以不想直接在类里用switch或者if等判断的方式来执行。
现在是,如果就用$this->$funcName();我想问下php内部是怎么处理的呢?
百度了有人说,会先去查找所有的变量,因此会很费资源。是这样的么?还请前辈们多多给予分析。感谢。
<?php
class myCar{
public function run(){
echo "i'm running now!<br />";
}
public function stop(){
echo "i'm stop now!<br />";
}
}
$funcName=array("a"=>"run","b"=>"stop");
$car=new myCar();
$car->$funcName['a']();
$car->$funcName['b']();?>