《symfony权威指南》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(法)扎尼诺托等著;江乐等译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2008
  • ISBN:9787121067495
  • 页数:358 页
图书介绍:本书介绍了symfony这个领先的PHP开发框架,展示如何利用symfony的众多功能更快更有效率的开发Web应用程序,即使你只懂一点PHP也没有关系。在本书里,你将了解如何使用symfony建立Web应用程序。本书分成五篇:基础知识篇,包含所有的基本概念和开始symfony的基本知识;核心架构篇,讲述模型视图控制器(MVC)在symfony中的实现,以及怎么用这样的三层结构模型建立页面和应用程序;特殊功能篇,解释如何使用symfony加快漂亮URL、表单、验证、Ajax交互、缓存和国际化应用程序的开发;开发工具篇,介绍 symfony提供的加快日常开发的工具,代码生成、单元测试框架、命令行任务和插件;成为symfony专家篇,揭示symfony代码里的一些秘密,讲述了如何调整框架的行为。本书的目的在于降低框架入门的难度,为PHP开发者提供1.0版的参考书,让这个框架能被企业接受。

第1篇 基础知识 2

第1章 symfony介绍 2

1.1 symfony简介 2

1.1.1 symfony的功能 2

1.1.2 谁开发了symfony?为什么要开发symfony 3

1.1.3 symfony社区 4

1.1.4 symfony适合我吗 4

1.2 基本概念 5

1.2.1 PHP5 5

1.2.2 面向对象程序设计(OOP) 5

1.2.3 魔术方法(Magic Methods) 5

1.2.4 PHP扩展与应用程序库(PEAR) 6

1.2.5 对象关系映射(ORM) 6

1.2.6 快速应用程序开发(RAD) 7

1.2.7 YAML 8

1.3 总结 9

第2章 探索symfony代码 10

2.1 MVC模式 10

2.1.1 MVC层次 11

2.1.2 MVC以外的层分离方式 14

2.1.3 symfony的MVC实现方式 17

2.1.4 symfony核心类 19

2.2 代码组织 20

2.2.1 项目结构:应用程序、模块与动作 20

2.2.2 目录结构 21

2.3 常用工具 24

2.3.1 参数存储器(Parameter Holoder) 24

2.3.2 常量(Contant) 25

2.3.3 类自动载入(Class Autoloading) 26

2.4 总结 26

第3章 运行symfony 28

3.1 安装沙盒(Sandbox) 28

3.2 安装symfny库 29

3.2.1 PEAR方式安装symfony 30

3.2.2 从SVN库中获得symfony 31

3.3 配置一个程序 31

3.3.1 建立一个项目 31

3.3.2 建立一个应用程序 32

3.4 配置Web服务器 33

3.4.1 设置虚拟主机 33

3.4.2 配置一个共享服务器 34

3.5 安装问题 35

3.5.1 常见问题 35

3.5.2 symfony资源 36

3.6 源代码版本控制 36

3.7 总结 38

第4章 页面创建基础 39

4.1 建立模块框架 39

4.2 增加一个页面 41

4.2.1 增加一个动作 41

4.2.2 增加一个模板 42

4.2.3 从动作传递信息给模板 43

4.3 通过表单从用户获取数据 43

4.4 链接到另一个动作 45

4.5 从请求中取得信息 46

4.6 总结 47

第5章 配置symfony 48

5.1 配置系统 48

5.1.1 YAML语法与symfony惯例 49

5.1.2 救命,YAML文件把我的程序搞死了 51

5.2 配置文件概述 52

5.2.1 项目配置 52

5.2.2 应用程序配置 53

5.2.3 模块配置 55

5.3 环境 56

5.3.1 什么是环境 56

5.3.2 配置层叠 58

5.4 配置缓存 59

5.5 从代码里访问配置信息 60

5.5.1 sfConfig类 60

5.5.2 自定义应用程序配置与app.yml 62

5.6 使用配置文件的技巧 62

5.6.1 在YAML文件里使用常量 62

5.6.2 在配置文件里使用脚本 63

5.6.3 浏览你的YAML文件 63

5.7 总结 64

第2篇 核心架构 66

第6章 深入了解控制器层 66

6.1 前端控制器 66

6.1.1 前端控制器的工作细节 66

6.1.2 默认的前端控制器 67

