1.2.2 Zend Studio
Zend Studio是业界公认的所有商业以及开源产品中功能最强大的PHP IDE(集成开发环境)。作为Zend技术有限公司所推出的旗舰产品,Zend Studio提供了你所能想到的企业级IDE的所有特性,包括完善的代码自动完成功能、CVS和Subversion集成、内部和远程测试、代码调整以及方便的代码部署过程。
另外,Zend Studio提供了将代码与流行数据库(如MySQL、Oracle和SQLite)集成
的功能,还能够执行SQL查询,并查看和管理数据库模式与数据。
2. MySQL数据库
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。MySQL的SQL“结构化查询语言”。SQL是用于访问数据库的最常用标准化语言。MySQL软件采用了GPL(GNU通用公共许可证)。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。使用PHP+MySQL+Apache也是现在很多网站选择的一种方案。 2.1 存储引擎
在设计数据库时,除非是操作非常简单的数据库,不然就得事先充分考虑数据库中每
个表的作用和行为,并相应地选择适当的存储引擎。从长远意义上看,这对应用程序的性能有很大的提高。所以,在WEB开发中很有必要对几个常用的存储引擎进行一定的了解。 2.1.1 MyISAM
MyISAM是Mysql的默认数据库,最为常用。拥有较高的插入,查询速度,但不支持事
务,从而避免事务性存储引擎所需的额外开销。
它在筛选大量数据时非常迅速,甚至在高流量环境中也是如此。并发插入特性允许同
时选择和插入数据。所以MyISAM存储引擎特别适合应用于选择和插入密集的表,例如:管理邮件或Web服务器日志数据。
MyISAM格式有三种形式——静态、动态和压缩。
静态:如果所有表列的大小都是静态的(即不适用xBLOB、xTEXT或VARCHAR数据类型),
MySQL会自动使用静态MyISAM格式。
动态:如果有表列(即使只有一列)被定义为动态的(使用xBLOB、xTEXT或VARCHAR),
MySQL会自动使用动态MyISAM格式。
压缩:如果表在整个应用程序生命周期中都只读的,用压缩表来减少所占空间。
- 2 -
2.1.2 InnoDB
InnoDB事务型数据库的首选引擎,支持ACID事务,支持行级锁定和外键约束。InnoDB
表资源使用专用缓冲区管理,此缓冲区可以像其他任何MySQL配置参数一样进行控制。所以InnoDB存储引擎特别适合更新密集的表、事务、自动灾害恢复。 2.1.3 MEMORY
Memory所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会
占用和数据量成正比的内存空间。并且其内容会在Mysql重新启动时丢失。 2.1.4 MERGE
Merge将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用。
2.1.5 ARCHIVE
ARCHIVE存储引擎使用zlib压缩库大大压缩了此类型表中的数据,在记录被请求时
会实时进行解压。它除了选择记录,还可以插入数据,这在把旧数据移植到ARCHIVE表中时是很有必要的。但是,不允许删除或更新存储在这些表中的数据。Archive非常适合存储大量的、独立的,作为历史记录的数据。因为它们不经常被读取。Archive拥有高效的插入速度,但存储在ARCHIVE表中的任何数据都不会有索引,这意味着SELECT操作效率就很低。 2.1.6 CSV
CSV存储引擎以一种逗号分隔的格式存储表数据,访问和操作CSV表与访问其他任何
表类型一样,但CSV表实际上是文本文件。可以通过MySQL指定数据文件夹中的相应数据文件(带.cvs扩展名)复制现有的CSV文件。此外,由于CSV文件的特殊格式,不可能利用诸如索引等典型的数据库特性。 2.2 数据类型和属性
MySQL表每个列中的数据实行严格的控制,只是数据驱动应用程序成功的关键。MySQL
本身就提供了一组可以赋给表中各个列的数据类型。每个类型都强制数据满足为该数据类型预先确定的一组规则。
这些数据类型的行为可以通过包含属性进一步调整。
2.3 管理员数据表设计实例
在创建数据库表前,需要根据业务流程和系统功能结构,规划出系统中使用的数据库实体对象及实体E-R图,以管理员信息数据库表设计为例。
- 3 -
(1)管理员信息实体E-R图
图2-1 管理员信息实体E-R图
(2)管理员信息表(jq_admin)用来保存管理员的信息,该数据表结构如图2-2
图2-2 管理员信息表结构
(3)如图2-3可以看出表的存储引擎为MyISAM
- 4 -
图2-3 jq_admin数据库表的属性
3. Smarty模板引擎
PHP是一种HTML嵌入式语言,如果把PHP和HTML混合嵌套在一起,不利于项目的开发。而编程的一个基本原则:要尽力将表现和逻辑相分离。这时,我们就需要寻找一种合理解决的方案。
虽然还没有尽善尽没的解决方案, 但已经有很多解决方案几乎可以将网站的表现和逻辑完全分离。这些解决方案称为模板化引擎(templating engine),他们就在逐步消除由于缺乏层次分离而带来的难题。而其中最流行当属:Smarty。 3.1 Smarty的介绍
Smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之
一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目的就是要使PHP程序员同前端人员分离,使程序员改变程序的逻辑内容不会影响到前端人员的页面设计,前端人员重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。 3.1.1 Smarty的优点
1. 速度:相对于其它的模板引擎技术而言的,采用Smarty编写的程序可以获得最大速度的提高。
2. 编译型:采用Smarty编写的程序在运行时要编译成一个非模板技术的PHP文件,这个文件采用了PHP与HTML混合的方式,在下一次访问模板时将WEB请求直接转换到这个文件中,而不再进行模板重新编译(在源程序没有改动的情况下)
- 5 -
3. 缓存技术:Smarty选用的一中缓存技术,它可以将用户最终看到的HTML文件缓存成一个静态的HTML页,当设定Smarty的cache属性为true时,在Smarty设定的cachetime期内将用户的WEB请求直接转换到这个静态的HTML文件中来,这相当于调用一个静态的HTML文件。
4. 插件技术:Smarty可以自定义插件。插件实际就是一些自定义的函数。 5. 模板中可以使用if/elseif/else/endif。在模板文件使用判断语句可以非常方便的对模板进行格式重排。
3.1.2 Smarty模板引擎运作流程
Smarty模板引擎一方面读取模板文件中的页面样式,一方面读取PHP程序并进行编
译,然后结合模板文件和PHP程序并进行编译,得到编译后的PHP文件,最后在浏览器上将页面输出。当用户再次访问该文件时,Smarty模板会检查编译文件是否存在,如果不存在的话,就重新进行编译;如果存在,就直接运行这个文件。如图3-1:
- 6 -