Suche senden
Hochladen
Patterns in Zend Framework
•
5 gefällt mir
•
1,347 views
Jace Ju
Folgen
Technologie
Melden
Teilen
Melden
Teilen
1 von 23
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
常見設計模式介紹
常見設計模式介紹
Jace Ju
advanced introduction to codeigniter
advanced introduction to codeigniter
Bo-Yi Wu
jsp基础速成精华讲解
jsp基础速成精华讲解
wensheng wei
JQuery Plugin
JQuery Plugin
Jason Wang
Discuz技术交流
Discuz技术交流
pigso
PHPUnit 入門介紹
PHPUnit 入門介紹
Jace Ju
Maintainable PHP Source Code
Maintainable PHP Source Code
Bo-Yi Wu
jQuery源码学习
jQuery源码学习
fangdeng
Empfohlen
常見設計模式介紹
常見設計模式介紹
Jace Ju
advanced introduction to codeigniter
advanced introduction to codeigniter
Bo-Yi Wu
jsp基础速成精华讲解
jsp基础速成精华讲解
wensheng wei
JQuery Plugin
JQuery Plugin
Jason Wang
Discuz技术交流
Discuz技术交流
pigso
PHPUnit 入門介紹
PHPUnit 入門介紹
Jace Ju
Maintainable PHP Source Code
Maintainable PHP Source Code
Bo-Yi Wu
jQuery源码学习
jQuery源码学习
fangdeng
Node way
Node way
Ethan Zhang
基于原型的JavaScript面向对象编程
基于原型的JavaScript面向对象编程
zhangdaiping
[DCTPE2010] Drupal 模組開發入門
[DCTPE2010] Drupal 模組開發入門
Drupal Taiwan
使用 Eloquent ORM
使用 Eloquent ORM
Shengyou Fan
LazyRecord: The Fast ORM for PHP
LazyRecord: The Fast ORM for PHP
Lin Yo-An
網頁設計 - 資料庫存取
網頁設計 - 資料庫存取
Vincent Chi
用Jquery实现拖拽层
用Jquery实现拖拽层
yiditushe
深入了解Memcache
深入了解Memcache
zubin Jiang
OpenWebSchool - 02 - PHP Part I
OpenWebSchool - 02 - PHP Part I
Hung-yu Lin
PHPUnit + Xdebug 单元测试技术
PHPUnit + Xdebug 单元测试技术
hoopchina
第十期 阿甘Javascript开发思想(入门篇)
第十期 阿甘Javascript开发思想(入门篇)
9scss
Migrations 與 Schema操作
Migrations 與 Schema操作
Shengyou Fan
Drupal 版型設計 - 瞭解版型程式
Drupal 版型設計 - 瞭解版型程式
Chris Wu
旺铺前端设计和实现
旺铺前端设计和实现
hua qiu
Sina App Quick Guide 1
Sina App Quick Guide 1
guestf4aed35
Web Caching Architecture and Design
Web Caching Architecture and Design
Ho Kim
Mongodb
Mongodb
bj
深入淺出 Web 容器 - Tomcat 原始碼分析
深入淺出 Web 容器 - Tomcat 原始碼分析
Justin Lin
Mybatis学习培训
Mybatis学习培训
flynofry
Bash编程之变量高级篇
Bash编程之变量高级篇
Zhiyao Pan
CRUD 綜合運用
CRUD 綜合運用
Shengyou Fan
Backbone js and requirejs
Backbone js and requirejs
Chi-wen Sun
Weitere ähnliche Inhalte
Was ist angesagt?
Node way
Node way
Ethan Zhang
基于原型的JavaScript面向对象编程
基于原型的JavaScript面向对象编程
zhangdaiping
[DCTPE2010] Drupal 模組開發入門
[DCTPE2010] Drupal 模組開發入門
Drupal Taiwan
使用 Eloquent ORM
使用 Eloquent ORM
Shengyou Fan
LazyRecord: The Fast ORM for PHP
LazyRecord: The Fast ORM for PHP
Lin Yo-An
網頁設計 - 資料庫存取
網頁設計 - 資料庫存取
Vincent Chi
用Jquery实现拖拽层
用Jquery实现拖拽层
yiditushe
深入了解Memcache
深入了解Memcache
zubin Jiang
OpenWebSchool - 02 - PHP Part I
OpenWebSchool - 02 - PHP Part I
Hung-yu Lin
PHPUnit + Xdebug 单元测试技术
PHPUnit + Xdebug 单元测试技术
hoopchina
第十期 阿甘Javascript开发思想(入门篇)
第十期 阿甘Javascript开发思想(入门篇)
9scss
Migrations 與 Schema操作
Migrations 與 Schema操作
Shengyou Fan
Drupal 版型設計 - 瞭解版型程式
Drupal 版型設計 - 瞭解版型程式
Chris Wu
旺铺前端设计和实现
旺铺前端设计和实现
hua qiu
Sina App Quick Guide 1
Sina App Quick Guide 1
guestf4aed35
Web Caching Architecture and Design
Web Caching Architecture and Design
Ho Kim
Mongodb
Mongodb
bj
深入淺出 Web 容器 - Tomcat 原始碼分析
深入淺出 Web 容器 - Tomcat 原始碼分析
Justin Lin
Mybatis学习培训
Mybatis学习培训
flynofry
Bash编程之变量高级篇
Bash编程之变量高级篇
Zhiyao Pan
Was ist angesagt?
(20)
Node way
Node way
基于原型的JavaScript面向对象编程
基于原型的JavaScript面向对象编程
[DCTPE2010] Drupal 模組開發入門
[DCTPE2010] Drupal 模組開發入門
使用 Eloquent ORM
使用 Eloquent ORM
LazyRecord: The Fast ORM for PHP
LazyRecord: The Fast ORM for PHP
網頁設計 - 資料庫存取
網頁設計 - 資料庫存取
用Jquery实现拖拽层
用Jquery实现拖拽层
深入了解Memcache
深入了解Memcache
OpenWebSchool - 02 - PHP Part I
OpenWebSchool - 02 - PHP Part I
PHPUnit + Xdebug 单元测试技术
PHPUnit + Xdebug 单元测试技术
第十期 阿甘Javascript开发思想(入门篇)
第十期 阿甘Javascript开发思想(入门篇)
Migrations 與 Schema操作
Migrations 與 Schema操作
Drupal 版型設計 - 瞭解版型程式
Drupal 版型設計 - 瞭解版型程式
旺铺前端设计和实现
旺铺前端设计和实现
Sina App Quick Guide 1
Sina App Quick Guide 1
Web Caching Architecture and Design
Web Caching Architecture and Design
Mongodb
Mongodb
深入淺出 Web 容器 - Tomcat 原始碼分析
深入淺出 Web 容器 - Tomcat 原始碼分析
Mybatis学习培训
Mybatis学习培训
Bash编程之变量高级篇
Bash编程之变量高级篇
Ähnlich wie Patterns in Zend Framework
CRUD 綜合運用
CRUD 綜合運用
Shengyou Fan
Backbone js and requirejs
Backbone js and requirejs
Chi-wen Sun
Free Marker中文文档
Free Marker中文文档
yiditushe
Introduction to CodeIgniter
Introduction to CodeIgniter
Chun-Kai Wang
PHP & MySQL 教學
PHP & MySQL 教學
Bo-Yi Wu
CRUD 綜合運用
CRUD 綜合運用
Shengyou Fan
Model 設定與 Seeding
Model 設定與 Seeding
Shengyou Fan
Coding guideline
Coding guideline
斯理 衛
【 I Love Joomla 】- Joomla!佈景製作教學
【 I Love Joomla 】- Joomla!佈景製作教學
ilovejoomla
Moodle 项目帮助手册:程序编写准则
Moodle 项目帮助手册:程序编写准则
YUCHENG HU
Keep your code clean
Keep your code clean
macrochen
jQuery底层架构
jQuery底层架构
fangdeng
Java华为面试题
Java华为面试题
yiditushe
Introduction to MVC of CodeIgniter 2.1.x
Introduction to MVC of CodeIgniter 2.1.x
Bo-Yi Wu
React vs Flux
React vs Flux
LC2009
I Love Joomla! 佈景製作教學 0212
I Love Joomla! 佈景製作教學 0212
Asika Simon
PHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming Skills
Ho Kim
nodejs开发web站点
nodejs开发web站点
xiaojueqq12345
lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫
建興 王
Node.js开发体验
Node.js开发体验
QLeelulu
Ähnlich wie Patterns in Zend Framework
(20)
CRUD 綜合運用
CRUD 綜合運用
Backbone js and requirejs
Backbone js and requirejs
Free Marker中文文档
Free Marker中文文档
Introduction to CodeIgniter
Introduction to CodeIgniter
PHP & MySQL 教學
PHP & MySQL 教學
CRUD 綜合運用
CRUD 綜合運用
Model 設定與 Seeding
Model 設定與 Seeding
Coding guideline
Coding guideline
【 I Love Joomla 】- Joomla!佈景製作教學
【 I Love Joomla 】- Joomla!佈景製作教學
Moodle 项目帮助手册:程序编写准则
Moodle 项目帮助手册:程序编写准则
Keep your code clean
Keep your code clean
jQuery底层架构
jQuery底层架构
Java华为面试题
Java华为面试题
Introduction to MVC of CodeIgniter 2.1.x
Introduction to MVC of CodeIgniter 2.1.x
React vs Flux
React vs Flux
I Love Joomla! 佈景製作教學 0212
I Love Joomla! 佈景製作教學 0212
PHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming Skills
nodejs开发web站点
nodejs开发web站点
lwdba – 開放原始碼的輕量級資料庫存取程式庫
lwdba – 開放原始碼的輕量級資料庫存取程式庫
Node.js开发体验
Node.js开发体验
Mehr von Jace Ju
What happens in laravel 4 bootstraping
What happens in laravel 4 bootstraping
Jace Ju
Advanced php testing in action
Advanced php testing in action
Jace Ju
Beginning PHPUnit
Beginning PHPUnit
Jace Ju
深入淺出 MVC
深入淺出 MVC
Jace Ju
如何打造 WebMVC Framework - 基礎概念篇
如何打造 WebMVC Framework - 基礎概念篇
Jace Ju
Refactoring with Patterns in PHP
Refactoring with Patterns in PHP
Jace Ju
Patterns in Library Design (套件設計裡的模式)
Patterns in Library Design (套件設計裡的模式)
Jace Ju
購物車程式架構簡介
購物車程式架構簡介
Jace Ju
Head First Zend Framework - Part 1 Project & Application
Head First Zend Framework - Part 1 Project & Application
Jace Ju
Web Refactoring
Web Refactoring
Jace Ju
jQuery 實戰經驗講座
jQuery 實戰經驗講座
Jace Ju
CSS 排版 - 基礎觀念篇
CSS 排版 - 基礎觀念篇
Jace Ju
PHP 防駭 - 基礎觀念篇
PHP 防駭 - 基礎觀念篇
Jace Ju
PHP 物件導向 - 基礎觀念篇
PHP 物件導向 - 基礎觀念篇
Jace Ju
Mehr von Jace Ju
(14)
What happens in laravel 4 bootstraping
What happens in laravel 4 bootstraping
Advanced php testing in action
Advanced php testing in action
Beginning PHPUnit
Beginning PHPUnit
深入淺出 MVC
深入淺出 MVC
如何打造 WebMVC Framework - 基礎概念篇
如何打造 WebMVC Framework - 基礎概念篇
Refactoring with Patterns in PHP
Refactoring with Patterns in PHP
Patterns in Library Design (套件設計裡的模式)
Patterns in Library Design (套件設計裡的模式)
購物車程式架構簡介
購物車程式架構簡介
Head First Zend Framework - Part 1 Project & Application
Head First Zend Framework - Part 1 Project & Application
Web Refactoring
Web Refactoring
jQuery 實戰經驗講座
jQuery 實戰經驗講座
CSS 排版 - 基礎觀念篇
CSS 排版 - 基礎觀念篇
PHP 防駭 - 基礎觀念篇
PHP 防駭 - 基礎觀念篇
PHP 物件導向 - 基礎觀念篇
PHP 物件導向 - 基礎觀念篇
Patterns in Zend Framework
1.
Patterns in Zend
Framework Jace Ju
2.
Patterns
Simple Factory Singleton Adapter Strategy Composite Chain of Responsibility
3.
Simple Factory
概念 不讓程序依賴類別名稱。 利用設定來動態建立物件。
4.
範例: Zend_Db::factory()
factory() 提供參數以建立不同的 Db Adapter 。 應用程式可以透過設定來配置 factory 參數。 $db = Zend_Db::factory('pdo_mysql', array( 'host' => '127.0.0.1', 'username' => 'www', 'password' => '123456', 'dbname' => 'test', )); echo get_class($db), "n"; // Zend_Db_Adapter_Pdo_Mysql $db = Zend_Db::factory('mysqli', array( 'host' => '127.0.0.1', 'username' => 'www', 'password' => '123456', 'dbname' => 'test', )); echo get_class($db), "n"; // Zend_Db_Adapter_Mysqli
5.
Zend_Db::factory()
6.
Singleton
概念 整個系統只需要單一個物件實體。 通常用以取代全域變數。
7.
範例: Zend_Controller_Front
整個應用程式只需要一個 Front Controller 。 Application Resource 及 Controller Plugin 可以 透過 getInstance 方法來取得 Front Controller 的 唯一實體。 $frontController = Zend_Controller_Front::getInstance();
8.
Adapter
概念 將已實作功能但介面不同的類別庫或函式庫整合進來。 通常用於整合第三方套件。
9.
範例: Zend_Db_Adapter
轉接微軟寫好的 Sqlsrv 函式庫。 class Zend_Db_Adapter_Sqlsrv extends Zend_Db_Adapter_Abstract { protected function _connect() { // ... $this->_connection = sqlsrv_connect(...); } public function closeConnection() { // ... sqlsrv_close($this->_connection); // ... } } $dbAdapter = new Zend_Db_Adapter_Sqlsrv(...); print_r($dbAdapter->listTables()); $dbAdapter->closeConnection();
10.
Zend_Db_Adapter
11.
Strategy
概念 採用不同的策略來處理相同的問題。 依照情境的不同來選擇策略。
12.
範例: Zend_Cache
Zend_Cache 提供不同的 Backend 儲存方式。 $cache = new Zend_Cache_Core(); $cache->setBackend(new Zend_Cache_Backend_File(array( 'cache_dir' => dirname(__FILE__), ))); $data = $cache->load('test'); if (!$data) { $data = 'Cached data'; $cache->save($data, 'test'); } print_r($data);
13.
Zend_Cache
14.
Composite
概念 對群體與個體一視同仁。 通常用於樹狀結構。
15.
範例: Zend_Filter
Zend_Filter 可以加入其他 Filter 。 Zend_Filter 為 Composite ,其他實作 Zend_Filter_Interface 的子類別為 Leaf 。 $unfiltered = 'ab#12.3$%cde'; $filter = new Zend_Filter(); $value = $filter->filter($unfiltered); echo $value, "n"; // ab#12.3$%cde $filter->addFilter(new Zend_Filter_Alnum()); $value = $filter->filter($unfiltered); echo $value, "n"; // ab123cde $filter->addFilter(new Zend_Filter_Digits()); $value = $filter->filter($unfiltered); echo $value, "n"; // 123
16.
Zend_Filter
17.
範例: Zend_Config
Composite 的變形,Zend_Config 本身就是 Leaf 及 Composite。 $config = new Zend_Config_Ini(dirname(__FILE__) . '/config.ini'); print_r($config->toArray()); // Composite foreach ($config as $name => $section) { echo $name, " ", get_class($section), "n"; print_r($section->toArray()); // Composite } $dbConfig = $config->production->db; echo get_class($dbConfig), "n"; print_r($dbConfig->toArray()); // Leaf
18.
Chain of Responsibility
概念 定義一連串的處理機制來處理某個需求。 在找到符合的規則後就離開。 可以用來取代 if ... elseif 。
19.
範例: Zend_Controller_Router
只處理符合的 Url 。 $router = new Zend_Controller_Router_Rewrite(); $requests = array( new Zend_Controller_Request_Http('http://localhost/login'), new Zend_Controller_Request_Http('http://localhost/article/123'), ); $loginRoute = new Zend_Controller_Router_Route_Static('login', array( 'controller' => 'user', 'action' => 'login', )); $articleRoute = new Zend_Controller_Router_Route_Regex('article/(d+)', array( 'controller' => 'blog', 'action' => 'article', ), array( 1 => 'id', )); $router->addRoute('login', $loginRoute); $router->addRoute('article', $articleRoute); foreach ($requests as $request) { $router->route($request); print_r($request->getParams()); }
20.
Zend_Controller_Router
21.
其他
Patterns 和物件導向設計原則讓 Zend Framewrork 具有強大的擴充性。 Zend Framework 還實作了許多企業級的 Patterns ,例如: Table Data Gateway 、 Front Controller 、 Registry ...
22.
總結
在設計類別時,不一定要先考慮 Patterns 。 不必拘泥於 Patterns 的形。 一個類別體系不一定只有一種 Pattern 。 Patterns 之間可以互相合作。
23.
謝謝
Jetzt herunterladen