具体描述
本书通过一个完整的Web 2.0应用——带有动态图库、搜索和地图功能的博客系统详细介绍了Web开发的全过程。首先讨论了Web应用的规划与设计,然后逐章实现各个具体特性,包括网站主页、用户主页、用户注册页面、账户登录和管理页面、用户博客系统、网站搜索以及应用管理等,最后介绍部署和维护。
本书适合中、高级的PHP程序员阅读。
作者简介
Quentin Zervaas,资深PHP程序员。曾为世界各地众多客户开发了许多Web应用,其中Recite CMS已经用于澳大利亚许多大公司。他还是知名PHP开发资源网站PhpRiot(WWW.phpriot.com)的维护者。
目录信息
1.1 什么是web 2.0
1.2 数据库连接
1.3 网站模板
1.4 网站特性
1.4.1 网站主页和用户主页
1.4.2 用户注册
1.4.3 账户登录和管理
1.4.4 用户博客
1.4.5 网站搜索
1.4.6 应用管理
1.5 开发的其他方面
1.5.1 搜索引擎优化
1.5.2 phpdoc风格的注释
1.5.3 安全性
1.5.4 应用日志
1.5.5 可维护性和可扩展性
1.6 版本控制和单元测试
1.7 小结
第2章 建立应用框架
2.1 web服务器配置
2.1.1 操作系统
2.1.2 安装apache http服务器
2.1.3 安装mysql 5
2.1.4 安装php 5.2.3
2.2 应用文件系统结构
2.2.1 web根目录
2.2.2 数据存储目录
2.2.3 php类目录
2.2.4 模板目录
2.2.5 完整的目录结构
2.3 安装zend框架
2.4 配置web服务器
2.4.1 在linux上创建虚拟主机
2.4.2 在windows上创建虚拟主机
2.4.3 重启web服务器
2.5 建立数据库
2.6 使用mvc模式
2.6.1 将应用逻辑与表示逻辑分离
2.6.2 将所有请求定向到index.php
2.6.3 zend_controller类简介
2.6.4 zend_controller如何处理请求
2.6.5 创建indexcontroller
2.7 定义应用设置
2.8 连接数据库
2.9 smarty模板引擎
2.9.1 为什么不使用其他模板引擎
2.9.2 下载和安装smarty
2.9.3 利用zend_controller自动显示视图
2.9.4 smarty与网站控制器集成
2.10 增加日志功能
2.11 小结
第3章 用户认证、授权和管理
3.1 创建用户数据库表
3.1.1 时间戳
3.1.2 用户个性化信息
3.2 zend_auth简介
3.2.1 实例化zend_auth
3.2.2 使用zend_auth完成认证
3.3 zend_acl简介
3.4 结合zend_auth、zend_acl和zend_controller_front
3.5 用databaseobject管理用户记录
3.5.1 databaseobject_user类
3.5.2 使用databaseobject_user
3.6 管理用户个性化信息
3.6.1 使用profile_user
3.6.2 集成profile_user和databaseobject_user
3.7 小结
第4章 用户注册、登录和注销
4.1 为应用增加用户注册功能
4.1.1 为用户注册创建表单处理器
4.1.2 显示注册表单并处理注册
4.1.3 为用户注册表单增加captcha
4.1.4 增加e-mail功能
4.2 实现账户登录和注销
4.2.1 创建登录模板
4.2.2 增加account控制器login动作
4.2.3 记录成功和失败登录
4.2.4 用户注销账户
4.3 处理忘记口令的情况
4.3.1 重置用户口令
4.3.2 重置口令的函数
4.4 实现账户管理
4.4.1 创建账户主页
4.4.2 更新网站导航
4.4.3 允许用户更新信息
4.5 小结
第5章 prototype与scriptaculous简介
5.1 下载和安装prototype
5.2 选择文档对象模型中的对象
5.2.1 $()函数
5.2.2 getelementsbyclassname()函数
5.2.3 $$()函数
5.2.4 getelementsbyselector()函数
5.3 prototype的hash对象
5.4 其他元素扩展
5.4.1 显示和隐藏元素
5.4.2 获取元素尺寸
5.4.3 管理元素类
5.4.4 用prototype管理字符串
5.5 prototype中的ajax操作
5.5.1 ajax请求选项
5.5.2 ajax回调函数
5.5.3 json
5.5.4 一个ajax.request例子
5.6 prototype中的事件处理
5.6.1 观察事件
5.6.2 查找事件出现在哪个元素上
5.6.3 取消事件
5.7 利用prototype创建javascript类
5.7.1 创建类
5.7.2 为函数调用绑定对象
5.8 从prototype转向scriptaculous
5.8.1 预置控件
5.8.2 拖放
5.8.3 视觉效果
5.8.4 dom元素构建器
5.8.5 javascript单元测试
5.9 下载和安装scriptaculous
5.10 在一个实用例子中结合使用prototype、scriptaculous、ajax和php
5.10.1 创建主html页面:index.php
5.10.2 为应用设置样式:styles.css
5.10.3 创建和填充数据库:schema.sql
5.10.4 服务器端管理列表项:items.php
5.10.5 在服务器端处理ajax请求:processor.php
5.10.6 创建客户端应用逻辑:scripts.js
5.11 小结
第6章 为web应用设置样式
6.1 增加页面标题和浏览路径
6.1.1 breadcrumbs类
6.1.2 生成url
6.1.3 为各个控制器动作设置标题和浏览路径
6.1.4 创建一个smarty插件输出浏览路径
6.1.5 显示页面标题
6.2 在应用中集成设计
6.2.1 创建静态html
6.2.2 将html标记移入smarty模板
6.3 构建css
6.3.1 指定媒体类型和加载css文件
6.3.2 创建应用css
6.3.3 创建只打印样式表
6.3.4 完整的应用样式表
6.4 为应用web表单设置样式
6.5 加载prototype和scriptaculous
6.6 实现客户端表单验证
6.6.1 为customcontrolleraction类增加json支持
6.6.2 修改表单处理器
6.6.3 修改注册控制器动作
6.6.4 创建javascript表单验证器
6.6.5 加载userregistrationform类
6.7 小结
第7章 构建博客系统
7.1 创建数据库表
7.2 建立databaseobject和profile类
7.2.1 创建databaseobject_blogpost类
7.2.2 创建profile_blogpost类
7.3 创建控制器管理博客帖子
7.3.1 扩展应用权限
7.3.2 blogmanagercontroller动作
7.3.3 链接博客管理系统
7.4 创建和编辑博客帖子
7.4.1 创建博客帖子提交表单模板
7.4.2 在editaction()中实例化formprocessor_blogpost
7.4.3 实现formprocessor_blogpost类
7.4.4 为博客帖子生成一个永久链接
7.4.5 过滤提交的html
7.4.6 创建一个新博客帖子
7.5 预览博客帖子
7.5.1 创建预览动作
7.5.2 实现预览模板
7.5.3 请求对用户动作的确认
7.6 更新博客帖子的状态
7.6.1 完成setstatusaction()
7.6.2 通知用户
7.7 小结
第8章 扩展博客管理系统
8.1 在博客管理系统索引页面上列出帖子
8.1.1 从数据库获取博客帖子
8.1.2 将最新帖子和各月概要赋给模板
8.1.3 在模板中显示最新帖子
8.1.4 显示各月概要
8.2 为博客各月概要增加ajax功能
8.2.1 创建ajax请求输出
8.2.2 blogmonthlysummary javascript类
8.2.3 安装blogmonthlysummary类
8.2.4 通知用户内容已更新
8.3 集成wysiwyg编辑器
8.3.1 下载并安装fckeditor
8.3.2 配置fckeditor
8.3.3 在博客编辑页面中加载fckeditor
8.4 小结
第9章 个人化用户区
9.1 控制用户设置
9.1.1 为用户提供定制设置
9.1.2 处理对用户设置的修改
9.1.3 创建默认用户设置
9.2 usercontroller类
9.2.1 将请求路由到usercontroller
9.2.2 处理对usercontroller的请求
9.3 显示用户的博客
9.3.1 显示博客索引页面
9.3.2 显示单个博客帖子
9.3.3 生成博客归档链接
9.3.4 显示各月归档
9.4 填充应用主页
9.4.1 加载最新公开帖子
9.4.2 实现应用主页
9.5 小结
第10章 实现web 2.0特性
10.1 标签
10.1.1 实现标签系统
10.1.2 管理博客帖子标签
10.1.3 在用户博客上显示用户的标签
10.1.4 显示标签空间
10.1.5 在各帖子上显示标签
10.2 web提要
10.2.1 web提要的数据格式
10.2.2 用zend_feed创建一个atom提要
10.2.3 为usercontroller增加提要
10.2.4 链接到提要
10.2.5 其他提要选项
10.3 微格式
10.3.1 使用微格式的例子
10.3.2 为什么使用微格式
10.3.3 对标签标记微格式
10.4 允许用户创建公开个性化数据
10.4.1 允许用户创建公开个性化数据
10.4.2 显示用户的个性化数据
10.5 小结
第11章 一个动态图库
11.1 存储上传文件
11.1.1 为图像数据创建数据库表
11.1.2 用databaseobject控制上传图像
11.2 上传文件
11.2.1 设置表单编码
11.2.2 增加表单
11.2.3 指定文件输入类型
11.2.4 设置最大文件大小
11.2.5 处理上传文件
11.3 发送图像
11.4 调整图像大小
11.4.1 创建缩略图
11.4.2 将缩略图生成工具链接到图像动作处理程序
11.5 管理博客帖子图像
11.5.1 自动加载博客帖子图像
11.5.2 在帖子预览页面上显示图像
11.5.3 删除博客帖子图像
11.5.4 使用scriptaculous和ajax删除图像
11.5.5 删除帖子时删除图像
11.5.6 重排博客帖子图像的顺序
11.6 在用户博客上显示图像
11.6.1 扩展getposts()函数
11.6.2 在博客索引页面上显示缩略图
11.6.3 在博客详细信息页面上显示图像
11.6.4 用lightbox显示更大的图像
11.7 小结
第12章 实现网站搜索
12.1 zend_search_lucene简介
12.1.1 与mysql全文索引比较
12.1.2 zend_search_lucene字段类型
12.1.3 字段命名
12.2 建立应用内容的索引
12.2.1 对多种类型的数据建立索引
12.2.2 创建新zend_search_lucene_document
12.2.3 获取索引位置
12.2.4 构建完整索引
12.2.5 对一个博客帖子建立索引和解除索引
12.2.6 触发搜索索引更新
12.3 创建搜索工具
12.3.1 增加搜索表单
12.3.2 处理搜索请求
12.3.3 查询搜索索引
12.3.4 显示搜索结果
12.3.5 搜索类型
12.4 为搜索工具增加自动完成功能
12.4.1 提供搜索建议
12.4.2 创建一个动作处理程序返回搜索结果
12.4.3 获取搜索建议
12.4.4 加载searchsuggestor类
12.4.5 显示搜索建议
12.4.6 为结果增加鼠标导航
12.4.7 为结果增加键盘导航
12.5 小结
第13章 集成google maps
13.1 google maps特性
13.1.1 地理编码
13.1.2 显示地图
13.1.3 控制地图
13.2 集成规划
13.2.1 google maps的局限性
13.2.2 浏览器兼容性
13.2.3 文档和资源
13.2.4 创建google maps api键
13.3 增加位置存储功能
13.3.1 创建数据库表
13.3.2 创建databaseobject_blogpostlocation类
13.3.3 修改博客帖子来加载位置
13.4 创建第一个地图
13.4.1 创建一个新博客管理系统控制器动作
13.4.2 显示第一个google地图
13.5 在地图上管理位置
13.5.1 处理位置管理ajax请求
13.5.2 创建地址查找表单
13.5.3 扩展bloglocationmanagerjavascript类
13.5.4 使用bloglocationmanager
13.6 在用户公开博客上显示地图
13.6.1 使用geo微格式输出位置
13.6.2 创建bloglocations类
13.6.3 更新博客帖子显示模板
13.7 小结
第14章 部署与维护
14.1 应用日志
14.1.1 通过e-mail向管理员通知重大错误
14.1.2 使用应用日志
14.2 网站错误处理
14.2.1 错误处理的目标
14.2.2 处理分派前错误
14.2.3 运行时错误
14.3 网站管理
14.3.1 管理区特性
14.3.2 实现管理
14.4 应用部署
14.4.1 不同服务器有不同配置
14.4.2 用rsync部署应用文件
14.5 备份和恢复
14.5.1 导出数据库
14.5.2 导入数据库
14.6 小结
· · · · · · (收起)
读后感
书中介绍的ZendFramework是目前实现很好的开发框架, 至少还没有一个PHP框架超越Zend的官方框架, 书中介绍了搭建应用常用的模块, 对读者起到了引导学习的作用, 同时需要注意, 这不是一本手册式的图书, 对某些框架的讲解篇幅比较小, 请读者注意搭配其他图书一并学习
买这本书我主要冲着ZendFramework,现在国内引进的讲ZendFramework开发的书还不是很多,不过那时我想学,我就兴冲冲的买了,看了之后,不知道是翻译问题还是作者表述的问题,很多东西就没能很直观的讲清楚,要看懂这本书,真的要边实践边看,比较耗时。单纯学PHP开发的可以忽略...
这是一本初级程序员迈向中高级程序员的书,不太适合没有一定开发基础的人读,而且需要有很好的设计模式思想,这些都是在实战中培养出来的。当然这只是一本zend Framework的入门书,zend Framework的高级用法还是需要通过读手册和自己探索来研究。这本书的好处就是可以指导你从...
买这本书我主要冲着ZendFramework,现在国内引进的讲ZendFramework开发的书还不是很多,不过那时我想学,我就兴冲冲的买了,看了之后,不知道是翻译问题还是作者表述的问题,很多东西就没能很直观的讲清楚,要看懂这本书,真的要边实践边看,比较耗时。单纯学PHP开发的可以忽略...
ZendFramework是目前实现很好的开发框架, 在学校学的东西拿出来根本就拿不出手,闲暇时间不得不冲冲电。呵呵,只是基础太差很多都不太懂,之前朋友推荐我去的那个网站izixue.com/?fromuid=161,也还不错,这本书也是朋友给推荐的。
用户评价
收到,以下是为您创作的五段读者风格的图书评价,每段约300字,内容详尽,风格各异,并用“
**评价三:** 这本书给我最大的感受就是“实用性”和“可操作性”。作者就像一位经验丰富的导师,手把手地教你如何在实际项目中应用 PHP 开发技术。他对“框架选型”的分析非常到位,没有盲目推崇某个框架,而是从多个维度进行了比较,让我对主流的 PHP 框架有了更清晰的认识。书中对“面向对象编程”的讲解,绝对是亮点,作者将抽象的概念转化为具体的代码示例,让我真正理解了封装、继承和多态在 Web 开发中的实际应用。特别是“设计模式”的讲解,作者选择了几个 Web 开发中最常用的模式,并结合实际场景进行了详细的演示,这让我能够快速将这些模式应用到自己的项目中,大大提高了代码的可读性和可维护性。我一直很头疼如何高效地管理项目中的“用户权限”,这本书在这方面提供了非常系统性的解决方案,从用户认证到角色授权,都讲解得非常透彻。另外,书中对“版本控制系统”(如 Git)的使用也进行了详细的介绍,这对于我这样一个刚开始接触大型项目开发的人来说,简直是救星。
**评价四:** 坦白讲,刚开始拿到这本书的时候,我有点担心它会不会过于理论化,但读完之后,我发现我的担忧是多余的。作者的文笔非常流畅,而且在讲解技术的同时,非常注重引入“工程化”的理念。他反复强调“代码规范”和“重构”的重要性,这让我意识到,一个优秀的项目不仅仅是功能实现,更在于其内在的质量。书中对“自动化测试”的讲解,让我对单元测试和集成测试有了全新的认识,并且学会了如何编写更可靠的代码,减少 bug 的产生。而且,作者在书中并没有止步于 PHP 本身,而是拓展到了与 PHP 相关的周边技术,比如“Composer 包管理器”的使用,以及如何利用“Docker”进行开发环境的搭建,这些都极大地提升了我的开发效率。我特别欣赏书中关于“日志记录”和“性能监控”的章节,这让我明白了如何及时发现和解决应用中的问题,保证服务的稳定性。这本书更像是一本“内功心法”,它教会我如何从更宏观的角度去思考 Web 开发,如何构建一个可持续发展、易于维护的系统。
**评价二:** 我必须说,这本书的视角非常前沿,它不仅仅是教授 PHP 的语法,更是引导读者去思考“如何构建一个真正优秀的 Web 应用”。作者在书中反复强调“用户体验”的重要性,并且通过很多实际案例,展示了如何通过精巧的设计和高效的编码来提升用户满意度。对于“AJAX”技术的讲解,我印象特别深刻,书中详细介绍了如何利用 jQuery 库实现无刷新更新数据,这对于我过去那种每次提交都要全页刷新的用户体验来说,是巨大的改进。此外,书中对“RESTful API”设计原则的阐述,也让我受益匪浅,理解了如何设计出更具可伸缩性和互操作性的服务。作者并没有回避一些复杂的话题,比如“数据库性能优化”和“安全漏洞防范”,他用非常直观易懂的方式,将这些挑战呈现出来,并提供了切实可行的解决方案。我特别欣赏书中关于“缓存策略”的部分,这让我学会了如何通过多层次的缓存来显著提升应用的响应速度。总的来说,这本书不仅传授了技术,更传递了一种“匠心”精神,教会我如何从用户的角度出发,去设计和开发一个真正能打动人心的 Web 应用。
”分隔。 **评价一:** 最近终于啃完了这本书,感觉就像踏上了一段从基础到进阶的奇妙旅程。作者的叙事风格非常引人入胜,他没有枯燥地罗列概念,而是通过一个又一个贴近实际的项目,将枯燥的理论变得生动有趣。我尤其喜欢书中对“模块化开发”和“组件化思想”的深入剖析,这对于我过去写代码时经常遇到的“意大利面条式”代码问题,简直是醍醐灌顶。书里对 MVC 模式的讲解,不仅仅是理论上的介绍,还提供了非常详细的代码实现步骤,让我能够一步步跟着模仿,然后在此基础上进行自己的创新。特别是关于表单验证的章节,作者不仅介绍了基本的验证方法,还探讨了更高级的安全防护策略,这让我对用户输入的安全性有了全新的认识。而且,这本书在讲解过程中,非常注重细节,比如对错误处理机制的细致讲解,让我明白了如何构建更健壮、更易于维护的应用程序。读完这本书,我感觉自己在 PHP 的开发能力上有了质的飞跃,很多之前觉得高深莫测的概念,现在都变得清晰明了。
其实就是讲Zend Framework的书
其实就是讲Zend Framework的书
这本书适合有一定设计模式基础的开发者读,如果是初学者,我觉得会完全以为这是天书
2009-7-19至8月23日
2009-7-19至8月23日