学Java出身的,学得也很平常,没什么亮点。从一开始的servlet 到 struts2 到springMvc 从jdbc 到ibatis mybatis。基本上增删改查跑一边吧。
如今参加工作了,写了6个月的PHP。今天突然之间有点感悟,记录一下。
因为公司的原因,项目总是再换,总是没做完,我总是坐着很多相同的事情。所以有时候,我觉得很累。项目经理会说,你有了前面的基础应该就很快了吧。(他是非专业的)。让我更加累。一是进度赶,然后是身心俱疲,人的重复不像for循环。我们很快就厌烦了。而for它是没有感知能力的。
就在这样的一个环境下,我可能有意无意的再审视自己的代码。今天我比较了一下和以前写Java的思路,我发现,我今天写着的代码是最开始我写Java的servlet 业务层 数据层 全部都是写在一块的。因为有了JSP 所以当初视图却还是分开的,现在写的PHP 视图同样也还是分开了。
在我现在的写法中经常看见类似这样的代码。《框架doitphp》
//药品 public function medComAction(){ $this->display('medicines/medcom'); } //单个问答页面 public function pushAction(){ $this->display('medicines/push'); } //系统药品库 public function medSysAction(){ // 系统药品库 $modelForSysproduct = $this->model('Sysproduct'); $resForSysproduct = $modelForSysproduct->order('id desc')->findAll(); var_dump($resForSysproduct); $this->display('medicines/medsys'); }
没有写任何东西的话,这其实就是对请求做重定向处理,类似Java的action,action只负责跳转,二具体在跳转之前要做什么事情,这输入业务层。
这段代码的第三个方法,我在调用数据,意思,我的数据层读写,也写在了这里。然后在Java中这应该是放在dao层的。
说道dao,这里就要提起PHP 一些框架的model这个类。他是数据数据层的一个基类。封装了基础的方法。
然而一般的话,浅显点儿理解。一个表,会对应一个model. 在想想Java Java中一个对象,对应一个数据层的xml配置文件。一对一。
这里我不知道这么说可不可以,有时候面向对象编程,一定意义上可以说是面向数据库编程。
Java 中一个对象的 dao层 会封装这个对象,对应操作数据库的所有方法。所以同理,PHP这里的model其实也就充当着这个角色。
所以框架的设计者一开始是没有错的。然后我又看了下框架的目录结构图
在application目录,我一般没用到过。我想可不可以作为实体bean的目录。只要想就可以的。