7.1好像不支持可变函数呀(更可能是我用得不对)

在写mvc的过程中,开始在路由里写了可变函数用来动态执行方法,如下:

<?php
$obj = new $class();
$obj -> $fun();

在7.1上提示PHP Fatal error: Uncaught Error: Function name must be a string in

临摹微笑
浏览 450回答 8
8回答

翻过高山走不出你

<?php $obj = new $class(); $obj -> {$fun}();// do it like this;

慕莱坞森

$fun()这样的写法有点问题。。。。用{}包裹起来看看

肥皂起泡泡

我的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

<?php class Test { public function run() { echo '这里是一个代码行'; } } $class_str = 'Test'; $test = new $class_str(); $test->run(); 以上是我在ubuntu下,php环境7.1.12中的测试代码,可以完整的输出.请查看一下你的$class这个变量是否为字符串,还要看一下你要实例的类是否包含命名空间,如果有命名空间,就需要加上命名空间

烙印99

既然有提示说$fun必需是string, 那你看看$fun的值咯. 至少函数命名规则你得保证噻.从你这两句里面是肯定没有$fun变量的

蛊毒传说

多谢各位解答其实call_user_func就能解决,前几天解决了,忘了告诉大家
打开App,查看更多内容
随时随地看视频慕课网APP