我之所以這麼喜歡Zend Framework的關係,
其中一項就是它可以幫你很簡單的實現MVC的架構,
所以今天的任務就是要建立一個以MVC為架構的基本網頁。

首先當然要先建立一個測試用的資料庫,
因此我簡單的建立了一個名為Employee的資料表來進行展示,
該資料表如下:

很簡單的資料表吧,就三個欄位而已,
這我想我就應該不用多做解釋了,
只是拿來存放員工姓名與年紀資料而已。

好了,有了資料之後就能開始建立Model了,
首先在src\Application\下建了一個Model的資料夾,
並分別建立其ValueObject和Model的類別檔,
我先建立一個ValueObjec(src\Application\Model\Employee.php)給大家看:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
namespace Application\Model;class Employee
{public $emp_id;public $emp_name;public $emp_age;public function exchangeArray($data){$this->emp_id = (isset($data["emp_id"]))?$data["emp_id"]:null;$this->emp_name = (isset($data["emp_name"]))?$data["emp_name"]:null;$this->emp_age = (isset($data["emp_age"]))?$data["emp_age"]:null;}
}

這段ValueObject的程式碼應該沒有太大的問題,
唯一你會覺得怪怪的應該就是那個exchangeArray,
那個其實是要給之後Model用的方法,
所以你可以先暫時不理他,只要知道他的任務是用來為資料用的。

完成ValueObject之後,我們就可以開始介入建立一個新的Model,
所以建立一個新的Model(src\Application\Model\EmployeeTable.php):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
namespace Application\Model;use Zend\Db\Adapter\Adapter;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\TableGateway\AbstractTableGateway;class EmployeeTable extends AbstractTableGateway
{protected $table = "Employee";public function __construct(Adapter $adapter){$this->adapter = $adapter;$this->resultSetPrototype = new ResultSet();$this->resultSetPrototype->setArrayObjectPrototype(new Employee());$this->initialize();}public function fetchAll(){$resultSet = $this->select();return $resultSet;}public function getEmployee($id){$id = (int)$id;$rowSet = $this->select(array("emp_id"=>$id));$row = $rowSet->current();return $row;}public function saveEmployee(Employee $employee){$data = array("emp_name"=>$employee->emp_name,"emp_age"=>$employee->emp_age);$this->insert($data);}public function deleteEmployee($id){$this->delete(array("emp_id"=>$id));}}

你有沒有看到建構函數時會執行setArrayObjectPrototype這個方法,
這時候裡面new了一個Employee作為其參數,
目的就是要將吐回來的資訊用ValueObject進行包裝的動作,
在這個Model中我們時做了幾個搜尋,新增,刪除的方法,
在今天我們只會用到fetchAll這個方法來取出所有資料,
若是有興趣的人可以自己參考我其他寫的資料操作方法。

Model完成後,就可以在Controller去嘗試取出資料,
我們拿出之前所寫好的IndexController來做一個小的展示,
其路徑放在 src\Application\Controller\IndexController.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
namespace Application\Controller;use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;class IndexController extends AbstractActionController
{protected $employeeTable;public function indexAction(){$serviceManager = $this->getServiceLocator();$this->employeeTable = $serviceManager->get("Application\Model\EmployeeTable");$employees = $this->employeeTable->fetchAll();return new ViewModel(array("employees"=>$employees));}public function addAction(){return new ViewModel();}
}

你可以看到我在indexAction的方法中,
先用ServiceManager把Model給載入進來,
接下來就可以使用背實作出來的Model,
透過fetchAll的方法來將資料庫所有員工資料取出,
最後由ViewModel來將資料交給View來進行呈現。

好啦,最後我們只要將View給實作出來就好,
這個應該是整段裡面最簡單的一環,
所以我就直接將code貼出來給大家看,
該View放在 src\view\application\index\index.phtml。

1
2
3
foreach ($employees as $employee)
{printf("<li>NAME: %s, AGE: %d</li>", $employee->emp_name, $employee->emp_age); }

最後呈現的成果如下圖:

转载于:https://www.cnblogs.com/xuyaoxiang/archive/2013/04/24/3039781.html

