0.传入到控制器简易调用函数中的参数是正确的,但是下面控制器实例化后调用对应的方法就会出现如图的错误,我把$method改成show()就是正确输出了。
1.我想要知道:出现错误的原因是不是因为下面控制器实例化对象调用方法时,变量的解析不对,$method没有正确被解析为一个不带$的字符串。
2.还有:如何让$method这个变量被正确解析成不带$的字符串
你最大的错误是对屏敲代码,这个是个毛病,要改。宁愿自己去写100遍才写出来也不要对屏敲10遍背下来。不然你以后写不出代码的。
自我回答:错误原因是:如果这样写
$obj->$method.'()'
那么解析顺序是这样的
解析$ob->$method -------此时的$method是全字符串的,会报出一个未定义属性的notice,
解析器第二步会做一个完全没有意义的事情,将上一步解析的最后结果连接上这样一个字符串 '()'
然后就没有然后了。
正确做法:$obj->$method();
-------------------------------------
总结:我只想说,是我2b了,视频中的红字部分看差了,自己还搞了两个小时去查原因。不过起码知道了一个会出现未定义属性的notice原因,也算是涨姿势了