![zendframework官方入门手册_第1页](http://file4.renrendoc.com/view/c377939368313550e1b7155248a9a491/c377939368313550e1b7155248a9a4911.gif)
![zendframework官方入门手册_第2页](http://file4.renrendoc.com/view/c377939368313550e1b7155248a9a491/c377939368313550e1b7155248a9a4912.gif)
![zendframework官方入门手册_第3页](http://file4.renrendoc.com/view/c377939368313550e1b7155248a9a491/c377939368313550e1b7155248a9a4913.gif)
![zendframework官方入门手册_第4页](http://file4.renrendoc.com/view/c377939368313550e1b7155248a9a491/c377939368313550e1b7155248a9a4914.gif)
![zendframework官方入门手册_第5页](http://file4.renrendoc.com/view/c377939368313550e1b7155248a9a491/c377939368313550e1b7155248a9a4915.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、创建项目为了创建项目,你必须首先下载并解压缩Zend框架。安装Zend框架屮相处了一个完整的Zend框架的PHP堆栈最简单的方法是通过安装Zend服务器。Zend服务器有本地安装的MacOSX,Windows中的FedoraCore和Ubuntu,以及作为一个普遍的兼容大多数Linux发行版的安装包。框架文件后,您已经安装了Zend服务器,可根据发现的/usr/本地/ZEND/MacOSX和Linux上的份额/ZendFramework,和C:ProgramFiles文件的ZendZendServer共享IZendFrameworkWindows上。已配置的include_path将包括Zen
2、d框架。或者,您可以下载最新版本的Zend框架和提取的内容,使你这样做了说明。或者,您可以将路径添加到库/归档文件的子目录到你的php.ini的设置。这就是它!Zend框架正在安装,并准备使用。创建您的项目q注:ZF在您的ZendFramework安装的命令行工具是一个bin/子目录中,包含脚本zf.sh和zf.bat,分别为基于UNIX和基于Windows的用户。使这个脚本的绝对路径的说明。无论你看到的命令引用ZF,请替换脚本的绝对路径。在类Unix系统,你可能想使用shell的别名功能:如果你有问题设立的ZF命令行工具,请参阅到的别名zfsh=路径/ZendFramework/BIN/zf
3、sh。手册。打开一个终端(在Windows中,开始-运行,然后使用CMD)。导航到一个目录,您想启动一个项目。然后,使用相应的脚本路径,并执行下列之一:%ZF创建项目快速启动运行此命令将创建您的网站的基本结构,包括你最初的控制器和视图。树看起来如下:快速入门|-应用|-Bootstrap.php|-CONFIGS|-的application.ini|-控制器|一ErrorController.php|一IndexController.php|-模型10.|-意见11.II-佣工12.I-脚本13.II-错误14.|I-error.phtml15.I-指数16.I-index.phtml17.I
4、-库18.I-公共19.II-htaccess的。20.I-的index.php21.-测试22.I-应用23.I-bootstrap.php24.I-库25.I-bootstrap.php26.一phpunit.xml如果你还没有加入到你的include_pathZend框架,在这一点上,我们建议或者复制或libg.a连结到你的库/目录。在任何情况下,你想要么递归复制或符号的图书馆/Zend/你的ZendFramework安装到您的项目库/目录的目录。在类Unix系统,这将类似于下列之一:#符号链接:%光盘库;LN-S路径/ZendFramework/图书馆/Zend的。3.#复制:光盘库;
5、CP-R路径/ZendFramework/图书馆/Zend的。在Windows系统上,它可能是最容易做,从资源管理器。现在,该项目创建,开始理解的主要构件是引导,配置,动作控制器和意见。的引导勺您的自举类定义什么样的资源和组件初始化。默认情况下,初始化Zend框架的前端控制器它使用的应用程序控制器默认的目录中寻找行动控制器(稍后)。这个类看起来如下:/应用/Bootstrap.php的2.类的Bootstrap延伸Zend_Application_Bootstrap_Bootstrap正如你可以看到,没有多少是必要的开始。虽然Zend框架本身是configurationless的,你经常需要配
6、置您的应用程序。默认配置是摆在应用/CONFIGS/的application.ini,并包含一些基本的指令设置你的PHP环境(例如,把错误报告和关闭),表明引导类路径(以及它的类名),你的动作控制器的路径。它看起来如下:;应用/CONFIGS的/的application.ini2.生产phpSettings。display_startup_errors=0phpSettings。的display_errors=0的includepaths。库APPLICATION_PATH“/。/库弓丨导路径=APPLICATION_PATH、/Bootstrap.php的引导。类=引导appnamespac
7、e=应用程序resources.frontController。controllerDirectory=APPLICATION_PATH“/控制器resources.frontController.params。displayExceptions=012.分期:生产14.测试:生产phpSettings。display_startup_errors=1phpSettings。的display_errors=118.发展:生产phpSettings。display_startup_errors=1phpSettings。的display_errors=1有关此文件应注意的几件事情。首先,使用IN
8、I风格的配置时,您可以参考常数直接和扩大;APPLICATION_PATH实际上是一个常数。此外,请注意,有几个部分定义:生产,分期,测试和开发,。后者继承从生产”环境设置。这是一个有用的方式来组织配置,以确保适当的设置是在应用开发的每个阶段提供。动作控制器F你的应用程序的行动控制器包含您的应用程序的工作流程,并做您的请求映射到适当的模式和意见的工作。动作控制器应在“行动”的结尾有一个或多个方法,这些方法可能会被要求通过网络。默认情况下,ZendFramework的网址遵循模式/控制器/行动,“控制器”地图行动控制器的名称(减去“控制器”后缀)和“行动”映射到一个动作方法(减行动”的后缀)。通
9、常情况下,你总是需要一个Indexcontroller,这是一个备用的控制器,这也是该网站的主页,一个Errorcontroller,这是用来显示HTTP404错误(控制器或动作没有找到)和HTTP500错误的东西,如(应用程序错误)。..9.1011121314..9.1011121314151617181920默认Indexcontroller如下:/&用/控制器/IndexController.php的,类IndexControllerZend_Controller_Action的延伸公共初始化函数()/*初始化动作控制器/公共
10、功能indexAction()/操作的主体和默认Errorcontroller如下:/应用/控制器/ErrorController.php的,类ErrorcontrollerZend_Controller_Action的延伸公共的功能errorAction()$错误=$一_getParam(“error_handler);开关(错误-类型)情况ZendControllerPluginErrorHandler:EXCEPTIONNOROUTE情况ZendControllerPluginErrorHandler:EXCEPTIONNOCONTROLLER情况ZendControllerPlugin
11、ErrorHandler:EXCEPTIONNOACTION/404错误-控制器或行动没有发现-的GetResponse()-setHttpResponseCode(404);$这个-视图-消息=页面没有找到;打破;默认情况下:/应用程序错误21222324252627282..9.1011121314151617-的GetResponse()-setHttpResponseCode(500);-视图-消息=应用程序错误;打破;视图-例外=$错误-异常;视图-请求=$失误-请求;你会注意到:(1)的Indexcontroller包含没有真正的代码,和(2)Erro
12、rcontroller参考“意见”属性。这导致很好地融入我们的下一个主题。写在普通的旧的PHPZend框架的意见。查看脚本放置在应用程序意见脚本/,在那里他们进一步分类使用的控制器名称。在我们的例子中,我们有Indexcontroller和Errorcontroller,因此,我们有相应的索弓/错误/在我们的视图脚本目录的子目录。这些子目录内,你就会发现和创建视图脚本对应每个控制器的行动暴露在默认情况下,因此我们有视图脚本索弓/的index.phtml和错误/error.phtml。视图脚本可能包含你想要的任何标记,并使用PHP开始标记v?结束标记插入PHP指令。以下是我们的默认安装指数/in
13、dex.phtml视图脚本为:!-应用程序/意见/脚本/指数/index.phtml-STYLE答:链接答:访问颜色:#0398CA跨越#ZF名称:#91BE3F格#欢迎颜色:#FFFFFF的背景图像:URL(HTTP/,/像/bkg_header.jpg)的;宽度:600px的;高度:400像素;边界:2px的固体斗444444;溢出:隐臧;文本对齐:中心;TOC o 1-5 h z25.格#更多信息背景图像:网址(HTTP:/图像/bkg_body的-bottom.gif);身高:100%;31./STYLEdiv的id=欢迎欢迎跨度ID=“ZF-名称Zend框架!/SPAN这是你的项目的
14、主要页面2.有用的链接:br/43.的宀href= HYPERLINK /%22%e3%80%89Zend /Zend框架网站|44.ahref= HYPERLINK /manual/en/%22%e3%80%89 /manual/en/Zend框架45.手册/A46./P47./DIV48./DIV49.=span=style=color:rgb(255,0,0);错误/error.pht视图脚本是稍微更有趣,因为它使用一些PHP的条件:DOCTYPEHTML公众“-/W3C/DTDXHTML1.0Strict标准/;“ HYPERLINK /TR/xhtml1/DTD/
15、xhtml1-strict.dtd%e3%80%89 /TR/xhtml1/DTD/xhtml1-strict.dtdHTML的xmlns=“HTTP:/ HYPERLINK /1999/xhtml%e2%80%9c%e3%80%89 /1999/xhtml“.9.101112131415161718192021222324252627282930ZendFramework的默认应用程序/TITLE/HEADBODYH1发生错误PHP?呼应$这个-消息?H3异常信息:/H3Pb邮件:?PHP呼应$这个-例夕卜-GETMESSAGE()?/PH3堆栈跟踪:PRE?PHP呼应$这个一
16、例夕卜一getTraceAsString()?H3请求参数:PRE/HTML创建一个虚拟主机对于这种快速启动的目的,我们将假定您正在使用ApacheWeb服务器。Zend框架与其他Web服务器-包括MicrosoftInternet信息服务器的lighttpd,nginx的,更完美-但大多数开发商应在最低阿帕奇famililar,它提供了一个简单的介绍ZendFramework的目录结构和重写能力。要创建您的虚拟主机,你需要知道你的位置httpd.conf文件,并有可能在其他配置文件位于。一些常见的位置:/etc/httpd的/httpd.conf中(的Fedora,RHEL中,和其他人)/e
17、tc/apache2/httpd.conf(的Debian,Ubuntu和其他)的/usr/本地/ZEND的/etc/httpd.conf文件(*nix的机器上的Zend服务器)C:程序文件Zend的的Apache2conf下(Zend的Windows机器上的服务器)在您的httpd.conf(或在某些系统上的httpd-vhosts.conf),你需要做两件事情。首先,确保NameVirtualHost被定义,通常情况下,你会设置它的值为“80”。二,定义一个虚拟主机:的ServerNamequickstart.localDocumentRoot的路径/快速启动/公共4.SETENVAPPL
18、ICATION_ENV发展6.Directory/path/to/quickstart/publicDirectoryindex的index.php文件设置AllowOverride所有命令允许,拒绝允许从所有/指南引导(视图);$视图=$-的getResource(“视图”);$视图-DOCTYPE(“XHTML1_STRICT);..9.10111213141516171819202122232425现在,我们已经初始化Zend_Layout的设置DOCTYPE,让我们创建我们的网站广泛布局:DOCTYPE()?ZendFramework的快速入门应用程序/TI
19、TLEheadLink()一appendstylesheet(/CSS/global.css)?/HEADdiv的id=头的风格=背景色:#EEEEEE;高度:30像素;div的id=头标志样式浮动:左ZF快速启动应用/DIVdiv的id=标题导航=浮动权|ahref=?PHP的echo$这个-URL(阵列(控制器=留言),默认,真实的)?在线留言/A/DIV/DIV元素,以及保持整个应用程序的轨道。如果你需要添加额外的CSS表,以支持一个单一的行动,你可以这样做,并保证这将是目前在最终渲染的页面。注:边检站立即去“的http:/localhost”,并检查了源。你应该看到你的XHTML头,头
20、,标题,和身体部分。创建一个模型和数据库表在我们开始之前,让我们考虑的东西:这里将这些类的生活,我们将如何找到他们呢?创建默认项目中,我们实例化一个自动加载磁带机。我们可以附加其他的自动装载机,以便它知道在哪里可以找到不同的类。通常情况下,我们希望我们的各种MVC类分组在同一棵树下-在这种情况下,应用程序/-和最经常使用一个共同的前缀。..9.101112131415161718192021222324252627282930Zend_Controller_Front有一个模块,这是个人的迷你应用程序的概念。模块模仿,ZF工具应用/下建立目录结构,并在他们里面所有的
21、类都假定有一个共同的前缀,模块名称开始。应用/本身就是一个模块-“默认”或“应用程序”模块。正因为如此,我们将要为这个目录内的资源设置自动装填。Zend_Application_Module_Autoloader提供所需的各种资源的映射下,以适当的目录模块的功能,以及提供一个标准的命名机制。默认情况下创建类的一个实例,引导对象的初始化过程中,将默认使用您的应用程序引导模块的前缀“应用程序”。正因为如此,我们的模型,表格,表类,将所有与类前缀Application的开始。现在,让我们的考虑是什么使留言板。通常情况下,它们仅仅是注释,时间戳并经常,电子邮件地址的一个条目清单。假设我们存储在数据库中
22、,我们可能还需要一个独特的标识,为每个条目。我们可能会希望能够保存条目,取个别条目,检索所有条目。正因为如此,-个简单的留言模型API可能看起来像这样:/应用程序/模型/Guestbook.php的类Application_Model_Guestbook保护美兀_comment;保护$_created;保护美元_email;保护的_id美元;公共函数_set($名称,值);公共函数_get($名);公共的功能setComment(文本美元);TOC o 1-5 h z公共的功能getComment();公共功能setEmail(电子邮件);公共功能getEmail;公共功能setCreated
23、;getCreated公共函数;公共功能SETID;公共功能的getId();类Application_Model_GuestbookMapper公共函数保存(Application_Model_Guestbook$留言);公共功能找到($ID);公共功能fetchAll;31.一et()和_set()将提供方便的机制,为我们访问个别项目的性质,并代理其他getter和setter。他们也将有助于确保我们的白名单的唯一属性将对象。找到()和fetchAll()提供的能力,以获取一个条目或所有条目,同时保存()节约数据存储的条目。现在,从这里,我们可以开始思考建立数据库。首先,我们需要初始化DB
24、资源。与资源布局和视图,我们可以提供的配置DB资源。我们可以做的ZF配置DB适配器命令:%ZF配置DB适配器适配器=PDO_SQLITE及DBNAME=APPLICATION_PATH“/。/数据/DB/guestbook.db”生产用于生产的DB配置已被写入到应用程序配置文件。5.%ZF配置DB适配器适配器=PDO_SQLITE及DBNAME=APPLICATION_PATH“/数据/DB/留言-testing.db”测试用于生产的DB配置已被写入到应用程序配置文件。10.%ZF配置DB适配器适配器=PDO_SQLITE及DBNAME=APPLICATION_PATH“/数据/DB/留言-d
25、ev.db”发展用于生产的DB配置已被写入到应用程序配置文件。现在,编辑/CONFIGS/的application.ini文件,您的应用程序,在这里你会看到在适当的部分添加以下行。;应用/CONFIGS的/的application.ini2.生产;resources.db。适配器=“PDO_SQLITE”resources.db.params。DBNAME=APPLICATION_PATH“/。/数据/DB/guestbook.db”7.测试:生产;resources.db。适配器=“PDO_SQLITE”resources.db.params。DBNAME=APPLICATION_PATH“
26、/。/数据/DB/留言-testing.db”12131415..9.101112131415161718192021222324252627281.发展:生产resources.db。适配器=“PDO_SQLITE”resources.db.params。DBNAME=APPLICATION_PATH“/。/数据/DB/留言-dev.db”你的最终配置文件应该看起来如下:;应用/CONFIGS的/的application.ini生产phpSettings。display_startup_errors=0phpSettings。的display_errors=0
27、弓丨导路径=APPLICATION_PATH、/Bootstrap.php的”引导。类=引导appnamespace=应用程序resources.frontController。controllerDirectory=APPLICATION_PATH“/控制器resources.frontController.params。displayExceptions=0resources.layout。LayoutPath的=APPLICATION_PATH“/布局/脚本resources.view=resources.db。适配器=“PDO_SQLITEresources.db.params。DBN
28、AME=APPLICATION_PATH“/。/数据/DB/guestbook.db分期:生产测试:生产phpSettings。display_startup_errors=1phpSettings。的display_errors=1resources.db。适配器=“PDO_SQLITEresources.db.params。DBNAME=APPLICATION_PATH“/。/数据/DB/留言-testing.db发展:生产phpSettings。display_startup_errors=1phpSettings。的display_errors=1resources.db。适配器=“P
29、DO_SQLITEresources.db.params。DBNAME=APPLICATION_PATH“/。/数据/DB/留言-dev.db请注意,数据库(S)将在存储数据/DB/创建这些目录,并让他们写世界。在类Unix系统,你可以做如下:MKDIR-P%chmod-R的数据/DB;+RWX数据在Windows中,您将需要在资源管理器中创建的目录,并设置权限,以允许任何人都可以写的目录。在这一点上,我们有一个数据库连接,在我们的例子中,它连接到一个SQLite数据库位于内我们的应用程序数据/目录。所以,让我们设计一个简单的表格,将举行我们的留言簿条目。-脚本/schema.sqlite.s
30、ql的-您将需要加载与此SQZ数据库架构。4.创建表的留言(ID的INTEGERNOTNULL,PRIMARYKEYAUTOINCREMENT的,电子邮件VARCHAR(32)NOTNULL默认“ HYPERLINK mailto:noemail noemail评论文字为NULL,仓U建的DATETIMENOTNULL);11.创建索引身份证留言(“ID”);和,使我们可以有一些工作数据框,让我们创建信息,使我们的应用程序有趣的几行。-脚本/data.sqlite.sql的-你可以开始填充用下面的兀语句的数据库。4.INSERT到留言(电子邮件,注释,创建)值(ralph.schindler,
31、你好!希望你享受这个范例ZF应用程序!“的DATETIME(现在);INSERT到留言(电子邮件,注释,创建)值(“foo,巴兹巴兹巴兹,巴兹巴兹巴兹巴兹BAZ-BAZ巴兹巴兹。的DATETIME(现在);现在,我们有两个架构和定义一些数据。让我们一起得到一个脚本,我们现在可以执行建立这个数据库。当然,这并不需要在生产,但这个脚本将帮助开发人员建立了本地数据库的要求,使他们能够有充分工作的应用程序。创建含有下列内容的脚本/load.sqlite.php的脚本:/脚本/load.sqlite.php的2./*创建和装载数据库的脚本*/6./初始化应用程序的路径和自动装填定义的(APPLICATI
32、ON_PATH)9.101112131415161718192021222324252627282930313233343536373839404142434445464748495051|定义(APPLICATION_PATH“,真实路径(目录名(FILE_应用程序。“);set_include_path破灭(PATH_SEPARATOR,阵歹U(APPLICATION_PATH。/。/库“,get_include_path();的Zend/装载机/Autoloader.php的”;Zend_Loader_Autoloader:的getInstance();/定义一些CZ工选项getopt的
33、=新Zend_Console_Getopt的(阵歹U(“withdata|W=与样本数据加载数据库“,ENV|ES=应用环境,为创建数据库(默认的发展)帮助|H=帮助-使用消息“,);尝试$getopt的-的parse();渔获(Zend_Console_Getopt_Exception$)/错误选项通过:报告使用回声$E-getUsageMessage();返回false;/如果请求帮助,报告使用消息$getopt的-getOption(H)呼应美元getopt的-getUsageMessage();返回true;/初始化基于CZZ选项的存在或没有值美元withData=$getopt的-g
34、etOption(“W”);$ENV=$getopt的-getOption(E);定义的(APPLICATION_ENV)|定义(APPLICATION_ENV“,(空=$ENV)?发展/初始化Zend_Application的应用=新Zend_Application(美元APPLICATION_ENVAPPLICATION_PATH/CONFIGS/的application.ini);/初始化和检索数据库资源弓丨导=$应用-getBootstrap();)o/$ENV);为引导-引导(“DB”);525354555657585960616263646566676869707172737475
35、76777879808182838485868788899091美兀dbAdapter=$弓丨导-的getResource(“DB”);/让用户知道什么(我们实际上是创建一个/数据库在这里)(“测试”!=APPLICATION_ENV)回声编写数据库留言簿(Control-C来取消):。PHP_EOL;($=5;$X0;$X-)回声$X“R“;睡眠(1);/检查看到,如果我们有一个数据库文件已$选项=$引导-getOption(资源);$DBFILE=$选项DB参数DBNAME;(file_exists($DBFILE)的unlink($DBFILE);/执行此块加载的实际报表/模式文件。尝试
36、schemaSql美兀=file_get_contents(目录名(FILE)。/schema.sqlite.sql);/使用直接连接到批量加羲的美兀dbAdapter-的getConnection()-EXEC($schemaSql的;CHMOD($DBFILE,0666);(“测试”!=APPLICATION_ENV)回声PHP_EOL;回声数据库创建”;回声PHP_EOL;($withData)dataSql美元=file_get_contents(目录名(FILE)。/data.sqlite.sql);/使用直接连接到批量加羲的美元dbAdapter-的getConnection()-
37、EXEC($dataSql)的;(“测试”!=APPLICATION_ENV)回声数据加载。回声PHP_EOL;TOC o 1-5 h z93.的catch(异常$)回声发生错误。PHP_EOL;回声$E-GETMESSAGE()。PHP_EOL;返回false;99./一般来说,这个脚本将运行命令行返回true;现在,让我们在执行这个脚本。从终端或DOS命令行,做到以下几点:1.%PHP脚本/load.sqlite.php的一withdata你应该看到类似以下的输出:路径/至U/ZendFrameworkQuickstart/脚本PHPload.sqlite.php一withdata编写数据
38、库留言簿中(Control-C来取消):1数据库中创建数据加载。现在我们有一个完全工作的数据库,为我们的留言申请表。我们接下来的几个步骤来构建我们的应用程序代码。这包括建立一个数据源(在我们的例子中,我们将使用Zend_Db_Table),数据映射,数据源连接到我们的域模型。最后,我们还将创建控制器将与现有条目都显示这个模型和处理新条目。我们将使用一个”表数据网关连接到我们的数据源;的Zend_Db_Table提供此功能。上手,让创建的Zend_Db_Table表类。正如我们已经完成布局和数据库适配器,我们可以使用ZF的工具,以协助,使用该命令创建DB表。这需要最低限度的两个参数,您要引用的类
39、的名称,通过它,它映射到数据库表。%ZF创建DB表留言簿留言仓U建一个应用程序/模型/DBTABLE/Guestbook.php的DBTABLE更新工程项目简介“zfproject.xml在寻找你的目录树,你会看到,创建一个新的目录,应用程序模型/DBTABLE/,文件Guestbook.php的。如果你打开该文件时,你会看到以下内容:/应用程序/模型/DBTABLE/Guestbook.php2.TOC o 1-5 h z/*这是留言表DBTABLE类的。*/类Application_Model_DbTable_Guestbook延伸Zend_Db_Table_Abstract/*表名*/保
40、护美元的name=留言;10.10.注意类前缀:Notetheclassprefix:Application_Model_DbTable的Application_Model_DbTable。.Theclassprefixforourmodule,Application,isthefirstsegment,andthenwehavethecomponent,Model_DbTable;thelatterismappedtothemodels/DbTable/directoryofthemodule.AllthatistrulynecessarywhenextendingZend_Db_Table
41、istoprovideatablenameandoptionallytheprimarykey(ifitisnotid).NowletscreateaDataMapper.ADataMappermapsadomainobjecttothedatabase.Inourcase,itwillmapourmodel,Application_Model_Guestbook,toourdatasource,Application_Model_DbTable_GuestbookAtypicalAPIforadatamapperisasfollows:/application/models/Guestboo
42、kMapper.php2.3.classApplication_Model_GuestbookMapper4.5.publicfunctionsavei$model);6.publicfunctionfind($id,$model);7.publicfunctionfetchAll();8.Inadditiontothesemethods,welladdmethodsforsettingandretrievingtheTableDataGateway.Tocreatetheinitialclass,usethezfCLItool:%zfcreatemodelGuestbookMapperCre
43、atingamodelatapplication/models/GuestbookMapper.phpUpdatingprojectprofile.zfproject.xmlNow,edittheclassApplication_Model_GuestbookMapperfoundinapplication/models/GuestbookMapper.phptoreadasfollows:/application/models/GuestbookMapper.php2.classApplication_Model_GuestbookMapperTOC o 1-5 h zprotected$_
44、dbTable;6.publicfunctionsetDbTable($dbTable)ifis_string($dbTable)$dbTable=new$dbTable();if(!$dbTableinstanceofZend_Db_Table_Abstract)thrownewException(Invalidtabledatagatewayprovided);14.15.$this-dbTable=$dbTable;16.return$this;17.18.19.publicfunctiongetDbTable()20.21.ifnull=$this-dbTable22.$this-se
45、tDbTable:ApplicationModelDbTableGuestbook);23.24.return$this-dbTable;25.26.27.publicfunctionsave(ApplicationModelGuestbook$guestbook)28.29.$data=array(30.email=$guestbook-getEmail(),ment=$guestbook-getComment(),32.created=date(Y-m-dH:i:s),33.);34.35.if(null=($id=$guestbook-getId()36.unset($dataid);3
46、7.$this-getDbTable()-insert($data);38.else39.$this-getDbTable()-update($data,array(id=?=$id);42.publicfunctionfind($id,Application_Model_Guestbook$guestbook44.45.$result=$this-getDbTable()-find($id);46.if(0=count($result)47.return;48.49.$row=$result-current();50.$guestbook-setId($row-id)51.setEmail(
47、$row-email)52.setComment($row-comment)53.setCreated($row-created);5455565758596061626364656667686970...1011121314151617publicfunctionfetchAll()$resultSet=$this-getDbTable()-fetchAll();$entries=array();foreach($resultSetas$row)$entry=newApplication_Model_GuestbookJ;$entry-setId($
48、row-id)setEmail($row-email)setComment($row-comment)setCreated($row-created);$entries=$entry;return$entries;Nowitstimetocreateourmodelclass.Welldoso,onceagain,usingthezfcreatemodelcommand:%zfcreatemodelGuestbookCreatingamodelatapplication/models/Guestbook.phpUpdatingprojectprofile.zfproject.xmlWellmo
49、difythisemptyPHPclasstomakeiteasytopopulatethemodelbypassinganarrayofdataeithertotheconstructororasetOptions()method.Thefinalmodelclass,locatedinapplication/models/Guestbook.phpshouldlooklikethis:/application/models/Guestbook.phpclassApplication_Model_Guestbookprotected$_comment;protected$_created;p
50、rotected$_email;protected$_id;publicfunctionconstructarray$options=nullif(is_array$options)$this-setOptions($options);publicfunctionset$name,$value$method=set.$name;if(mapper=$name)|!method_exists($this,$method)thrownewException(Invalidguestbookproperty);$this-$method($value);publicfunctionget($name
51、)$method=get.$name;if(mapper=$name)|!method_exists($this,$method)thrownewException(Invalidguestbookproperty);return$this-$method();publicfunctionsetOptions(array$options)$methods=get_class_methods($this);foreach($optionsas$key=$value)$method=set.ucfirst($key);ifin_array($method,$methods)$this-$metho
52、d($value);return$this;publicfunctionsetComment($text)$this-_comment=string$text;return$this;publicfunctiongetComment()return$this-_comment;publicfunctionsetEmail($email)18192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828
53、384858687888990..$this-_email=(string)$email;return$this;publicfunctiongetEmail()return$this-_email;publicfunctionsetCreated($ts)$this-_created=$ts;return$this;publicfunctiongetCreated()return$this-_created;publicfunctionsetId($id)$this-_id=(int$id;return$this;publicfunctiongetId()retu
54、rn$this-_id;Lastly,toconnecttheseelementsalltogether,letscreateaguestbookcontrollerthatwillbothlisttheentriesthatarecurrentlyinsidethedatabase.Tocreateanewcontroller,usethezfcreatecontrollercommand:%zfcreatecontrollerGuestbookCreatingacontrolleratapplication/controllers/GuestbookController.phpCreatinganindexactionmethodincontrollerGuestbookCreatingaviewscriptfortheindexactionmethodatapplication/views/scripts/guestbook/index.phtmlCreatingacontrollertestfileattests/application/controllers/GuestbookControllerTest.phpUpdatingprojectprofile.zfproject.xmlT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 牙龈鳞状细胞癌病因介绍
- 烦渴多饮病因介绍
- 多媒体课件的制作过程
- 泌尿生殖系损伤病因介绍
- 2024年中考英语单项选择百题分类训练单项选择名校模拟真题100题综合练02(解析版)
- 开题报告:中国教育公平实践的理论建构研究
- 开题报告:应用型本科高校校企协同育人体系的构建与实践研究
- 开题报告:新时代师范院校面向人人的进阶式美育课程体系创新构建
- 2024届南省洛阳市高三第一次高考模拟考试数学试题文试题
- 2024年太阳能发电项目合作合同
- (2024年)课堂教学与信息技术融合ppt课件pptx
- 巨量直播电商运营认证考试64题
- 叉车考试题库
- 劳动教育教师培训
- 就业能力展示 (二版)
- 2023年北京市清华附中数学七年级第一学期期末检测模拟试题含解析
- 玻璃镶嵌工艺名称图片
- 化成处理工艺课件
- 机械制造及自动化大专生职业生涯发展展示
- 安徽新时代十年伟大改革
- 第2课+古代希腊罗马(教学设计)-【中职专用】《世界历史》(高教版2023基础模块)
评论
0/150
提交评论