6.1.3 调用其他的前端控制器来切换环境 67

6.1.4 批处理文件 68

6.2 动作(Action) 69

6.2.1 动作类 69

6.2.2 另一种动作类语法 70

6.2.3 从动作里获取信息 70

6.2.4 动作结束 71

6.2.5 跳到另一个动作 73

6.2.6 几个动作共享的代码 74

6.3 访问请求 75

6.4 用户会话 77

6.4.1 访问用户会话 77

6.4.2 Flash属性 78

6.4.3 会话管理 79

6.5 动作安全 80

6.5.1 访问限制 80

6.5.2 访问授权 81

6.5.3 复合证书 83

6.6 检验和处理错误的方法 83

6.7 过滤器 85

6.7.1 过滤器链 85

6.7.2 建立自己的过滤器 87

6.7.3 过滤器激活和参数 88

6.7.4 过滤器实例 89

6.8 模块配置 90

6.9 总结 90

第7章 深入了解视图层 91

7.1 模板 91

7.1.1 辅助函数(Helpers) 92

7.1.2 页面布局 94

7.1.3 模板快捷变量 96

7.2 代码片段(Code Fragments) 96

7.2.1 局部模板(Partial) 97

7.2.2 组件(Component) 98

7.2.3 槽(Slot) 100

7.3 视图配置 102

7.3.1 view.yml文件 103

7.3.2 响应对象 104

7.3.3 视图配置 105

7.4 组件槽(Component Slot) 109

7.5 输出转义(Output Escaping) 111

7.5.1 开启输出转义 111

7.5.2 转义策略 112

7.5.3 转义辅助函数 113

7.5.4 转义数组与对象 113

7.6 总结 114

第8章 深入了解模型层 115

8.1 为什么使用ORM和抽象层 115

8.2 symfony的数据库设计(schema) 116

8.2.1 设计示例 117

8.2.2 基本设计语法 117

8.3 模型类 118

8.3.1 基础类和自定义类 119

8.3.2 对象和Peer类 119

8.4 访问数据 120

8.4.1 获得列值 120

8.4.2 获得相关联的数据 121

8.4.3 保存和删除数据 122

8.4.4 通过主键来获得记录 122

8.4.5 通过Criteria获得数据 123

8.4.6 直接使用SQL查询语句 125

8.4.7 使用特殊日期列 126

8.5 数据库连接 127

8.6 扩展模型 128

8.6.1 增加新的方法 128

8.6.2 覆盖现有方法 129

8.6.3 使用模型行为 130

8.7 扩展设计(schema)语法 130

8.7.1 属性 130

8.7.2 列的详细资料 132

8.7.3 外键 133

8.7.4 索引 133

8.7.5 空列 134

8.7.6 il8n表 134

8.7.7 超越schema.yml:schema.xml 135

8.8 不要重复建立模型 136

8.8.1 基于已有的设计建立一个SQL数据库结构 136

8.8.2 基于已有数据库建立YAML数据模型 137

8.9 总结 138

第3篇 特殊功能 140

第9章 链接和路由系统 140

9.1 什么是路由 140

9.1.1 URL是服务器指令 140

9.1.2 URL是界面的一部分 141

9.1.3 URL如何工作 142

9.2 URL重写 144

9.3 链接辅助函数 145

9.3.1 超链接、按钮和表单 145

9.3.2 链接辅助函数的可选参数 146

9.3.3 伪装的GET和POST选项 147

9.3.4 把请求参数强制设置为GET变量 148

9.3.5 使用绝对路径 149

9.4 路由配置 150

9.4.1 规则和模式 150

9.4.2 模式限制 151

9.4.3 设置默认值 153

9.4.4 用规则名字来加快路由速度 153

9.4.5 增加.html扩展名 154

9.4.6 不使用routing.yml创建规则 155

9.5 在动作中处理路由 155

9.6 总结 156

第10章 表单 157

10.1 表单辅助函数 157

10.1.1 主要的表单标签 157

10.1.2 标准的表单元素 158

10.1.3 日期输入控件 161

10.1.4 编辑富文本(rich text) 162

10.1.5 选择国家和语言 163

10.2 对象的表单辅助函数 164

10.2.1 生成对象的下拉列表 165

10.2.2 创建一个基于外键列的下拉列表 165

10.2.3 更新对象 167

10.3 表单验证 167

