在写mvc的过程中,开始在路由里写了可变函数用来动态执行方法,如下:
<?php
$obj = new $class();
$obj -> $fun();
在7.1上提示PHP Fatal error: Uncaught Error: Function name must be a string in
8 回答
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
我的PHP版本:PHP 7.1.12 (cli) (built: Nov 23 2017 04:20:40) ( NTS MSVC14 (Visual C++ 2015) x64 )
Code
<?php
class Person
{
private $name;
function __construct($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
$obj = new Person('salamander');
$fun = 'getName';
echo $obj->$fun();
执行结果
C:\Users\salamander\Desktop>php code.php
salamander
慕桂英3389331
TA贡献2036条经验 获得超8个赞
<?php
class Test {
public function run() {
echo '这里是一个代码行';
}
}
$class_str = 'Test';
$test = new $class_str();
$test->run();
以上是我在ubuntu下,php环境7.1.12中的测试代码,可以完整的输出.
请查看一下你的$class这个变量是否为字符串,还要看一下你要实例的类是否包含命名空间,
如果有命名空间,就需要加上命名空间
- 8 回答
- 0 关注
- 449 浏览
添加回答
举报
0/150
提交
取消