rt请各位帮帮手:class Func {
//private $name = 'called';
public function __call($func, $name) {
$this->$func = function() {
echo $name;
};
}
}
$name = 'called';
$a = new Func();
echo gettype($a), '<br />';
echo get_class($a->call), '<br />';
$a->call($name);
输出竟然:
objectNotice: Undefined property: Func::$call in D:\xampp\htdocs\Project\newfile7.php on line 377Warning: get_class() called without object from outside a class in D:\xampp\htdocs\Project\newfile7.php on line 377
错误classfunctionobjectphp
//private $name = 'called';
public function __call($func, $name) {
$this->$func = function() {
echo $name;
};
}
}
$name = 'called';
$a = new Func();
echo gettype($a), '<br />';
echo get_class($a->call), '<br />';
$a->call($name);
输出竟然:
objectNotice: Undefined property: Func::$call in D:\xampp\htdocs\Project\newfile7.php on line 377Warning: get_class() called without object from outside a class in D:\xampp\htdocs\Project\newfile7.php on line 377
错误classfunctionobjectphp
//没有那么方便的函数吧?只能一个一个类分别尝试
class foo{
public function __construct($name,$sex){
$this->name=$name;
$this->sex=$sex;
}
public function get_name(){
return $this->name;
}
public function get_sex(){
return $this->sex;
}
}
$a=get_class_methods('foo');
if(in_array("get_name",$a)){
echo "该方法所属的类为foo";
}else{
echo "该方法不在类foo中,请更换其他类尝试";
}
//private $name = 'called';
public function __call($func, $namesArr) {
$this->$func = function() {
echo $namesArr[0];
};
//echo $namesArr[0];
}
/*public function __invoke() {
echo 'called';
}*/
}
$name = 'called';
$a = new Func();
echo gettype($a), '<br />';
echo get_class($a->call), '<br />';
$a->call($name);
$a->call($name);这段如何实现执行匿名函数里的输出语句?echo gettype($a), '<br />';
echo get_class($a->call), '<br />';这两行为什么输出一个是object,另一个错误:Notice: Undefined property: Func::$call in D:\xampp\htdocs\Project\newfile7.php on line 381Warning: get_class() called without object from outside a class in D:\xampp\htdocs\Project\newfile7.php on line 381
class Func{ public function __call($func, $namesArr){
$this->$func = function($namesArr){
echo $namesArr[0];
};
call_user_func($this->$func,$namesArr);
}}$name='called';
$obj = new Func();
echo gettype($obj).'<br>';
echo get_class($obj).'<br>';
$obj->call($name);
?>
为什么call_user_func($this->$func,$namesArr);的$namesArr必须按照public function __call($func, $namesArr)中的$namesArr而命名?不能擅自命名其他变量名
不可以像$obj->call($name);与public function __call($func, $namesArr)那样$name与$namesArr不同也可以赋值吗?
还有$this->$func是指public function __call($func, $namesArr)中的$func吗?还是另外新加一个变量?
$func是传入来的参数
$this->$func 是 类的变量例如
public function __call($func, $namesArr) {
$this->$func = function() {
echo $namesArr[0];
};
}
$func 传入来是aa,这个aa是字符串,那么 $this->$func 就等于 $this->aa, $this->aa是一个变量.
不同的.