数据抽象层
我们知道虽然数据库都支持标准SQL语句,但不同的数据库之间还是会存在很大的差异,这导致我们在操作不同的数据库时不能统一SQL语句,一旦更换了数据库,那意味着所有的SQL都将重写。为了避免这种灾难性的后果,我们就需要对数据进行封装。
封装的意义就在于不管数据库如何变化,我们都只需要使用相同的代码去获取和构建我们需要的数据结构,而不用关心不同数据库之间对于SQL的支持不同而造成的差异。
我们知道虽然数据库都支持标准SQL语句,但不同的数据库之间还是会存在很大的差异,这导致我们在操作不同的数据库时不能统一SQL语句,一旦更换了数据库,那意味着所有的SQL都将重写。为了避免这种灾难性的后果,我们就需要对数据进行封装。
封装的意义就在于不管数据库如何变化,我们都只需要使用相同的代码去获取和构建我们需要的数据结构,而不用关心不同数据库之间对于SQL的支持不同而造成的差异。
缓存技术总是Web开发中一个乐此不疲的话题,无论多么强大的服务器,总有它的瓶颈,而缓存技术可以有效缓解瓶颈期的到来。
如同上一篇文章中提到的ADODB Recoredset Cache,它也是一种缓存,我将这种缓存成为数据库级的缓存,它是缓存的第一步,也是最为重要的一步。
我将缓存等级分为4个等级,他们重要性如箭头所示的那样:
数据库级 -> 服务级 -> 脚本级 -> 客户端级
今天要来探讨的是另一个等级的缓存,它工作在脚本下,所以我把这种缓存成为脚本级缓存。
ADODB支持一种叫 记录集缓存(Recordset Cache) 的技术,可以将查询结果保存到磁盘,再次查询时可以直接读取磁盘的缓存,免去了查询数据库的时间,提高执行效率。
但在使用时,发现官网的手册也有些许错误,而且网上似乎关于这方面的文章比较少,
对于Recordset Cache也仅仅是提到而已,没有更进一步探讨,所以写了这篇文章,也是为自己的框架打一个基础。
Continue reading
自从Web进入1.5时代,地址栏就变成传递参数的一个重要途径。
我们运用 ?name1=value1&name2=value2……的形式向后一个页面传递参数,
它使用方便,因此几乎所有的页面都会用到地址栏传递参数。
但是链接一旦但有参数,对于搜素引擎就不是那么友好了,而且如果参数过多,就会给人非常凌乱的感觉。
因此将参数静态化(去除 ? 和 & ),使URL看起来像一个静态的HTML文件,变得重要起来。
Continue reading
在一般的网站在访问时输入的URL路径总是服务器上的文件一一对应,
比如:http://mydomain/test/function.php ,它会访问服务器根目录下 /test/function.php 这个文件,
但框架不允许我们这么做,我们必须让所有请求全部到达 index.php ,
然后在进行相应的处理,否则我们之前做的工作就全部浪费了。
Continue reading
接着上一篇,现在我们需要加载整个框架所必需一些类,整个框架的功能将在这些类中实现。
当然今后要是有更多的功能扩展,也需要在这里添加新的类。
在程序的最后,执行了 initialize.php ,到那时候,框架将被初始化
Continue reading
从这篇文章开始,我们正式开始编写这个框架。框架的一大特点就是某些目录、某些字符被使用的非常频繁,我们可以将这些定义为常量,以便在程序中调用,这样不仅在后期修改时可以更加方便,更能增加程序的可读性。
常量我们全部定义在 index.php 中,下面给出了代码。
我们首先获取的 index.php 所在目录,作为框架的根目录,然后定义了各个常用的目录。
在今后的调用中,这些常量将被经常使用到。
Continue reading
整个网站以 index.php 为入口。
index.php 主要负责定义框架需要用到的常量
bootstrap.php 主要负责加载框架需要的类库
这些类,如:
· config.php 负责读取配置文件
· database.php 定义数据连接、封装数据库操作函数
· session.php 定义并封装Session操作
· request.php 定义并封装数据传递操作
等等……
Continue reading
经常的,我们去使用一些开发框架,以便能够更好的协作开发、加快开发效率。
但框架也是有弊端的,封装性与性能是一对矛盾体,封装也深程序性能也就越低。
所以面对一些小项目或者自己的小站时,何不自己动手来编写一个简单又实用的框架呢?
在今后的一系列文章里,将围绕这个小小的框架扩展开来,由浅入深讲述在构建过程中所必要的知识、遇到的问题、
解决的方法,也算是和大家一起来分享。
Continue reading