內容簡介

本書介紹了symfony這個領先的PHP開發框架,展示如何利用symfony的眾多功能更快更有效率地開發Web應用程序,即使你只懂一點PHP也沒有關系。在本書里,你將了解如何使用symfony建立Web應用程序。本書分成五篇:「基礎知識」篇,包含所有的基本概念和開始symfony的基本知識;「核心架構」篇,講述模型視圖控制器(MVC)在symfony中的實現,以及如何用這樣的三層結構模型建立頁面和應用程序;「特殊功能」篇,解釋如何使用symfony加快「漂亮」的URL、表單、驗證、Ajax交互、緩存和國際化應用程序的開發;「開發工具」篇,介紹 symfony提供的加快日常開發的工具,代碼生成、單元測試框架、命令行任務和插件;「成為symfony專家」篇,揭示symfony代碼里的一些秘密,講述了如何調整框架的行為。

本書的目的在於降低框架入門的難度,為PHP開發者提供1.0版的參考書,讓這個框架能被企業接受。
 

目錄

第1篇 基礎知識
第1章 symfony介紹
1.1 symfony簡介
1.1.1 symfony的功能
1.1.2 誰開發了symfony?為什麽要開發symfony
1.1.3 symfony社區
1.1.4 symfony適合我嗎
1.2 基本概念
1.2.1 PHP 5
1.2.2 面向對象程序設計(OOP)
1.2.3 魔術方法(Magic Methods)
1.2.4 PHP擴展與應用程序庫(PEAR)
1.2.5 對象關系映射(ORM)
1.2.6 快速應用程序開發(RAD)
1.2.7 YAML
1.3 總結
第2章 探索symfony代碼
2.1 MVC模式
2.1.1 MVC層次
2.1.2 MVC以外的層分離方式
2.1.3 symfony的MVC實現方式
2.1.4 symfony核心類
2.2 代碼組織
2.2.1 項目結構:應用程序、模塊與動作
2.2.2 目錄結構
2.3 常用工具
2.3.1 參數存儲器
2.3.1 (Parameter Holoder)
2.3.2 常量(Contant)
2.3.3 類自動載入(Class Autoloading)
2.4 總結
第3章 運行symfony
3.1 安裝沙盒(Sandbox)
3.2 安裝symfony庫
3.2.1 PEAR方式安裝symfony
3.2.2 從SVN庫中獲得symfony
3.3 配置一個程序
3.3.1 建立一個項目
3.3.2 建立一個應用程序
3.4 配置Web服務器
3.4.1 設置虛擬主機
3.4.2 配置一個共享服務器
3.5 安裝問題
3.5.1 常見問題
3.5.2 symfony資源
3.6 源代碼版本控制
3.7 總結
第4章 頁面創建基礎
4.1 建立模塊框架
4.2 增加一個頁面
4.2.1 增加一個動作
4.2.2 增加一個模板
4.2.3 從動作傳遞信息給模板
4.3 通過表單從用戶獲取數據
4.4 鏈接到另一個動作
4.5 從請求中取得信息
4.6 總結
第5章 配置symfony
5.1 配置系統
5.1.1 YAML語法與symfony慣例
5.1.2 救命,YAML文件把我的程序搞死了
5.2 配置文件概述
5.2.1 項目配置
5.2.2 應用程序配置
5.2.3 模塊配置
5.3 環境
5.3.1 什麽是環境
5.3.2 配置層疊
5.4 配置緩存
5.5 從代碼里訪問配置信息
5.5.1 sfConfig類
5.5.2 自定義應用程序配置與app.yml
5.6 使用配置文件的技巧
5.6.1 在YAML文件里使用常量
5.6.2 在配置文件里使用腳本
5.6.3 瀏覽你的YAML文件
5.7 總結
第2篇 核心架構
第6章 深入了解控制器層
6.1 前端控制器
6.1.1 前端控制器的工作細節
6.1.2 默認的前端控制器
6.1.3 調用其他的前端控制器來切換環境
6.1.4 批處理文件
6.2 動作(Action)
6.2.1 動作類
6.2.2 另一種動作類語法
6.2.3 從動作里獲取信息
6.2.4 動作結束
6.2.5 跳到另一個動作
6.2.6 幾個動作共享的代碼
6.3 訪問請求
6.4 用戶會話
6.4.1 訪問用戶會話
6.4.2 Flash屬性
6.4.3 會話管理
6.5 動作安全
6.5.1 訪問限制
6.5.2 訪問授權
6.5.3 復合證書
6.6 檢驗和處理錯誤的方法
6.7 過濾器
6.7.1 過濾器鏈
6.7.2 建立自己的過濾器
6.7.3 過濾器激活和參數
6.7.4 過濾器實例
6.8 模塊配置
6.9 總結
第7章 深入了解視圖層
7.1 模板
7.1.1 輔助函數(Helpers)
7.1.2 頁面布局
7.1.3 模板快捷變量
7.2 代碼片段(Code Fragments)
7.2.1 局部模板(Partial)
7.2.2 組件(Component)
7.2.3 槽(Slot)
7.3 視圖配置
7.3.1 view.yml文件
7.3.2 響應對象
7.3.3 視圖配置
7.4 組件槽(Component Slot)
7.5 輸出轉義(Output Escaping)
7.5.1 開啟輸出轉義
7.5.2 轉義策略
7.5.3 轉義輔助函數
7.5.4 轉義數組與對象
7.6 總結
第8章 深入了解模型層
8.1 為什麽使用ORM和抽象層
8.2 symfony的數據庫設計(schema)
8.2.1 設計示例
8.2.2 基本設計語法
8.3 模型類
8.3.1 基礎類和自定義類
8.3.2 對象和Peer類
8.4 訪問數據
8.4.1 獲得列值
8.4.2 獲得相關聯的數據
8.4.3 保存和刪除數據
8.4.4 通過主鍵來獲得記錄
8.4.5 通過Criteria獲得數據
8.4.6 直接使用SQL查詢語句
8.4.7 使用特殊日期列
8.5 數據庫連接
8.6 擴展模型
8.6.1 增加新的方法
8.6.2 覆蓋現有方法
8.6.3 使用模型行為
8.7 擴展設計(schema)語法
8.7.1 屬性
8.7.2 列的詳細資料
8.7.3 外鍵
8.7.4 索引
8.7.5 空列
8.7.6 i18n表
8.7.7 超越schema.yml:schema.xml
8.8 不要重復建立模型
8.8.1 基於已有的設計建立
6.1.3 一個SQL數據庫結構
8.8.2 基於已有數據庫建立
6.1.3 YAML數據模型
8.9 總結
第3篇 特殊功能
第9章 鏈接和路由系統
9.1 什麽是路由
9.1.1 URL是服務器指令
9.1.2 URL是界面的一部分
9.1.3 URL如何工作
9.2 URL重寫
9.3 鏈接輔助函數
9.3.1 超鏈接、按鈕和表單
9.3.2 鏈接輔助函數的可選參數
9.3.3 偽裝的GET和POST選項
9.3.4 把請求參數強制設置為
6.1.3 GET變量
9.3.5 使用絕對路徑
9.4 路由配置
9.4.1 規則和模式
9.4.2 模式限制
9.4.3 設置默認值
9.4.4 用規則名字來加快
6.1.3 路由速度
9.4.5 增加.html擴展名
9.4.6 不使用routing.yml創建規則
9.5 在動作中處理路由
9.6 總結
第10章 表單
10.1 表單輔助函數
10.1.1 主要的表單標簽
10.1.2 標准的表單元素
10.1.3 日期輸入控件
10.1.4 編輯富文本(rich text)
10.1.5 選擇國家和語言
10.2 對象的表單輔助函數
10.2.1 生成對象的下拉列表
10.2.2 創建一個基於外鍵列的下拉列表
10.2.3 更新對象
10.3 表單驗證
10.3.1 驗證器
10.3.2 驗證文件
10.3.3 重新顯示表單
10.3.4 在表單中顯示出錯信息
10.3.5 重新填充表單數據
10.3.6 標准symfony驗證器
10.3.7 具名驗證器(Named Validator)
10.3.8 重新指定驗證方法
10.3.9 驗證文件到底是什麽樣子
10.4 復雜的驗證
10.4.1 創建一個定制的驗證器
10.4.2 用數組表示表單域
10.4.3 驗證空域
10.5 總結
第11章 集成Ajax
11.1 基本的JavaScript輔助函數
11.1.1 模板中的JavaScript
11.1.2 更新一個DOM元素
11.1.3 輕松地降級(Graceful Degradation)
11.2 Prototype
11.3 Ajax輔助函數
11.3.1 Ajax鏈接
11.3.2 Ajax驅動的表單
11.3.3 周期性調用遠程函數
11.4 遠程調用參數
11.4.1 根據響應狀態更新不同的元素
11.4.2 根據位置更新元素
11.4.3 根據條件更新元素
11.4.4 確定Ajax請求方法
11.4.5 授權腳本運行
11.4.6 創建回調函數
11.5 創建視覺效果
11.6 JSON
11.7 用Ajax完成復雜的交互
11.7.1 自動完成
11.7.2 拖放
11.7.3 可排序列表
11.7.4 就地編輯
11.8 總結
第12章 緩存
12.1 緩存響應
12.1.1 全局緩存設置
12.1.2 緩存一個動作
12.1.3 緩存一個局部模板、組件或者組件槽
12.1.4 緩存模板片段
12.1.5 動態配置緩存
12.1.6 使用極速緩存(Super Fast Cache)
12.2 從緩存里刪除項目
12.2.1 刪除整個緩存
12.2.2 清除指定的緩存
12.2.3 緩存目錄結構
12.2.4 手工清除緩存
12.3 緩存測試與監測
12.3.1 建立一個臨時工作環境
12.3.2 監測性能
12.3.3 基准化分析(Benchmarking)
12.3.4 識別緩存的部分
12.4 HTTP 1.1與客戶端緩存
12.4.1 增加ETag頭信息來避免發送重復的內容
12.4.2 增加Last-Modified頭信息避免發送仍然有效的內容
12.4.3 通過增加Vary頭信息來保存一個頁面的多個緩存版本
12.4.4 通過增加Cache-Control頭信息來允許客戶端緩存
12.5 總結
第13章 國際化(i18n)與本地化(l10n)
13.1 用戶的國家和語言(User Culture)
13.1.1 設置默認的國家和語言
13.1.2 改變用戶的國家和語言
13.1.3 自動確定用戶的國家和語言
13.2 標准與格式
13.2.1 根據用戶culture值輸出數據
13.2.2 從本地化輸入獲取數據
13.3 數據庫中的文本信息
13.3.1 創建本地化數據庫設計(schema)
13.3.2 運用生成的i18n對象
13.4 界面翻譯
13.4.1 翻譯的配置
13.4.2 運用翻譯輔助函數
13.4.3 運用字典文件
13.4.4 管理字典
13.4.5 處理其他需要翻譯的元素
13.4.6 處理復雜的翻譯需求
13.4.7 在模板外調用翻譯輔助函數
13.5 總結
第4篇 開發工具
第14章 生成器(Generator)
14.1 基於模型生成代碼
14.1.1 腳手架與管理界面
14.1.2 初始化或生成代碼
14.1.3 數據模型示例
14.2 腳手架
14.2.1 生成腳手架
14.2.2 初始化腳手架
14.3 管理界面
14.3.1 初始化管理界面模塊
14.3.2 初探生成的代碼
14.3.3 generator.yml配置文件
14.4 配置生成器
14.4.1 字段
14.4.2 視圖定制
14.4.3 list視圖相關的定制
14.4.4 edit視圖相關的定制
14.4.5 處理外鍵
14.4.6 增加交互
14.4.7 表單驗證
14.4.8 使用證書限制用戶動作
14.5 修改生成模塊的外觀
14.5.1 使用自定義樣式表
14.5.2 增加自定義頭部與尾部
14.5.3 自定義主題
14.6 總結
第15章 單元測試和功能測試
15.1 自動化測試
15.1.1 單元測試和功能測試
15.1.2 測試驅動的開發方法
15.1.3 lime測試框架
15.2 單元測試
15.2.1 單元測試概述
15.2.2 單元測試方法
15.2.3 測試參數
15.2.4 測試單元任務
15.2.5 測試樁(Stub)、測試資源(Fixture)和自動加載
15.3 功能測試
15.3.1 功能測試概要
15.3.2 用sfTestBrowser對象瀏覽
15.3.3 運用斷言
15.3.4 運用CSS選擇器
15.3.5 在測試環境中工作
15.3.6 功能測試任務
15.4 為測試命名
15.5 特別的測試需求
15.5.1 在測試框架(Test Harness)
15.5.1 中進行測試
15.5.2 存取數據庫
15.5.3 測試緩存
15.5.4 測試客戶端交互
15.6 總結
第16章 應用程序管理工具
16.1 日志
16.1.1 PHP日志
16.1.2 symfony日志
16.2 調試
16.2.1 symfony調試模式
16.2.2 symfony異常
16.2.3 Xdebug擴展
16.2.4 網頁調試工具條
16.2.5 手動調試
16.3 填充數據庫
16.3.1 fixture文件格式
16.3.2 導入數據
16.3.3 使用關聯表
16.4 部署應用程序
16.4.1 為FTP傳輸凍結項目
16.4.2 使用rsync進行增量
16.4.2 文件傳輸
16.4.3 忽略無關文件
16.4.4 管理投入使用的應用程序
16.5 總結
第17章 擴展symfony
17.1 Mixins
17.1.1 理解多重繼承
17.1.2 Mixing類
17.1.3 聲明一個類是可擴展的
17.1.4 注冊擴展(Extension)
17.1.5 更精確的擴展
17.2 factory
17.3 橋接其他框架組件
17.4 插件
17.4.1 查找symfony插件
17.4.2 安裝插件
17.4.3 解讀插件
17.4.4 如何寫一個插件
17.5 總結
第5篇 成為symfony專家
第18章 性能
18.1 調整服務器
18.2 調整模型
18.2.1 優化Propel整合
18.2.2 限制化合(Hydrate)
18.2.2 對象數量
18.2.3 用Join讓結果數量最小化
18.2.4 避免使用臨時數組
18.2.5 繞過ORM
18.2.6 數據庫加速
18.3 調整視圖
18.3.1 使用最快的代碼片段
18.3.2 加速路由過程
18.3.3 略過模板
18.3.4 限制默認的輔助函數
18.3.5 壓縮響應
18.4 調整緩存
18.4.1 選擇性地清除部分緩存
18.4.2 生成緩存頁
18.4.3 使用數據庫存儲系統
18.4.3 進行緩存
18.4.4 繞過symfony
18.4.5 緩存函數調用的結果
18.4.6 在服務器上緩存數據
18.5 屏蔽未使用過的功能
18.6 優化你的代碼
18.6.1 核心編譯
18.6.2 sfOptimizer插件
18.7 總結
第19章 管理symfony配置文件
19.1 symfony配置參數
19.1.1 默認的模塊和動作
19.1.2 激活可選特性
19.1.3 功能特性配置
19.2 擴展自動載入功能
19.3 定制文件結構
19.3.1 基本的文件結構
19.3.2 定制文件結構
19.3.3 修改項目的Web根目錄
19.3.4 連接symfony庫
19.4 理解配置處理器
19.4.1 默認的配置處理器
19.4.2 加入你自己的處理器
19.5 控制PHP參數
19.6 總結
 

