Web development with zend framework

13,275 views
13,549 views

Published on

Published in: Technology, Education
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
13,275
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
66
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Web development with zend framework

  1. 1. WEB 开发实践 基于 Zend Framework
  2. 2. 自我简介 • 闫斌(Ben Yan) • Sr. Engineer @ BI-Tracking, ValueClick Brands • 抚琴居(http://www.yAnbiN.org) • Ben.Yan@msn.com
  3. 3. 怎么认识 Zend Framework 类库? 框架? 是的,两个都是!!
  4. 4. 怎么使用 Zend Framework Component Library Business Zend_Db/Zend_Pdf/Zend_Mail/Zend_Feed/… Logic Application Framework
  5. 5. Zend Framework 程序骨架 >zf.bat create project quickstart quickstart ├─document Quickstart ├─source ├─docs │ ├─application ├─application │ │ ├─configs │ ├─configs │ │ ├─controllers │ ├─controllers │ │ ├─models │ ├─models │ │ └─views │ └─views │ │ ├─helpers │ ├─helpers │ │ └─scripts │ └─scripts │ ├─library ├─library │ ├─resource ├─public │ └─public └─tests └─testing ├─application ├─application └─library └─library
  6. 6. Zend_Front_Controller – 插件 • routeStartup DB 、Cache、Log 等各组件的初始化、自定义路由 • routeShutdown 权限控制(module/controller/action)、载入特定资源 • dispatchLoopStartup 模板选择 • preDispatch 多次调用。更改 Action 执行顺序。 • postDispatch 多次调用。Action Response 已知,渲染视图。 • dispatchLoopShutdown 收尾工作、发送日志(Zend_Wildfire)
  7. 7. Zend_Front_Controller – 路由 • 类型众多: • Static、Regex、Hostname、Rest 、Chain • Route_Chain: • 将多个路由进行组合,1+1>2 • 不同的路由可指向同一个Action • 方便网站升级,有利于 SEO
  8. 8. Zend_Action_Controller 瘦!
  9. 9. Zend_Application • 一切皆为资源(Resource),尽量延迟加载 • 高度可定制化 • 资源依赖 class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initXYZ() { $this->bootstrap('Cachemanager'); $cacheManager = $this->getResource('Cachemanager'); // doSomthing ... return $xyz; } }
  10. 10. Zend_View & Zend_Layout • 尽量通过 Zend_View_Interface 来使用模板系统 • 灵活使用视图助手(View Helper) • 占位符类:HeadScript、HeadLink、HeadMeta、HeadTitle • 区域助手:Partial、PartialLoop • 使用 Zend_Layout 解决网站页面整体结构问题 • 避免直接使用 Zend_Form 渲染页面 • Zend_Form_Decorator_ViewScript
  11. 11. Model
  12. 12. 分层架构 界面层 • 解释命令、显示信息(比如 MVC 中 Controller、View) 服务层 • 定义软件功能,协调领域对象。小型项目可同领域层合并 领域层 • 系统核心:负责业务概念、业务状况以及业务觃则 基础结构层 • 提供基础的技术支持:消息发送、领域持久化、事务管理等 原则:每层都高内聚,同上层松耦合,且只依赖于下层。
  13. 13. 服务层 • 定义软件功能 • 外观上,易用的应用程序的 API;内部上,协调领域逻辑。 • 最小化的服务层是对某一领域逻辑的简单封装 • 常见应用 • CURD 与缓存(Zend_Cache) • 应用程序逻辑(Zend_Mail、Zend_Log) • 认证与授权(Zend_Auth、Zend_Acl) • 数据的过滤与校验(Zend_Form、Zend_Filter、Zend_Validate)
  14. 14. 领域层 • 领域模型应该是一个只关注自身业务的类 • 现实的折衷 • class XXX extends Zend_Db_Table • class YYY extends Doctrine_Record
  15. 15. 基础架构层/数据源层 • 表数据入口(Table Data Gateway,Zend_Db_Table) • 数据表访问入口,每个实例处理所有行 • 行数据入口(Table Data Gateway,Zend_Db_Table_Row) • 单条记录入口,每个实例代表一行 • 活动记录(Active Record,Doctrine_Record) • 跟行数据入口相似,但增加了领域逻辑 • 数据映射器(Data Mapper,Doctrine 2) • 独立的对象与数据持久层的映射
  16. 16. /** * @Entity * @Table(name="users") Doctrine 2 简介 * @HasLifecycleCallbacks */ class User { /** • Object-Relational Mapper * @Id * @Column(type="integer") */ • 支持基本映射 protected $id; • 支持关联映射 /** @Column(type="integer") */ protected $created; • Entity Manager /** *@OneToOne(targetEntity="Address") • 工作单元(Unit of Work) */ protected $address; • 后写事务(Transactional write-behind) /** @PrePersist */ public function onPrePersist() • Event System { $this->created = time(); } }
  17. 17. 怎么获取帮助 • 官方手册 • Quick Start、Getting Started with XXX、Reference Guard • 博客、社区、邮件列表 • PHP Developer / Planet PHP、 Community Wiki、Mailing Lists • Matthew Weier(Project Leader)、Proposals(Requirements、Theory) • 幻灯片、视频、图书 • Slide Share、Zend Casts、 Webinars、 Podcasts • Zend Framework 1.8 Web Application Development • Google
  18. 18. Questions ?

×