又是一个以自己为钻研目标的话题,可能你会有更好的办法(例如使用框架开发)欢迎交流,而我这里也只是与大家分享一下自己的做法。?

初期:庞大而独立的风格。?

记得那时paperen我从asp过来php的时候,都是将一大堆的php代码写在一个文件中,夹杂着html与php代码,而且每个文件的独立性很强,它们彼此间缺少分享精神,它们都是很自私,除了那个连接数据库的文件外,因为那时我就是在每个文件头部require("db.php");这样做的,而且还没分块来实现,就是说整个页面的html都是复制过去另一个页面里面,变的可能只是php代码与一些模块内容。

201002011265037790?

或者说这种模式比较适合初上手php的,当然这种编写代码的方式有自己的优点:?

1.你不用到处寻找代码,调试与挑错都比较好办,因为每个文件之间都是独立的,这个文件出错了你只针对其进行检查好了

2.一眼可以看透文件的思路与做法,只要你能将整个文件的内容看完就基本能明白其编写思路?

但是这种编写代码方式有着很致命的缺憾,就是重用性太低了,每写一个文件你都得要重写甚至复制原来的html代码与某些php代码,如果假设我要改导航栏或者脚部一些文字,你得要打开全部文件然后逐个改,很好,即使你很有耐心但是这确实不是一种值得推荐的编写代码的方法。?

初中期:大头型?

之后paperen我算是有点进步,不过对比于初期没太大的改观……

201002011265039169?

将一些页面的共同元素提出来作为共享文件引用,添加了一个公共函数库文件,优点相对于初期那种做法是明显的。?

1.对于修改页面中共同的部分时(head.php与foot.php文件)你只需要到相应文件修改即可,修改后所有页面都会更改而不至于像初期那样每个文件都得修改一次。

2.引入了公共函数库文件,一些常用功能可以封装成单独的函数,稍微增强了代码的重用性。?

但是看看,文件的头部还是存在不少的php代码,大头的现象,其实仔细想想这部分的功能就相当于文件的控制器,它可能用于接收表单的数据与分析数据并对不同参数进行不同的动作并会影响到页面内容的变化。那是不是可以将头部提取出来呢?将控制部分与html部分分开。?

中期:有点分层次的味道

201002021265040112

将每个页html部分提取出来放到一个文件(任何格式都是可以的)中,然后为每个页建立一个php页,这个php文件就相当于控制器了,头部的代码完全可以放在这里,然后再去决定调用哪个模块文件。原来的一个文件(php)现在要分成两个文件(模块文件与控制文件)。?

优点:

1.很明显这样做是更加合理而且更加有利于站点的组建,控制代码与html貌似是分离开了。

2.自己想吧……paperen我实在是想不出了……?

现在:统一的入口都是以index页为动作的驱动,根据参数决定目前浏览者的动作并根据其动作作出相应的相应,比如你要访问test页,那么传参数给index页,index.php?p=test然后根据该动作引入test.php控制文件,(判断是否存在此控制文件与判断一些参数的正确性也很重要的,不可忽视的地方)通过一些动作或者与数据库交互后再读入相应模块文件(head.tpl,test.tpl,foot.tpl等文件)。?

201002021265041477?

你还需要define一些常量,因为这样会十分方便你在后续的编码。?

201002021265041760?

目前paperen我都是这样进行网站的代码编写的,当然貌似还有更不错的方法可以使你更快捷地建立网站,就是使用传说中的框架进行开发,不过paperen我目前还是不太熟悉,所以暂时不举例子。?

其实对与上面说tpl文件(paperen所形容的模块文件)并不是说没有任何php代码,其实也是由html与php代码夹杂着的。?

201002021265042091?

其实paperen这样也并没有真正上实现了php与html的分离,当然你可以使用smarty或者像phpcms那样使用一些正则替换来实现所谓的php与html分离的功能。其实paperen我也不清楚自己这样编码究竟算不算是MVC模式呢?(模板,视图,控制)或许有些少味道吧……