10.3.1 验证器 168

10.3.2 验证文件 169

10.3.3 重新显示表单 170

10.3.4 在表单中显示出错信息 171

10.3.5 重新填充表单数据 172

10.3.6 标准symfony验证器 173

10.3.7 具名验证器(Named Validator) 176

10.3.8 重新指定验证方法 177

10.3.9 验证文件到底是什么样子 177

10.4 复杂的验证 178

10.4.1 创建一个定制的验证器 178

10.4.2 用数组表示表单域 180

10.4.3 验证空域 180

10.5 总结 181

第11章 集成Ajax 182

11.1 基本的JavaScript辅助函数 182

11.1.1 模板中的JavaScript 183

11.1.2 更新一个DOM元素 184

11.1.3 轻松地降级(Graceful Degradation) 185

11.2 Prototype 185

11.3 Ajax辅助函数 186

11.3.1 Ajax链接 188

11.3.2 Ajax驱动的表单 188

11.3.3 周期性调用远程函数 191

11.4 远程调用参数 191

11.4.1 根据响应状态更新不同的元素 191

11.4.2 根据位置更新元素 192

11.4.3 根据条件更新元素 192

11.4.4 确定Ajax请求方法 193

11.4.5 授权脚本运行 193

11.4.6 创建回调函数 193

11.5 创建视觉效果 194

11.6 JSON 195

11.7 用Ajax完成复杂的交互 197

11.7.1 自动完成 197

11.7.2 拖放 198

11.7.3 可排序列表 199

11.7.4 就地编辑 200

11.8 总结 201

第12章 缓存 202

12.1 缓存响应 202

12.1.1 全局缓存设置 202

12.1.2 缓存一个动作 203

12.1.3 缓存一个局部模板、组件或者组件槽 204

12.1.4 缓存模板片段 205

12.1.5 动态配置缓存 207

12.1.6 使用极速缓存(Super Fast Cache) 208

12.2 从缓存里删除项目 209

12.2.1 删除整个缓存 209

12.2.2 清除指定的缓存 210

12.2.3 缓存目录结构 212

12.2.4 手工清除缓存 212

12.3 缓存测试与监测 213

12.3.1 建立一个临时工作环境 213

12.3.2 监测性能 214

12.3.3 基准化分析(Benchmarking) 214

12.3.4 识别缓存的部分 214

12.4 HTTP 1.1与客户端缓存 215

12.4.1 增加ETag头信息来避免发送重复的内容 215

12.4.2 增加Last-Modified头信息避免发送仍然有效的内容 215

12.4.3 通过增加Vary头信息来保存一个页面的多个缓存版本 216

12.4.4 通过增加Cache-Control头信息来允许客户端缓存 216

12.5 总结 217

第13章 国际化(i18n)与本地化(l10n) 218

13.1 用户的国家和语言(User Culture) 218

13.1.1 设置默认的国家和语言 218

13.1.2 改变用户的国家和语言 219

13.1.3 自动确定用户的国家和语言 220

13.2 标准与格式 220

13.2.1 根据用户culture值输出数据 220

13.2.2 从本地化输入获取数据 221

13.3 数据库中的文本信息 222

13.3.1 创建本地化数据库设计(schema) 222

13.3.2 运用生成的i18n对象 223

13.4 界面翻译 224

13.4.1 翻译的配置 224

13.4.2 运用翻译辅助函数 224

13.4.3 运用字典文件 225

13.4.4 管理字典 226

13.4.5 处理其他需要翻译的元素 226

13.4.6 处理复杂的翻译需求 227

13.4.7 在模板外调用翻译辅助函数 228

13.5 总结 228

第4篇 开发工具 230

第14章 生成器(Generator) 230

14.1 基于模型生成代码 230

14.1.1 脚手架与管理界面 230

14.1.2 初始化或生成代码 231

14.1.3 数据模型示例 231

14.2 脚手架 232

14.2.1 生成脚手架 232

14.2.2 初始化脚手架 234

14.3 管理界面 234

14.3.1 初始化管理界面模块 235

14.3.2 初探生成的代码 236

14.3.3 generator.yml配置文件 236

14.4 配置生成器 238

14.4.1 字段 238

14.4.2 视图定制 243

14.4.3 List视图相关的定制 245

14.4.4 edit视图相关的定制 249

