大家好,最近请一家外包商写 php
他们使用 Codeigniter 这个 framwwork
本来,我们没有限定使用framwwork (另外也听过大名顶顶的mvc)
就让他用囉~~~
不过,感觉厂商的基本工不太行,用 framwwork硬兜乱兜
例如:以下这种写法
\application\modules\xxx\controllers\XXX.php
class XXX extends CI_Controller {
public function index(){
session_set_cookie_params (....) // 1
require_once(APPPATH.'libraries/YYYY.php'); //2
YYYY.php 是一个第三方套件,里面有一些
变量 $aaa = ....;
function bbbb() {....}
还有些 if/else/while 等控制流程
里面没有 Class
这种写法,是不是非常有问题啊!? 虽然小弟 CI零基础,但 Google 一下
1.
CI 已经有
\application\config\config.php 的 $config['sess_****']
\system\libraries\Session\ 在专门处理session,怎么还能有
session_set_cookie_params (),这不是唱双簧吗?
2.
我不懂MVC,但也粗知OOP .. Class里面再去 include别的档,感觉会出问题啊
不是应该把libraries/YYYY.php 弄成Class
再 $this->load->library('YYYY')
请赐教.. thx~~~
作者:
dlikeayu (太阳拳vs野球拳)
2016-11-28 02:06:00抱脸又笑又哭状
作者:
rickysu (Ricky)
2016-11-28 09:16:00重点不在include方式,而是个library会有side effect当你include之后,你无法预期他会对整个状态做了什么改变很典型的就是include后自动设了一个top level变量如果刚好这个变量是你之前已经定义好的怎么办呢?
没有class应该是放/helpers,他这个就叫土砲session也有很多奇怪的土砲法但是CI的session是用cookie模拟的,除非另外装套件也许他计划用php native session
作者:
Kenqr (function(){})()
2016-11-28 10:55:00CI3已经是用真的session了 除非他是CI2
从它 controller目录位置看,既非ci3也非ci2,ci1我没接触不清楚,另还有基于ci开发的opencart之类的东西ci3 session才改为php原生,ci2之前是写在cookie,自行存取原生session是很常见的,虽然它写法不是很好就是了
作者:
yzfr6 (扮关二哥!)
2016-11-28 13:51:00MVC 跟 Codeigniter 应该不是同一个层级的东西
作者: mikejaffson (mike) 2016-12-01 12:30:00
使用CI不代表不能用原生写法,只是一切还要遵循CI架构去写,未来才好维护。原po的土砲写法确实不太好就是推楼上,大部分的Web MVC 如CI我认为这比较像modal2而非真正的MVC
Model 2。modal是开起来按X才可以关的那种灯箱。
作者: mikejaffson (mike) 2016-12-01 13:11:00