ZF2系列 – Zend Framework 2 MVC實作 (Part 3)相关推荐

  1. php zend mvc 配置,理解Zend Framework 的MVC模式_PHP教程

    到底啥是Zend Framework MVC设计模式? MVC (Model-View-Controller)模式,即模型-试图-控制器模式,其核心思想是将整个程序代码分成相对独立而又能协同工作的3个 ...

  2. 扩展 ZF2 Redis Zend Framework 2 Redis Extend - key正则

    随着业务的进展,现在需要直接操作Redis 数据! 其中就需要获取指定前缀的key,就好像操作mysql一样,需要获取指定记录段! ZF2强大的支持了redis缓存方式,但是当我运用ZF2 redis ...

  3. ASP.NET MVC 5 實作 GridView 分頁

    本文用 ASP.NET MVC 5 實作一個 GridView,功能包括: 分頁(paging).關鍵字過濾(filtering).排序(sorting).AJAX 非同步執行,外觀上亦支援 Resp ...

  4. Zend Framework 入门教程(简体中文版)

    Zend Framework 入门教程(简体中文版) Getting Started With the Zend Framework Author:Rob Allen, www.akrabat.com ...

  5. Zend Framework入门教程

    转战了各个Blog平台,发现还是落户到csdn上吧,以后吐槽在新浪,发长文在csdn,整理链接在Baidu Hi 在大四的时候接下的实验室网站,网站是上三届的吴师兄写的,主要采用的是LAMP,其中PH ...

  6. php顶级框架,诗意的边缘:PHP顶级框架Zend Framework开发实战

    <诗意的边缘:PHP顶级框架Zend Framework开发实战> 前 言 第1部分 开发前的准备工作 第1章 创建开发环境2 1.1 配置开发环境3 1.1.1 Windows系统下XA ...

  7. 在ZF2中实现Zend Framework的Controller init/preDispatch/postDispatch方法

    在Zend Framework 1中,Controller里约定了一些默认的方法来实现钩子,包括 Controller初始化时调用的init()方法 派遣前的方法preDispatch() 派遣后的方 ...

  8. 专业级智能PHP IDE Zend Studio教程:Zend Framework 2集成(1/3)——创建和部署新的ZF2项目

    Zend Studio是新一代的专业级智能PHP IDE(应用程序开发环境).它旨在帮助开发人员提高工作效率,创造出高品质的PHP应用程序!它包含了PHP开发所必须的部件,通过一整套的编辑.调试.分析 ...

  9. ZF2入门:Windows环境下从零开始Zend Framework 2.0 (ZF2)环境搭建

    一.Apache + MySQL + PHP5.4环境搭建 其实PHP5.4已经集成了Web服务器,但是为了更加简化,我在这里选择了集成安装包XAMPP来搭建环境. 安装 xampp-win32-1. ...

最新文章

  1. 模拟红绿灯交替指示编程思路
  2. 浓烟滚滚!某市联通集体断网,谁的锅?
  3. 老李分享:Android性能优化之内存泄漏 3
  4. Java学习笔记_字符串/静态static
  5. CreateThread线程函数
  6. 论文解读丨文档结构分析
  7. 【Docker】Docker 安装node-exporter prometheus pushgateway 页面显示Down
  8. 程序员都该懂的 UML 规范!
  9. 在 github 上建立 pages 的过程
  10. saga中的saga(A Saga on Sagas) - balavatasky - 博客园
  11. Python 奇淫技巧 -- 利用pandas读取xml转换为excel
  12. phpwind9.0 read.php 修改,phpwind 9.0后台执行任意php代码
  13. Echarts 三维地图
  14. 理论篇3:深度学习之----Momentum优化器(2)
  15. 【论文笔记 | TGRS 2021】多内容互补网络:MCCNet
  16. Google Hacking基本用法
  17. 【AI视野·今日CV 计算机视觉论文速览 第236期】Tue, 28 Sep 2021
  18. FreeRTOS学习笔记【二】——FreeRTOS 移植
  19. x86架构手机_为什么苹果放弃的是x86,而不是ARM?
  20. DHTML---HTML5

热门文章

  1. ideal pom文件安装到maven库中_java学习之web基础(14)Maven基础学习
  2. a标签跳到另一个页面指定选项卡_HTML常用标签
  3. voms下的反射大师_VOMS旧版
  4. 【渝粤教育】电大中专成本会计_1作业 题库
  5. 【渝粤题库】广东开放大学 互联网营销概论 形成性考核
  6. 【渝粤题库】国家开放大学2021春1032成本管理题目
  7. php mysql_query预处理,php+mysqli使用预处理技术进行数据库查询的方法
  8. linux 编译src.rpm,CentOS6.5下编译src.rpm包的内核
  9. 通信中的频谱效率与能量效率
  10. php调用pdf2html,php html2pdf