@
Keita1314 $_GET是超级全局变量,储存的是URL Query的内容(属于用户输入)
硬依赖我指的是直接在不应该使用这个变量的地方直接使用了这个变量。也就是我上面说的Controller来拿用户输入,Model只负责处理从Controller得到的数据(Controller给的)。
直接使用$_GET导致这个方法与$_GET['pid']耦合了,如果以后想要重用,也就只能CopyPaste,这会导致在未来项目因为代码量变大而变得很难维护。
因此这里不应该直接用$_GET的数据(楼主的代码里还用了下isset),而应该用其他方法来传递给这个方法,比如作为参数。
其实原本的代码也就是12楼这么简单,但是用Request去拿$_GET也是换汤不换药……
就这个问题来说,想解决这个耦合很简单,写个Parameter的类作为容器,将$_GET里所有需要用到的数据导入进去就可以了,然后就可以比如:
'parnet_id' => $this->parameter->pid,
这样这个Model就仅仅依赖这个Parameter类,而不依赖$_GET了。
Parameter类比如:
https://gist.github.com/raincious/0a1657312a54fc15a41c(手打的,未测试过)