$obj->$method的问题:

来源:4-2 [MVC实例]简易调用及实例化控制器

金大侠

2016-01-11 12:57

569333b30001cb0f05000119.jpg

http://img.mukewang.com/569336260001fb0b08680328.jpg

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

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

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

写回答 关注

2回答

  • 回得好请给我好评
    2016-01-11 14:31:54

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

  • 金大侠
    2016-01-11 13:32:34

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

    $obj->$method.'()'  

    那么解析顺序是这样的

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

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

      然后就没有然后了。

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

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

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

    PengCh...

    嗯,应该是这样写,$obj->$method(); 不能在这种写法时 方法还用 字符串拼接方式来做

    2016-01-12 17:10:17

    共 1 条回复 >

MVC架构模式分析与设计

通过学习MVC理论知识,由浅入深带您实现人生第一个MVC框架

82400 学习 · 929 问题

查看课程

相似问题