cakePHP应用开发.doc_第1页
cakePHP应用开发.doc_第2页
cakePHP应用开发.doc_第3页
cakePHP应用开发.doc_第4页
cakePHP应用开发.doc_第5页
已阅读5页,还剩135页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

前言Cake是PHP语言的一个快速开发框架,它使用的是大家熟知的设计模式(design patterns),它提供了一个结构化的框架,使得任何水平的PHP使用者都可以快速开发出健壮的网页应用,与此同时又不失灵活性。这是意味着你可以更快,更好的编写代码,而且它还使得编写歪脖2.0风格的应用变得小菜一碟。此书认为你已经掌握了一个PHP开发者所应掌握的基本知识,在此基础上,该书为你提供一个快速的,由浅入深的教程来教会你开发CakePHP应用。此书提供了实例代码以及演示实例,因此你可以看到一些实战技巧。本书涵盖哪些内容第一章将会带你了解如下内容:什么是CakePHP?CakePHP是如何组织和维护代码的?CakePHP是如何帮助你缩短开发时间和节省精力的?以及你应该选用哪一个版本的Cake?第二章会教你如何在本地机器安装以及设置Cake。第三章涵盖的内容包括如何开发一个小型的应用,我们称其为“Cake待做事项”。它是一个简单的待做事项的应用,它记录了我们所有的待做事项比如一个购物清单,考试需要复习的章节,等等。第四章将涵盖CakePHP控制器(controller)类的基本要点第五章带你领略模型(model)类的基本内容。第六章将会带你深入了解模型之间不同的关联类型以及它们的用途。第七章将会带你仔细了解CakePHP中不同的视图组件(components)。第八章内容涵盖一个名叫Bake的命令解释脚本(shell scripts),我们会使用这个工具来搭建一个简单的博客,用户可以在这个博客上发布文章以及评论。第九章将会教你制作一个称作“Quickwall的网页应用。第十章涵盖的内容为:如何将用户身份认证加入到我们的应用Quickwall中来。第十一章包含的内容为包括:如何在CakePHP中使用JaveScrpt以及AJAX。第十二章包含的内容为:如何将更多的功能添加进QuickWall中来。这本书是为谁准备?如果你已经了解了PHP而且还想开发前沿的Web2.0的应用,或者想看看如何以一种快速,高效的方式编写代码,那么此书正是为你准备。书中一些约定的说明在你阅读该书时,你会发现书中有各种样式的文本,这些不同样式的文本是用来区分不同类型的信息的。下面是一些不同样式文本的实例,以及相应的说明。对于代码而言,有三种样式。文中的代码说明将会像后面这样显示:“我们可以通过使用include命令来将其他内容包含进来。”代码的样式如下: 如果我们想让你注意到特定代码段的话,这些代码段或条目会用粗体加深。 link(Your Questions, array(controller = users, action = show, $loggedIn); ?| link(Search, array(controller =命令行的输入和输出都是以如下方式书写的:#cp /usr/src/asterisk-addons/configs/cdr_mysql.conf.sample/etc/asterisk/cdr_mysql.conf新的术语以及重要文字会以加粗的字体出现。你在屏幕上,在菜单或者对话框中见到的文字都会是像后面这样出现在我们的文章中:“点击下一步按钮,继续。”重要的注释会书写在这样的方框中。提示以及小技巧会出现在这里读者反馈我们总是欢迎来自读者的反馈。请告诉我们你觉得这本书怎么样,你喜欢哪些内容,不喜欢哪些内容。读者的反馈对于帮我们写出那些对读者真正有用的内容至关重要。如果只是给我们反馈一些普通的信息,你可以给这个邮箱发一封邮件即可,记得在你邮件的标题中提及相应的书名。如果你什么想要我们出版的书,你可以登录网站填写“建议出版“表单或者发一份邮件到这个邮箱,来告诉我们。如果你是某一方面的专家并且对于写作或者撰稿有兴趣的话,你可以访问/authors读读我们的作者指南。客户支持现在你成为了Packt出版社的一名尊敬的用户,为使你的购买物超所值,我们也为你准备了一系列的东西。下载本书中的实例代码请直接访问/files/code/3896_Code.zip来下载实例代码下载的文件中包含了使用说明。勘误尽管我们已经非常的小心谨慎,以确保内容的准确性,但是,错误还是不可避免。如果你在书中发现了这样错误(这种错误可能是文字或者代码方面的),如果你能向我们报告这些错误,我们将感激不尽。这样做,可以使其他读者免受这些错误来带的困扰,帮助改善该书的下一个版本。如果你发现了什么错误,请访问/support,选择书名,点击“提交错误”链接,然后输入你发现错误的详细内容,通知我们。一旦你的指出的错误得到确认,你提交的内容就会被采纳,并加入到一个已经存在的勘误列表中。你也可以访问这个链接 /support,选择书名,查看相应书本已有的勘误表。如果你有疑问如果你对书的某些方面有疑问,你可以通过联系我们,我们会尽我们最大的努力为你解答。1CakePHP介绍大多数技术类的书本开始都是简要概述该书所关的注技术的优越之处,以便说服读者,让他们觉得此类技术是值得学习的。但是与这些书不同,本书开头将会给你一个警告:一旦读者通读此书后,将没有回头路可走!网页开发将会完全不同。开发网页应用将会变得相当的容易,这可能会让读者变得非常的懒。实际情况是,读者甚至可能会忘记PHP的一些基本语法!对于这些读者而言,Cake一词也将被赋予一个全新的意思。(译者:马屁,读者请自行过滤。)如果你依然决定继续读下去,我们热烈欢迎!但是往后不要怪我们;我们已经事先警告过你!在我们开始学习CakePHP的之前,我们会帮助你理解CakePHP是什么东西,以及它是如何帮助我们快速开发出易于管理和维护的网页应用的。说点更为具体一点就是,在这一章节中,你可以读到如下内容: 什么是CakePHP? CakePHP是如何帮助我们组织和维护代码的? CakePHP是如何帮助我们减少开发时间和节省精力的。 以及,我们应该用哪个版本的CakePHP? CakePHP是什么东西?根据CakePHP官方的站点()上的描述:CakePHP是PHP语言的快速开发框架,它运用了为人熟知的设计模式,如Active Record,Association Data Mapping, Front Controller和 MVC。我们的主要目标是提供一个结构化的框架以使得任何水平的PHP使用者都可以快速的开发出健壮的Web应用,与此同时又不失灵活性。不熟悉框架的读者可能无法理解这个定义。但是,如果能理解一些关键性的术语的话,你对于上面这个定义的理解就会轻松上许多。PHP框架PHP框架是一组代码,库,类,和运行环境的集合体,它可以帮助开发者更快捷的搭建网页应用。框架背后的主要思想是为开发者提供一些经常使用到的功能和一个可以在此基础之上搭建他们应用程序的基本架构。 对于大多数有些经验的PHP开发者,他们都有一些自己的库和构架,以便加快他们的开发速度。但是,在像CakePHP这样的开源框架之上搭建一个网页应用也有显而易见的好处。使用框架时,开发者不仅仅可以运用他们自己的经验,而且,他们也可以利用其他开发和使用过这一框架的开发者的经验.另外,框架更为可靠,因为它经受住了众多开发者的实际检验。另外,使用像CakePHP这样的框架可以使得单一项目中的所有开发者都能够遵循同样的规则来搭建应用。这一特点使得那些熟悉框架内在规则的项目新人可以非常方便的融入项目开发中来。常见的设计模式设计样式是对网页开发中经常碰到问题的的一个一般性的解决方案。设计模式并不是一组代码,而是对一个可以用来解决各种问题的方法的描述。在网页开发中,有许多常见的设计模式可以用来解决重复而又普篇的问题。CakePHP整合了诸多的设计样式在上面的定义中已经提及一些:Active Record, Association Data Mapping, Front Controller 以及MVC. 。其中,MVC使由模型(Model)视图(View)控制器(Controlle)的第一个字母缩写而成,它也是CakePHP的核心所在。在这一样章节的稍后部分,我们很快会讨论到MVC以及其他一些重要的设计模式。另外一些设计样式也会在本书的其他章节中讨论到。快速网页应用开发将设计模式整合到CakePHP之中,这意味着开发者无需在那些网页应用开发中出现的常见问题上浪费时间。在CakPHP中,这些常见的问题已经得以解决!因此,开发之只要关注与网页应用具体的业务逻辑,而不是忙于重复应对前人已经解决过的问题。这使应用开发变得更为快捷。适用于PHP4和PHP5尽管在定义中并没有提及这点,但是,无论是PHP4还是PHP5,CakePHP都可以“拿来即用”,因此只要开发者遵循CakePHP的规则,他们的应用就可以非常轻松的在PHP的两个版本之间转换。跟其他许多PHP框架不同,开发者无需担心兼容性问题。网页服务器无论是安装的PHP4还是 PHP5都可以欢快的跑CakePHP应用。但是必须要提一句,如果对项目来讲,兼容PHP5不是问题的话,最好还是使用PHP5。既然大多数CakePHP应用都是定制的,是否兼容性PHP4通常都不是一个重要的考虑因素。因此,强烈建议使用PHP5来进行CakePHP的应用开发。CakePHP是免费的开源PHP框架对,没错:CakePHP是一个开源项目,每个想使用它的人都可以免费获得。它的发布遵循MIT许可。这一意味着,人们不但可以免费的使用CakePHP,而且他们也可以查看CakePHP的源代码,了解这一切是如何神奇工作的。现在,我们对CakePHP背后的一些主要概念有了一个更加深入的理解,再回到前面,看看定义!现在对于定义理解要容易多了。更为重要的是,我们现在清楚了我们能对CakePHP能有些什么指望,因为我们现在已经知道CakePHP是嘛玩意了!改进代码结构PHP是一种非常棒的服务器端开发的编程语言。PHP的其中一个好处就是它非常容易学习。任何人只要有一点基本的编程技能(甚至是没有)也可以开始动手编写动态的网页页面。PHP为开发者编写代码带来了很大的灵活性。换句话说,它没有限制开发者必须遵守某一构架。但这也是它最主要的缺点之一。随着程序员新手开始编写大些的应用时,多数情况下,他们编写的代码会变得毫无组织条理,以至在Debug或是做出小变动时,他们会犯难。对于有经验的PHP开发者而言,当应用变得复杂时,同样的事情也会发生在他们身上。当多个开发人员参与到单个项目之中时,事情会变得更糟糕,每个人都遵循他们自己的编程方式。这一问题的主要原因是PHP并没有强制规定开发者必须遵循某一特定的架构CakePHP通过强制让开发者遵循严格的架构解决了这一问题。这样一来,它确保了项目中所有代码都有一个易于管理和维护的结构。CakePHP中用来维护结构化代码的一个最为重要的设计模式就是MVC模式(即,模型,视图,控制器)理解MVC模式MVC模式是软件开发中一种常用的设计模式,在这种设计模式中,代码被拆分成三个部分:模型(Model),视图(View),和控制器(Controller).每个部分的确切作用取决于它们的实现方式, 因为框架跟框架之间有所不同。随后,我们将会说明CakePHP实现MVC模式的方式。因此,这里并不是对于MVC模式的一般性描述,我们仅仅只了解 Cake自身是怎么实现MVC模式。正如我们之前提到的,CakePHP将代码分成三部分:模型,视图,以及控制器。模型在CakePHP中,每个模型对应数据库中的一个表。数据库中的每个表都应该有一个模型与它对应。因此,在CakePHP中,数据库中的每个表都应该有它自己的模型。跟访问,添加,修改或删除表中记录有关的PHP代码都在模型当中。模型之中也包含了那些定义了与其他模型关系的代码。除此这些,模型也定义了添加或更新表中记录时需要用到的数据验证规则。模型可以被看成应用的数据层。跟模型相关的业务逻辑也应该定义在模型之中。打个比方,我们有一个模型,假设它是辆轿车,所有跟该模型相关的操作如买车,卖车等等都应该定义在模型之中。应用的核心业务逻辑都应该定义在模型之中。控制器在CakePHP中,控制器控制着应用的逻辑或者运行流程。每一个页面请求都对应一个具体的控制器,它负责接收用户的输入(通过POST方法或者 GET方法提交的数据)。控制器的逻辑决定作出何种响应。控制器的逻辑内容一般都需要调用模型以存取数据,它也包含其他一些功能,如访问控制的确认 (ACL)等等。最后,控制器将响应(即输出)传送给视图(我们稍后讨论视图)。控制器可以被视作应用的逻辑控制层。正如上面所提及的那样,模型应该包含应用的业务逻辑。控制器只应该负责对于模型的操作,它应该轻巧简单。这一设计思想有时被叫做“模型臃肿化,控制器轻巧化。”视图视图是请求处理完毕后返回给用户的一个输出或是响应。它们通常都是由夹杂有PHP代码的标记语言代码(如HTML)组成。但它也可是其他形式的一个输出,像输出XML,PDF文档等等,这取决于具体情况。视图可以被认为是应用的显示层。它是如何工作现在,我们对于组成CakePHP的MVC这三部分有了一个良好的理解,然后我们接下来就了解一下这三个部件是如何协同工作以处理每个请求的。上面这个图表显示了这三者是如何协同工作的1 带有用户数据的请求提交给控制器。 2 控制器处理请求,然后调用模型来存取数据。 3 模型响应控制器的调用,发送数据或者存储数据。 4 然后控制将返回的数据传送给视图。 5 视图将数据以合适的方式展示出来。 正如我们先前已经看到的那样,使用MVC模式有助于将我们的代码模块化。这使得开发者可以按照需要快速的对代码做些修改。调试和修改将变成一件轻松的事情。 使用MVC另一个附带好处就是代码可以重用。比如,模型中的代码可以用在任何一个需要存取该模型中数据的控制器中使用。MVC的另一好处就是它缩短了开发时间。但是MVC并非CakePHP用来缩短开发时间的唯一工具。CakePHP还使用了其他方式来缩短开发时间,稍后我们再来讨论。快速开发如今大多数网页应用都是在框架的基础上搭建起来,这其中的一个重要原因就是为了加快开发进度。使用像CakePHP这样的开发框架,可以使得网页应用开发的速度比直接使用PHP语言快上许多。除了MVC样式,CakePHP采用了其他许多技巧和戏法来加速网页开发。更少配置,更多规则CakePHP设计的一个主要思想就是尽量减少配置。配置通常是用来确保系统设置正确,让它按照我们的意图来运转。但是在CakePHP中,这些配置被降到最少。实际是,为了让CakePHP跑起来,我们唯一需要做的是让CakePHP知道我们所使用数据库的名称,除此之外无需其他另外的特别配置!CakePHP内在设计更多的是依赖规则,而非配置。规则(conventions)都是些有关数据库字段命名,模型,控制器,视图文件放置位置以及它们的名称之类的约定。如果用户都遵循CakePHP的规则命名按要求放置文件。CakePHP自己会准确的寻找和使用这些文件。这也是为什么清楚CakePHP的命名规则很重要。一旦我们熟悉这些命名规则,我们就无需在担心配置之类的事情了。代码自动生成试想一下,如果,在我们开始编写代码之前,我们就有一段特定为我们应用所准备的可以拿来用的基本代码,那么开发会容易上许多。有了CakePHP之后,这一切就不仅仅停留在幻想层面,因为CakePHP实现了这点。CakePHP内置的代码生成器更多的是以Baking脚本形式而被大家熟知。我们所要做只是指定工程中的数据库表,然后开始烘烤代码即可。CakePHP会自动创建我们需要的模型,控制器,以及视图。使用它所生成出的代码,我们马上就有了一个可以插入,编辑,查看,和删除数据库表中数据、并可以跑起来的应用。快速访问相应数据CakePHP整合了多个实用的设计模式,这使得访问修改数据库中的数据变得十分的容易。它有一个非常简洁的数据提取层,而且它也支持关联数据的映射(association data mapping)。有了Cake的数据提取层,我们无需书写SQL查询语句,来来检索或者修改数据。通过调用合适的模型函数,我们就可以很容易的存储数据。所有的数据都会用一个有良好规范格式格式的相关数列(associated arrays)返回回来,这省掉了很多麻烦。关联数据映射(Association data mapping)是CakePHP用来从多个表中提出数据的一个技术,如果需要,你也可以从其他数据库中的表中获取所有相关数据。举个例子,我们有一个posts表,它里面有博客文章(post)的数据,另一个comments表,它包含了所有文章的评论。现在,如果你想将某个博客文章的数据与该文章对应的所有评论数据一起从数据库提取出来,我们所要做的只是仅仅调用一个模型函数,这个函数不光返回该文章的数据,而且也会返回所有相关的评论数据。 CakePHP可以自动从其他表中提取所有相关数据,然后将它们与其他所需要的数据一道返回。我们无需书写些繁杂的SQL语句来实现这点。常用的内置功能除了上面提及的特点外,CakePHP其他许多功能,开发人员无需再浪费时间重新编写代码来实现网页应用中一些比较常见的功能。下面是一个内置功能的不完全清单: 内置的数据验证:CakePHP有一个适用性及其宽泛的数据验证机制,我们只要指定待验证数据的类型,CakePHP就可以帮你处理剩下的事情。 自定义的页面布局:大多数时候,应用的所有页面都有一个看起来大致相同的页面布局。使用CakePHP的布局功能,我们所要做的就是将布局文件放到合适的位置,然后所有的页面就会调用它。 访问控制:如果你搭建的应用需要我们依据用户类型对该应用的某些区域做一些访问限制,我们可以同时使用访问控制清单(ACL)很容易的实现这点。 AJAX 助手:使用了内置的AJAX 助手(该助手使用的是Prototype JS框架和Scrpaculous Java库)添加AJAX的功能十分容易,你无需写一行JavaScript代码就可以实现AJAX。 除了这些,CakePHP还内置了其他许多功能来帮助网页应用的开发。CakePHP的版本:1.1版本和1.2版本的CakePHP现在我们已经知道了CakePHP所有令人心动的功能,我们下面要碰到的问题是,到底使用哪个版本的CakePHP。现在我们有两个版本的CakePHP可以使用:最为稳定的1.1版本和激动人心的1.2新版本。尽管1.2版本已经出来一阵子了,但是它目前还是在beta测试阶段。但是我们需要指出的是,CakePHP社区对这个版本相当的有信心,他们自豪的宣称 1.2版本是社区中最为稳定的beta版软件。有许多成品级别的网页应用就是运行在1.2版本之上的。而且,该版本中的新功能以及强化使得1.2版本变得非常的棒,使人人欲罢不能。因此,在本书中,我们将使用1.2的版本。希望本书出版的时候,1.2的稳定版可以出炉。所有不要再犹豫了,下载最新的 CakePHP 1.2版本,然后翻到下一章,了解如何安装。小结在这一章节,我们了解了什么是CakePHP,以及它是如何帮助我们快速开发有着良好架构的网页应用,我们也讨论了什么是PHP框架和设计模式,以及它们的意义何在。我们详细地了解了MVC模式的含义,MVC样式是 CakePHP的一个重要组成部分,它帮助我们简洁明了地组织代码。接下来我们讨论了CakePHP一些能帮助我们加快开发网页应用的功能。最后该书解释了我们选择CakePHP1.2版本的理由。2CakePHP的快速安装在第一章节,我们了解了CakePHP是如何帮助我们搭建建构良好,而且可以方便快速开发的网页应用的。所以,道理上来讲。我们接下来的一步就是讲解如何安装Cake,以便我们可以烘烤出美味好吃的Cake应用。在这一章节,我们会快速了解一下如何在本地机器上设置Cake。正如我们马上会看到的,在本地机器上安装Cake并不是一件非常麻烦的事情。如果我们对于在Apache,MySQL,以及PHP搭建的环境下开发网页应用非常熟悉的话,这一章节应该是非常容易就可以过掉的在这一章节,我们将 下载最新的1.2版本的CakePHP。 运行CakePHP所需要准备的软件。 配置Apache服务器,运行Cake 将Cake安置到Apache服务器的根目录下。 初次运行Cake。 下载CakePHP在这一章节,我们将了解如何下载到最新1.2版本的CakePHP。尽管这个任务非常的简单,但是学习这一部分还有另外一个目的。你可以看到这一部分被划分成了两部分:“动手时间“(Time for Action)以及“怎么回事”(What Just happened)。本书的其他部分,我们使用同样的版式来完成不同的学习内容。在动手时间部分,我们会向你展示完成相应任务所涉及到的不同步骤。换句话讲就是,在“动手时间”部分,我们会通过一个手把手的教程,告诉你需要做些什么。而在”怎么回事”部分,我们会详细讨论解释之前在我们“动手时间”部分的事情缘由。好了,我们不再废话,下面就是我们要读到的第一个“动手时间”部分的内容:动手时间1 打开网页浏览器,输入/,然后登录CakePHP的官方主页。 在“立即下载(get it now!)“页签上,点击1.2x.xxx的链接(x.xxx是一串数字,具体数值取决于1.2的最新发布版本),这个链接就位于页面的右边,下载按钮的下面。2.,这个链接将会把你带到下一个页面,这个页面有一个下载链接列表,如下面的截图所示。CakePHP最新的1.2版本将会以高亮形式标记出来,点击你要下载的压缩文件格式(.zip格式,.ta.rbr2格式以及.tar.gz格式)然后开始下载。3,一旦你点击它,你会看到一个捐赠页面,正如下面的截图所示。你可以选择为CakePHP软件基金捐赠一些钱,这些钱会用来改善CakePHP,因此,如果你觉得你能提供点帮助,就不要犹豫了。当然你也可以选在“不捐了,谢谢。”选项。4,最后,我们终于来到了下载页面(见下面的截图),在页面底部有一个下载链接“下载最新发布的版本”,点击该链接,然后会弹出一个对话框,询问你是保存该文件还是直接打开它。点击保存,然后,选在一个合适的文件夹存放该文件,最后,点击确定。Cake就会马上下载下来!怎么回事?在这一部分,我们看到了从CakePHP的官方站点下载Cake所需要的步骤。这些步骤都是相当的直接明了,所以我们这里就无需多费口舌。但是,在接下来的“怎么回事”中,我们会深入了解“动手时间”中对应步骤的意义所在。平台要求在这个快速安装教程中,本书认为我们使用的是Apache作为的我们的网页服务器,MYSQL作为我们的数据库服务器,当然还有PHP。为了运行Cake,我们使用的PHP的版本至少的是4.3.2.以上的版本(包括4.3.2),这些版本都应该能很好的运行CakePHP。CakePHP也可以运行在其他网页服务器和数据库服务器之上。在我们继续下一步之前,请确认你的本地机器符合这些要求。配置Apache服务器为了确保CakePHP的应用能在Apache服务器上顺利的跑起来,我们还需要做一些确认动作。许多Apche的安装并不需要下面这些确认动作,因为它们都可能被设置成默认值,但是我们最好还是确认一下下面这些设置是否正确。AllowOverwrite需设置成all我们需要确保网页的根目录,或者存放CakePHP的目录的AllowOverwrite选项已设置成all。我们可以通过检查Apache的主配置文件http.conf来检查这一设置,该文件应该位于Apache安装目录下面名为conf的文件夹里面。在这个文件中,应该有一项是网页根目录。如下面所示,根目录Directory一项中的AllowOverwrite已经设置成all。如果我们存放Cake的目录位网页根目录之下,而且该目录也有一个directory属性的话,我们也需检查确认下。 Options Indexes FollowSymLinks AllowOverride all Order Deny,Allow Deny from all Allow from Mod_rewrite模组已经载入除此之外之外,我们也需要确认下Apache已经载入mod_rewrite模组。要确保这点,我们需要再次检查下http .conf文件。在http.conf文件中应该有一个名叫“动态共享对象支持”的栏目,Apache所有载入的模组都已在这里列出。所有没有载入的模组前面都用#添加成注释,不会被运行。因此,我们需要确认下mod_rewrite模组那一行前面没有#。如果有的话,我们只需将#符号从前面删掉即可:LoadModule rewrite_module modules/mod_rewrite.so一旦你对Apache的配置做好了上面这些修改,请重启Apache。只要上面的配置都设置妥当,Apache应该就可以运行CakePHP的应用,不会碰到什么问题。在网页根目录下创建Cake在这里,我们会将Cake的文件放置到服务器上去。如果你对Apache,PHP,解压缩文件,以及重命名目录很熟悉的话,这一任务还是很简单的。动手时间1 将新下载的压缩文件复制到Apache服务器的根目录下面。 2 用你喜欢的解压缩工具即将压缩文件提取到网页根目录之下。 3 上面的操作在你的网页根目录之下创建一个新的目录,这个目录名字一般都是Cake_1.2.x.xxxx这种形式(具体情况还要取决于具体的版本号)。将这个目录重新命名成myfirstcake(或者其他随便什么名字) 4 如果我们打开进入myfirstcake目录之下,我们应该可以看到一个跟下面截图相类似的目录结构。 怎么回事?这里,我们将cake文件解压缩,将它放置于Apache服务器的网页根目录之下。在第一步中,我们将压缩文件复制到网页根目录之下。如果你不太清楚本地服务器的网页根目录位于哪里,你可以在Apache服务器的配置文件http.conf中看一看。该文件中应该有一个名为DocumentRoot的一栏,它指定了网页根目录的位置。你应该也注意到http.conf文件中也有一个名为服务器根目录(ServerRoot)的属性,但是不要把它和网页根目录(webroot)弄混淆了。第二步,解压缩文件。市面上有许多种类的解压缩软件。确信我们对某些解压缩文件已经有所熟悉。我可不想贬低你的智商,因而至于如何解压缩文件,我就不在这罗嗦了!一旦文件被解压缩后,我们会在根目录下的到一个新目录。下一步,我们将该的目录更名,这个目录的默认名称应类似于Cake_1.2.x.xxxx。我们将它重新命名为myfirstcake。当然,我们可以将名字改为任何我们喜欢的名字。目录名字最好跟我们项目的名称一致。最后,我们了解一下目录结构。在该书的后面章节,我们会跟它们中的一些目录打交道,了解这些目录之中到底存放有什么东西。初次运行Cake好了,我们可以开始检查Cake能否在我们的本地机器上正常的运行。我们打开网页浏览器,输入网址http:/localhost/myfirstcake/,我们看到下面这样一个页面:如果你看到上面这个页面,说明你已经安装好CakePHP。上面这个页面中最需要关注的事情是看看tmp临时文件夹是否可以写入。如果你使用的是基于UNIX系统,这项检查很重要,确保 Apache对位于/myfirstcake/app中的临时文件夹有读写存取权限。如果所有事情都没出差错,并且你也正确的遵循了这一章节的步骤指示,那么CakePHP应该安装就绪了,你可以用它来烘烤制作出一些新鲜美味的cake应用来。而这正是我们下一章节要做的事情。小结在这一章节,我们看到了如何在本地机器上安装CakePHP。我们开始了解了如何下载到正确版本的CakePHP,我们也讨论了如何为CakePHP配置好Apache服务器。最后我们演示了一下如何将CakePHP解压缩到网页根目录中,初次运行CakePHP。3简单应用的开发实例食材很新鲜,而且已经切好,准备就绪了。烤箱开关已经打开,加热好了,烧得的通红,是时候戴上我们的厨师帽,弄出一些美味cake的食谱来。那么,你准备好了吗,Cake师傅?在第一章中,我们知道了CakePHP的一些基本情况,了解了它是怎样使我们生活变得更为便利的。然后,在第二章节中,我们在本地机器上安装了CakePHP,为了使Apache能加热烘烤面包,我们对Apache做了一些配置。现在,该我们亲自动手,做点东西了。而在本章节,我们将会开发一个名为“Cake牌待做事项”的小型应用。这是一个小巧的待做事项应用,所有我们需要做的事情都可以保存其中。购物清单,考试需要复习的章节,你讨厌人的清单,以及你暗恋的女孩等等这些一切都可以记录在上面。Cake待做事项可以让许我们保持这些清单的实时更新。我们也可以浏览所有的待做事项,添加新事项,以及将已经完成的事项标记成完成,以及等等。下面就是我们这一章节一个学习内容清单。 确认Cake已经安装就绪。 了解Cake待做事项的基本功能。 为Cake待做事项创建以及配置好数据库。 编写我们的第一的Cake模型。 编写我们的第一个Cake控制器。 创建一个清单,用它来显示Cake待做事项中所有的事项。 创建一个表单,以方便我们向Cake待做事项中添加新的事项。 t创建一个可以编辑待做事项清单中事项的表单。 添加数据验证规则,确保用户不会添加一个无标题的事项。 添加一个从清单中删除相应事项的功能。 将完成事项和待做事项分开分别列表。 调整使模型的修改时间和创建时间格式,让它们开起来更为友好。 为Cake待做事项创建一个主页。 确保烤箱已经准备就绪在我们开始烘烤“Cake待做事项”之前,让我们再次确认烤箱已经准备就绪。如果我们遵循第二章中的操作说明,那么万事已经具备了,但是未了确保我们稍后不会碰到任何问题,我在这里列出了一个事情的检查清单,这些事情是应该已经各就各位,准备就绪了:1 Apache服务器已经正确安装好,并可以在本地机器上运行。 2 MYSQL数据库服务器已经在本地机器上安装好,并可以运行。 3 4.3.2版本或者更高版本的PHP已经安装好,并与Apache工作良好。 4 确保你使用的CakePHP版本是最新的1.2版本。 5 Apche的mod_rewrite模组已经打开。 6 在Apache的配置中网页根目录中的AllowOverride已经设置成all 7 CakePHP已经解压缩,并放置于Apache的根目录之下。 8 Apache对于CakePHP中的临时文件夹有写入存取的权限。 如果有什么内容与上面说的不符,请参考第二章的内容,弄清楚如何满足这些要求。在第二章中,我们重新命名了CakePHP的目录,把它命名成 myfirstcake。在这一例子中,我们把CakePHP的目录重新命名成CakeTooDoo(Cake待做事项)Cake待做事项:一个简单的待做事项应用正如我们之前了解的,Cake待做事项是一个简单的待做事项清单。这个清单由许多我们想要做的事情所组成。每个事项由标题和状态所构成。标题将告诉我们要做事项的内容,而状态用来区别该事项是否已经完成。除了标题和状态,每个事项也将记载有事项的创建时间和最后修改时间。使用Cake待做事项,我们可以添加新的事项,改变某个事项的状态,删除特定的事项,查看所有的事项。说的更具体点就是,Cake待做事项这个应用会允许我们做如下一些事情:9 以列表的形式查看所有的事项。 10 往列表中添加一个新的事项。 11 编辑某个事项的状态。 12 查看所有已经完成的事项 13 查看所有待做或未完成的是事项。 14 删除某个待做事项 15 制作一个主页,可以让我们访问所有这些功能。 你也许会觉得知道如何做和实际动手做之间有一个巨大的差距。但是,请先别下此结论,使用CakePHP框架的话,你这个结论就是根本是不成立的!我们只要十分钟的时间就可以弄出一个功能齐全,可以运行的“Cake待做事项”的应用来。不信?接着往下多,你自己就会弄清楚我是不是在吹牛。配置Cake,使其能与数据库正常运行我们首先要做的事情就是创建我们应用所需的数据库。创建CakePHP的应用跟你之前创建其他数据库没有什么不同。但是,在创建我们数据库中表的时候用,我们需要遵循一些简单的命名规则。一旦我们的数据准备就绪,下一步就是告诉Cake使用数据库。动手时间:创建和配置数据库1.,在本地的MySQL数据库服务器上创建一个名为caketoodoo的数据库。用你喜欢的MySQL客户端,执行如下代码:CREATE DATABASE caketoodoo;2,在我们新创建的数据库中,创建一个名为tasks的表,在你的MySQL客户端中运行如下代码即可:USE caketoodoo;CREATE TABLE tasks (id int(10) unsigned NOT NULL auto_increment,title varchar(255) NOT NULL,done tinyint(1) default NULL,created datetime default NULL,modified datetime default NULL,PRIMARY KEY (id);3,如果你还未把CakePHP的主目录重新命名,你现在可以将它命名成Caketoodoo。4,点击进入CakeTooDoo/app/config目录。在config目录下,应该有一个文件,它的名字为database.php.default。把这个文件重命名成database.php。5,用你喜欢的编辑器打开database.php这个文件,然后来到第73行,我们可以看到这里有一个名为$default的数组。这个数据包含了 数据库链接的相关选项。将login和password一项分别填上你使用的数据库用户名和相应的密码。将数据库一项填上caketoodoo。如果我们数据库用户名为ahsan,密码为sims,我们的配置应该是这样:var $default = array(driver = mysql,persistent = false,host = localhost,port = ,login = ahsan,password = sims,database = caketoodoo,schema = ,prefix = ,encoding = );6,现在,我们检查Cake是否能连接到数据库。首先打开浏览器,然后浏览这个地址http:/localhost/CakeTooDoo/。我们应噶可以看 到一个默认的Cake页面,其中有这两行提示:你的数据库配置文件已经存在,Cake可以连接到数据库(Your database configuration file is present and Cake is able to connect to the database)。具体页面可以看下的截图。如果你可以看到上面这话,说明我们已经成功的配置好了,CakePHP可以使用caketoodoo这个数据库。怎么回事?遵循Cake的命名规则,我们刚刚创建好了我们的第一个数据库。然后配置cake的数据库配置文件,告诉cake使用这个数据库。我们的数据库名字是caketoodoo,其中只有一个名为task的表。在Cake的命名规则中,表名是复数形式。Tasks,users,posts以 及comments对于Cake而言都是有效的名称。我们的tasks表有一个名为id的主键。Cake应用的数据库中所有的表都必须以id作为表的主键。CakePHP中的命名规则:CakePHP中使用的数据库表名都是复数形式的。所有数据库表都应该有一个名为id的字段作为表的主键。然后我们对CakePHP做了配置,告诉它使用caketoodoo作为应用的数据库,这一步骤是通过CakePHP配置文件夹下一个名为database.php的文件来实现的。在dataabase.php这个文件中,我们默认的数据库设置成了caketoodoo。我们也设置了CakePHP连接数据库服务器所使用的用户名和密码。最后,通过查看Cake的默认页面,我们也再次确认了Cake可以连接到我们的数据库。CakePHP命名规则的确保了这一切的发生。通过支持设置配置时的命名规则,Cake使得编码效率升至一个令人恐怖的水平,于此同时不适柔性。我们需做花费大量的时间进行配置,以使应用运行起来。我们所要做的是设置好数据库名称,剩下的Cake会“自动”的帮你解决。通过这章节,我们将了解更多Cake遵循的命名规则。编写我们的首个模型现在,Cake已经配置好了,它能与caketoodoo数据库一起很好的工作。接下来,我们编写我们的第一个模型。在Cake中,每个数据库中的表都应该有一个对应的模型。模型负责访问和修改数据库表中的数据。我们清楚,数据库中目前只有一个名为tasks的表。因此,我们只需要定义一个模型。下面就是我们所要做的步骤:动手时间:创建Task模型1 进入CakeTooDoo/app/models这个文件下。在这里,创建一个名为task.php文件. 2 打开该文件,写入如下代码: 确保php标签之前和?标签之后没有空格。然后保存文件。怎么回事?我们为数据库中的tasks表创建了我们的首个Cake模型。CakePHP中所有模型文件都位于app文件夹下名为models的文件里面。CakePHP中的命名规则:所有的模型文件都保存在app文件夹下名为models的文件夹里。通常来讲,数据库中每个表在这个文件下都有一个对应的文件(模型)。模型文件名都是数据库中对应表名的单数形式,文件的后缀为.php。因此数据库表tasks的模型文件名为task.php。CakePHP中的命名规则:模型的文件名应该是对应数据库里表名的单数形式。模型基本上都包含一个PHP类。类名称也是数据库表名的单数形式,但是这里它遵循的是骆驼命名法则(CamelCased)。因此我们模型的名字是Task。CakePHP中的命名规则:模型类的名称也是它所对应数据库表名的单数形式。你也注意到了这个类继承了另一个名为AppModel的类。在CakePHP中所有的模型都必须继承这个类。AppModel类又继承另一个叫做Model的类。Model是CakePHP的核心类,它包含所有在数据库中添加,修改,删除,以及访问数据的基本功能。通过继承这个类,所有的模型都可以调用这些函数,因此,当我们添加新类时,我们无需每次另外单独定义这些函数。我

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论