AtomCode新概念的PHP开发框架
本框架暂名为:AtomCode,意为原子级代码,即是用较小量的代码来实现一部分功能,再组装成一个应用程序。
框架基于MVC思想创建,对MVC不了解的同学请自己到其他地方了解一下这个思想(关于MVC,链接一,链接二)。在此之上,本框架加入了两个概念:容器和用户控件,这也是本框架可以加快开发的一个关键概念,Atom 也就是指的这两个部分。
容器是什么?
容器不是杯具,它是一个可以接收无序参数的适配器,并且可以自主的处理一些逻辑。但是它不同于控制器的,控制器接收的参数都是浏览器传入的和配置中的,并不能接受模板中传入的;而容器则可以。
容器的这个特性使我们在控制器中多次重复的工作都避免掉了,我们在模板中要使用一些同等类型的数据时传入不同的参数就可以了。举个例子,我们在不同的列表页面都要用到月排行和日排行这样的数据,这些数据你要在控制器中每次都获取两次后再传给视图么?No!你可以使用容器,只有一次,传入分类ID和排序依据即可。类似的运用好像在我们程序中使用的太多了。
用户控件是什么?
如果说容器是控制器的补充,那么用户控件就是视图的补充。我们做模板时会用到多个块的HTML代码基本是一样的。那么为什么不用用户控件来控制呢?
一般我们用这种功能时都是使用包含文件的方法来实现,但是包含文件的缺陷就是不能传入任何参数,也就是说这个模板只有一种包含方法。使用用户控件并传入了参数,它也就会变得多姿多彩了。
框架的其他特性
工厂模式工厂化
这句话听着就比较怪。这里所说的工厂模式指的是一种设计模式。即是我们只访问工厂类,让工厂类给我们所需要的产品即可。他们内部如何工作我们根本不管(关于工厂模式,链接一,链接二)
工厂化指的是我们创建的全部可扩展的类都使用了工厂模式,如:数据库,缓存,邮件发送等。
标签级缓存
我们有很多的数据是不用反复查询数据库的,例如月排行,我们一天更新一次就可以了吧。但是页面上的其他部分又需要时时更新,这样如果页面级缓存的话会导致那些查询排序什么的都要每次都来(就算是mysql有查询缓存仍然会占用很多的时间,特别是有数据更新的情况下)。
标签级缓存增加了数据读取的灵活性。唯一不好的是这个是在模板中控制的。如果要在程序中控件要访问我们的缓存类来缓存和更新了。
模型组装
这里的模型不写冗长的SQL语句的(当然复杂的还是写的),模型把select,update,delte,insert这些都封装了,切割成一些碎片,如你可以直接这样写:$this->where(),$this->join()等等。这样虽然写的代码字节数会变多,但是有个好处是清晰而且易复制。当然如果你没有复制自己代码的嗜好的话就不要用这个模型了,反正模型都是可以自己扩展的。下面就讲一下多模型。
多模型
模型在MVC中一直代表着数据集合,而数据有多种多样的,模型也就变得多种多样了。我们访问数据库当然访问数据库模型了(因为这类动作较多,则作为了默认模型),那么要生成一个图片就用图片模型了,访问socket用 socket模型,控制XML用XML模型等等,你也可以扩展出自己的模型以具有更多的功能。
私有类库与公用类库
这个在一般的框架都有的,但是在此也介绍一下吧。我们公用的类库都放在了 system/libaries 下面,私有类库则在各个应用程序的 libaries下。
其他
还有helpers,调试日志,插件等,一起来体验吧。