當今,基於框架的Web開發日趨流行。各種Web語言開發社區也紛紛開發了基於各自語言的Web開發框架,例如:基於Ruby語言的Ruby On Rails(http://rubyonrails.org/)、基於Python語言的Django(http://www.djangoproject.com/),以及基於PHP語言的CakePHP(http://cakephp.org/)和symfony(http://www.symfony-project.org/)等。

symfony是一個完全由PHP 5編寫的完整的Web應用開發框架,它為加速Web應用開發提供了關鍵功能。symfony具有面向對象程序設計、快速應用程序開發、跨平台、獨立於數據庫、Web項目自動化管理、完善的開發環境與工具、易於擴展、適合大型長期項目等諸多優秀特性。它經過了廣泛的測試並被用於很多實際項目中。

symfony還是是一個文檔資源豐富的開發框架。它豐富的文檔資源吸引了很多PHP開發者加入symfony社區,使它成為非常受歡迎的PHP開發框架。

也許是被作者Francois Zaninotto和Fabien Potencier感動,我決定翻譯本書,把symfony介紹給國內的PHP開發者。於是我在symfony官方網站的wiki上建立了一個中文頁面,開始在上面發布本書中文翻譯。Harry(王唯真,我之前的同事)在我的邀請下也開始了翻譯工作。很快,通過email,我認識了symfony研究@中國(http://symfony-project.cn)網站的osmond(梁如軍,http://sinosmond.com)。osmond幫助我們制定了非常詳細的翻譯計划,並幫忙聯系了電子工業出版社的李冰和許艷。之後來自澳大利亞的James Hang(航健)和來自美國的Max Wang(王天石)也加入了翻譯團隊,接下來就是漫長而枯燥的翻譯和校對過程。

本書第2、4、5、7、12、14、16章由江樂(David Jiang)翻譯,第1、3、8、9、17、18章由王唯真(Harry)翻譯,第10、11、13、15、19章由航健(James Hang)翻譯,第6章由王天石(Max Wang)翻譯。

在此感謝團隊中幾位譯者的辛苦付出;感謝osmond為我們制定了詳細的翻譯計划並參與了校對工作;感謝jason為symfony研究@中國(http://symfony-project.cn)社區購買的交流空間;感謝電子工業出版社的李冰和許艷兩位編輯;感謝我的同事Shawn Wang,王要正;最後,還要感謝您——本書的讀者。

由於譯者水平有限,翻譯中難免有疏漏,希望廣大PHP愛好者和業界資深人士給予批評指正。您有任何意見和建議請發表於http://group s.google.com/group/symfonybook_cn/,以便重印或再版時改正。

symfony具有豐富的文檔資源,希望大家共同努力,加入我們(http://symfony-project.cn),共同翻譯維護其他文檔,以便進一步服務於國內廣大的PHP愛好者。

江樂(http://www.jiangle.name/)
2008年5月
網路書店 類別 折扣 價格
  1. 新書
    $294