14.4.5 处理外键 252

14.4.6 增加交互 253

14.4.7 表单验证 255

14.4.8 使用证书限制用户动作 256

14.5 修改生成模块的外观 256

14.5.1 使用自定义样式表 256

14.5.2 增加自定义头部与尾部 257

14.5.3 自定义主题 258

14.6 总结 259

第15章 单元测试和功能测试 260

15.1 自动化测试 260

15.1.1 单元测试和功能测试 260

15.1.2 测试驱动的开发方法 261

15.1.3 Lime测试框架 262

15.2 单元测试 262

15.2.1 单元测试概述 262

15.2.2 单元测试方法 263

15.2.3 测试参数 265

15.2.4 测试单元任务 266

15.2.5 测试桩(Stub)、测试资源(Fixture)和自动加载 267

15.3 功能测试 269

15.3.1 功能测试概要 269

15.3.2 用sfTestBrowser对象浏览 271

15.3.3 运用断言 273

15.3.4 运用CSS选择器 275

15.3.5 在测试环境中工作 276

15.3.6 功能测试任务 277

15.4 为测试命名 278

15.5 特别的测试需求 279

15.5.1 在测试框架(Test Harness)中进行测试 279

15.5.2 存取数据库 280

15.5.3 测试缓存 280

15.5.4 测试客户端交互 281

15.6 总结 283

第16章 应用程序管理工具 284

16.1 日志 284

16.1.1 PHP日志 284

16.1.2 symfony日志 285

16.2 调试 287

16.2.1 symfony调试模式 287

16.2.2 symfony异常 288

16.2.3 Xdebug扩展 289

16.2.4 网页调试工具条 290

16.2.5 手动调试 293

16.3 填充数据库 295

16.3.1 fixture文件格式 295

16.3.2 导入数据 295

16.3.3 使用关联表 296

16.4 部署应用程序 297

16.4.1 为FTP传输冻结项目 297

16.4.2 使用rsync进行增量文件传输 297

16.4.3 忽略无关文件 299

16.4.4 管理投入使用的应用程序 300

16.5 总结 301

第17章 扩展symfony 302

17.1 Mixins 302

17.1.1 理解多重继承 302

17.1.2 Mixing类 303

17.1.3 声明一个类是可扩展的 304

17.1.4 注册扩展(Extension) 306

17.1.5 更精确的扩展 308

17.2 factory 309

17.3 桥接其他框架组件 310

17.4 插件 312

17.4.1 查找symfony插件 312

17.4.2 安装插件 313

17.4.3 解读插件 315

17.4.4 如何写一个插件 318

17.5 总结 324

第5篇 成为symfony专家 326

第18章 性能 326

18.1 调整服务器 326

18.2 调整模型 327

18.2.1 优化Propel整合 327

18.2.2 限制化合(Hydrate)对象数量 328

18.2.3 用Join让结果数量最小化 328

18.2.4 避免使用临时数组 330

18.2.5 绕过ORM 331

18.2.6 数据库加速 332

18.3 调整视图 334

18.3.1 使用最快的代码片段 334

18.3.2 加速路由过程 334

18.3.3 略过模板 335

18.3.4 限制默认的辅助函数 335

18.3.5 压缩响应 335

18.4 调整缓存 336

18.4.1 选择性地清除部分缓存 336

18.4.2 生成缓存页 337

18.4.3 使用数据库存储系统进行缓存 338

18.4.4 绕过symfony 338

18.4.5 缓存函数调用的结果 338

18.4.6 在服务器上缓存数据 339

18.5 屏蔽未使用过的功能 340

18.6 优化你的代码 341

18.6.1 核心编译 341

18.6.2 sfOptimizer插件 342

18.7 总结 342

第19章 管理symfony配置文件 343

19.1 symfony配置参数 343

19.1.1 默认的模块和动作 343

19.1.2 激活可选特性 345

19.1.3 功能特性配置 346

19.2 扩展自动载入功能 348

19.3 定制文件结构 350

19.3.1 基本的文件结构 351

19.3.2 定制文件结构 352

19.3.3 修改项目的Web根目录 352

19.3.4 连接symfony库 353

19.4 理解配置处理器 354

19.4.1 默认的配置处理器 354

19.4.2 加入你自己的处理器 355

19.5 控制PHP参数 357

19.6 总结 358