为了账号安全,请及时绑定邮箱和手机立即绑定

$obj->$method的问题:

569333b30001cb0f05000119.jpg

http://img1.sycdn.imooc.com//569336260001fb0b08680328.jpg

0.传入到控制器简易调用函数中的参数是正确的,但是下面控制器实例化后调用对应的方法就会出现如图的错误,我把$method改成show()就是正确输出了。

1.我想要知道:出现错误的原因是不是因为下面控制器实例化对象调用方法时,变量的解析不对,$method没有正确被解析为一个不带$的字符串。

2.还有:如何让$method这个变量被正确解析成不带$的字符串

正在回答

2 回答

你最大的错误是对屏敲代码,这个是个毛病,要改。宁愿自己去写100遍才写出来也不要对屏敲10遍背下来。不然你以后写不出代码的。

0 回复 有任何疑惑可以回复我~

自我回答:错误原因是:如果这样写 

$obj->$method.'()'  

那么解析顺序是这样的

  1. 解析$ob->$method -------此时的$method是全字符串的,会报出一个未定义属性的notice,

  2. 解析器第二步会做一个完全没有意义的事情,将上一步解析的最后结果连接上这样一个字符串    '()'    

    然后就没有然后了。

正确做法:$obj->$method();

-------------------------------------

总结:我只想说,是我2b了,视频中的红字部分看差了,自己还搞了两个小时去查原因。不过起码知道了一个会出现未定义属性的notice原因,也算是涨姿势了

1 回复 有任何疑惑可以回复我~
#1

PengCheng

嗯,应该是这样写,$obj->$method(); 不能在这种写法时 方法还用 字符串拼接方式来做
2016-01-12 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

$obj->$method的问题:

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信