如果使用了zf框架,那么数据层应用层防火墙的文件应该怎么放呢? - PHP框架开发

19CakePHP框架最全中文文档
上亿文档资料,等你来发现
19CakePHP框架最全中文文档
(一)CakePHP的基本原则;A.CakePHP的结构;控制器(Controller),模型(Model;(Component)、行为(Behavior);a)控制器扩展──组件(Component);组件(Component)是一个帮助简化控制器逻;控制器也同样配有回调函数(Callback);beforeFilter(),在所有的控制器动作;?befo
 (一) CakePHP的基本原则A. CakePHP的结构控制器 (Controller),模型 (Model) 及视图 (View) 是 CakePHP 的特色,除此之外它也包含了一些附加的类和对象,使得在 MVC 设计模式下开发更快更有乐趣。组件(Component)、行为 (Behavior) 及助手 (Helper),提供了可扩展性及可重用性来快速新增功能到你的应用中。现在,我们将站在较高的层级上,接着开始寻找一些关于如何使用这些工具的细节。a) 控制器扩展──组件(Component)组件 (Component) 是一个帮助简化控制器逻辑的类。如果你有一些想要在控制器(或应用程序)之间共享使用的逻辑,那么组件通常是很适合的。比如,框架核心提供的 EmailComponent 组件使得创建及发送 email 成为一个轻松的工作。所以并不是在一个控制器内编写发送 email 的方法,而是包装这样的逻辑以便在整个应用中被其他控制器共享使用。控制器也同样配有回调函数(Callback)。当你需要在 CakePHP 核心操作之间插入一些逻辑时,可利用这些回调函数。可利用的回调函数包括:beforeFilter(), 在所有的控制器动作逻辑开始之前执行? beforeRender(), 在控制器动作逻辑之后执行,但在视图输出之前? afterFilter(), 在所有的控制器动作逻辑之后执行,包括视图输出。 也许在 afterRender() 与 afterFilter() 之间没有什么不同,除非你手动在你的控制器动作之中呼叫 render() 及此后的包含一些逻辑操作。 ?b) 视图扩展──助手(Helper)助手 (Helper) 是用来辅助视图逻辑的类。与组件在控制器中的使用非常类似,助手允许在多个视图中存取及共享显示逻辑。其中一个核心助手是,AjaxHelper,它使得在视图中请求 Ajax 变得十分简单大多数的应用程序都会有许多重复使用的视图代码片段。CakePHP 使用布局 (layout) 及元素 (elements) 使得重用视图代码更为容易。预设的情况下,每个被控制器渲染的视图都出现在一个布局内。元素被使用在当小片段代码的内容需要被重用在多个视图的时候。c) 模型扩展──行为(Behavior)同样的,行为 (Behavior) 是用来在模型之间加入共享功能。举例来说,如果你将用户资料储存在树结构中,你可以具体指定你的 User 模型使用像树结构的行为,并获得在你的树结构中自由操作移除、新增和搬移节点的功能模型 (Model) 也支持另一个叫做 DataSource 的类。DataSource 是一个让模型以一致的方式操作不同类别数据的抽象层。虽然在 CakePHP 应用中主要的数据来源通常是数据库,但你也可以编写附加的 DataSource 来使模型表达 RSS feeds、CSV 文件、LDAP 目录数据 或 iCal 事件。DataSources 允许你从不同的数据来源来操作记录,而不只限制在使用 SQL 语句。DataSources 也允许你通过 LDAP 模型关联到许多 iCal 事件。就像控制器一样,模型也有使用回调函数的特性:??????? beforeFind() afterFind() beforeValidate() beforeSave() afterSave() beforeDelete() afterDelete()透过这些回调函数的名称,就应该可以了解它们的作用。你可以在讲述模型的章节找到更详细的信息。d) 应用扩展 Application Extensions控制器 (Controller)、助手 (Helper)、模型 (Model) 都有各自的父类,你可以用来定义应用层次的更改。 AppController (控制器父类,位置 /app/app_controller.php), AppHelper (助手父类,位置 /app/app_helper.php) 以及 AppModel (模型父类,位置 /app/app_model.php),都是放置你想要在整个应用中所公用控制器、助手或模型功能的好地方。路由 (Route),尽管不是类或文件,但它在 CakePHP 中扮演请求回应的角色。路由定义 CakePHP 如何对映 URL 与控制器动作之间的关系。默认的路由行为将&/controller/action/var1/var2& 对映至 Controller::action($var1, $var2),但是你可以使用路由来自定 URL 以及它们如何对应你的应用。一些在应用中的功能是值得整个打包的。插件 (Plugin) 是一个实现了特定功能的程序包,包含了模型、控制器和视图,并可以延申到多个应用之中。用户管理系统或简单的 blog 也许是一个相当适合的 CakePHP 插件B. 一次典型的CakePHP请求我们已经看过CakePHP的基本成分了,那么现在就来看看各个对象怎么完成一个基本的请求。继续讲我们之前的请求的例子,想象一下我们的朋友Ricardo刚刚在一个CakePHP的应用的首页上点击了“立刻买一个自定义的蛋糕!”这个链接。 图2. 典型的Cake请求。黑色 = 请求的元素, 灰色 = 可选的元素, 了;蓝色 = 回调方法1. Ricardo 点击了指向 /cakes/buy 的链接, 然后他的浏览器对你的服务器发出了一个请求。2. 路由(route)从URL中解释并提取出这次请求的参数: 控制器(controller), 动作(action)以及其他在这次请求中影响到业务逻辑的所有其他参数。3. 使用路由后,请求的URL被映射到一个控制器的动作中(在特定的一个控制器的类的一个方法)。在这个例子,是CakeController类的buy()方法。在控制器的所有动作逻辑执行之前会调用beforeFilter()回调方法(callback)。4. 控制器可能会使用模型来处理应用的数据。在这个例子里,控制器使用了一个模型从数据里得到Ricardo上次买的东西。在这次操作中所有这个模型适用的回调方法、习惯(behavior)和数据源(DataSource)都可能得到实施。即使模型没有被用到,所有的CakePHP控制器的初始化至少都需要一个模型。5. 当模型取得数据后,数据会被返回到控制器。模型的回调方法可能会被实施。6. 控制器可能使用组件对数据进行进一步的加工,或者进行其他的操作(例如会话处理、验证或者发电子邮件)。7. 一旦控制器使用了模型和组件以有效地准备数据,就可以使用控制器的set()方法把数据传送到视图(view)。在数据送到视图前,控制器的回调方法可能会被实施。视图逻辑会被执行,可能包括了各种元素及(或者)帮助方法。默认情况下,视图会在一个布局(layout)里被渲染。8. 附加的控制器回调方法(像afterFilter)可能被实施。最后,完整的经过渲染的视图代码就被送到Ricardo的浏览器了。C. CakePHP 档案结构让我们来看看CakePHP的盒子里是用什么组成的。你知道CakePHP看起来像是从基本MVC组成的,但你也同样需要知道它档案是如何组织的。????? app cake docs index.php vendors当你下载了CakePHP,你将看到四个主要的资料夹。app资料夹将是你施展你的魔术之处:这是你放置你应用程序的地方。cake资料夹是我们施展我们魔法的地方,请不要修改这个资料夹里的所有档案,如果你修改而导致魔法失效,我们将无法帮助你除错。docs资料夹放置了典型的读我、版本更新记录及授权资料档案。最后,vendors资料夹是可以放置需要使用在你应用程序的第三方PHP函数库a) App资料夹CakePHP的app目录将是开发应用程序时最常使用的一个。就让我们来更仔细的看app资料夹里面有些什么config 拥有一些CakePHP使用的设定。资料库连结的详细资料、启动组态、核心设定档案及许多应该被储存在这里的档案。储存用来国际化的字符档案。包含你的应用程序模型、行为和资料来源。这是用来储存CakePHP暂存资料的。实际上储存的资料是看你如何设定CakePHP,但这个资料夹通常用来储存模型描述、记录档和会谈资讯。 controllers 包含你的应用程控器及它们的组件。 locale models plugins 包含插件包裹。 tmp所有的第三方类别或函数库应该被放置在这个资料夹。可以简单的以App::import(‘vendor’, ‘name’)使用它们。也许你会觉得多馀或困惑于此vendors 处有vendors而上一层目录内也有vendors资料夹,这其中的差异是当我们讨论到管理多应用程序和较为复杂的系统设定时,可以使用不同的配置。views 展示层的档案被放置在此处:元素、错误页面、小帮手、布局和视图档案。 webroot 在产品安装模式下,这个资料夹应该是应用程序的根目录。包含了样式表、影像和JavaScript档案可放置的资料夹。D. CakePHP命名规则我们是命名规则的拥护者。虽然需要花费一点时间来学习CakePHP的命名规则,你省下更多时间在开发上:根据以下的命名规则,你得到不需花钱的功能,以及你将自己从搜寻设定档维护的恶梦中释放出来。命名规则达成一致的系统开发,允许其它的开发者较容易加入或是提供协助CakePHP的命名规则从许多开发者多年的经验及一些惯例筛选出来。尽管我们建议你开发时使用命名规则,我们应该提及大部份这些规则简单又直观,特别是在修改旧有系统时较为轻松容易a) 档案及类别名称命名规则一般来说,文件名是由下划线将单词分开,但是类名通常使用驼峰命名法。举例来说,类KissesAndHugsController的文件名会是kisses_and_hugs_controller.php。然而文件名不一定都以这样的规则来命名。例如:类EmailComponent的文件名是email.php,而类HtmlHelper的文件名会是html.php。b) 模型及资料库命名规则模型类别名称是单数且使用骆驼命名法。Person、BigPerson、和ReallyBigPerson都是模型命名规则的例子。资料表名称对应到CakePHP模型是复数且以下划线分隔单字。资料表名称people、big_people和 really_big_people,会各自与上述的模型对应。外键在hasMany、belongsTo或hasOne关系中随着相关模型在之后加上_id是被认可的。所以如果一个糕点师有许多饼干,饼干这个资料表透过baker_id外键将参考到糕点师这个资料表。结合资料表,使用hasAndBelongsToMany (HABTM)关系在模型之间的命名方式必需依照字母先后次序(是apples_zebras而不是zebras_apples)所有资料表与CakePHP模型互动(除了join资料表)需要有一个主键使每一列单一识别。如果你希望使用无单一识别主键的资料表,像是你的posts_tags结合资料表,CakePHP的命名规则就是加在资料表名称的单一主键。CakePHP不支援复合主键。在这情况下你要直接操作你的结合资料表资料,这代表你需要使用直接查询呼叫或是增加主键来使用一般的模型。例如:包含各类专业文献、中学教育、生活休闲娱乐、应用写作文书、专业论文、高等教育、行业资料、文学作品欣赏、19CakePHP框架最全中文文档等内容。 
  【】 
您可在本站搜索以下内容:
  CakePHP中文文档_IT/计算机_专业资料。cakephp21技巧这篇文章可以说是 CakePHP 教程中最经典的了。虽然不是完整的手把手系列,但作者将自己使 用 CakePHP 的经验...
  Web框架性能排行榜,cakePHP表现最差_互联网_IT/计算机_专业资料。作为开发人员... web框架搭建 12页 1下载券喜欢此文档的还喜欢 CakePHP框架最全中文文档... ...
 喜欢此文档的还喜欢 cakePHP应用开发 140页 免费 CakePHP框架最全中文文档 402页 免费 CakePHP你必须知道的21条技... s页 免费 cakephp中文手册 47页 免费 ...
 [action] =& view [controller] =& users ) ) 返回: Cakephp 源码包中 router.php 中: REST 是英文 Representational State Transfer 的缩写,中文翻译:表述性...
  实测thinkphp,qeephp,cakephp,zendframework,symfony流行框架性能_IT/计算机_...喜欢此文档的还喜欢 cakephp中文手册 47页 免费 使用_CakePHP_快速打造_... ...
  cakephp工作原理_电子/电路_工程科技_专业资料。cake PHP asdas2123123... cakePHP应用开发 140页 免费 Cakephp 入门 7页 免费 CakePHP框架最全中文文档...
 中文帮助文档史上最全 史上最全 Android 中文帮助文档史上最全什么是 Android Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一 Beta 版...
  暂无评价|0人阅读|0次下载|举报文档 使用_CakePHP_快速打造_Web_站点_IT/计算机_专业资料。PHP框架第1 部分: 入门 CakePHP 是一种用 PHP 构建 Web 站点的...
s  s页 2财富值 CakePHP中文文档 s页 1财富值 cakephp_acl 13页 2财富值...一个框架,在另一方面,拥有一个反转的控制流。为了在框架中制造一个投 票系统,...
赞助商链接
别人正在看什么?
赞助商链接Sybase&&DB&Vendor&&PHPOpenbiz&?&开放..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
用PHPOpenbiz框架构建商业Web应用
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口急问:如果服务器不支持pdo_mysql扩展,还有办法用ZF么? - PHP框架开发
- 无极免费小说
急问:如果服务器不支持pdo_mysql扩展,还有办法用ZF么? - PHP框架开发
RT!如果支持的话,操作起来还需要注意什么呢?是否和用pdo_mysql的情况下一样?{:3_170:}
这个是和你环境的配置有关的 造成这种情况可能有多种原因 说法[1] :这个问题概括起来说就是你的PHP不支持mysql_connect()函数。为什么呢?这是由于PHP是一种模块化的设计,除了核心的内容,其他都是可选的。之所以不支持,是因为在编译PHP时没有加入对MYSQL数据库的支持。 说法[2]:因为卸载了以前的mysql,重装的mysql又不是rpm装的 所有安装后的路径不同了;但是在原先装apache的时候需要./configure \\ --prefix=/usr/local/php \\ --with-mysql=/usr/local/mysql \\ (主要是这句) 用来指定mysql的安装路径 所以在重装了之后因为路径不一样,apache就无法找到mysql的安装路径 也就出现了mysql_connect:未被定义的错误 建议你重新配置一下环境,检查哪里有问题,也可参考
其他回答 (4)
PDO是PHP 5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接和处理,什么 php_mysql.dll、php_pgsql.dll、php_mssql.dll、php_sqlite.dll等等扩展来连接MySQL、 PostgreSQL、MS SQL Server、SQLite……妈的,杯具了……原来是支持其他类型的数据库……
PDO_SQLITE和PDO_MYSQL扩展,对于ZF来说,使用方法一样吗?继续顶!
我测试的,同样的SQL语句,在PDO_MYSQL适配器下OK,可是杯具的是在PDO_SQLITE下报错!
这个是和你环境的配置有关的 造成这种情况可能有多种原因 说法[1] :这个问题概括起来说就是你的PHP不支持mysql_connect()函数。为什么呢?这是由于PHP是一种模块化的设计,除了核心的内容,其他都是可选的。之所以不支持,是因为在编译PHP时没有加入对MYSQL数据库的支持。 说法[2]:因为卸载了以前的mysql,重装的mysql又不是rpm装的 所有安装后的路径不同了;但是在原先装apache的时候需要./configure \\ --prefix=/usr/local/php \\ --with-mysql=/usr/local/mysql \\ (主要是这句) 用来指定mysql的安装路径 所以在重装了之后因为路径不一样,apache就无法找到mysql的安装路径 也就出现了mysql_connect:未被定义的错误 建议你重新配置一下环境,检查哪里有问题,也可参考http://www.discuz.net/viewthread.php?tid=931220
等待您来回答
该问题来自:芜湖拼车网,芜湖信息港其它网游领域专家zfdebug调试zend framework笔记-Php框架模板-Php教程-壹聚教程网zfdebug调试zend framework笔记 一、zfdbug简介:
&&zend 过程中,测试是无处不在的,但zend framework测试非常麻烦。因此就有老外写了一个zf的debug插件,非常全面(,内存,,缓存,,运行,异常),它能展示我们平时看不到的信息对我们快速定位问题,提高系统的性能,安全性等都有很大的帮助。
有了zfdebug,以后使用zend framework开发项目,调试再无烦恼。
二、zfdebug的官方:
/p/zfdebug/
/p/zfdebug/downloads/list
seo教程ver=&showmenu({'ctrlid':this.id,'pos':'13'})& style=&display: position: absolute&&
下载 (7.57 kb)
三、 zfdebug安装方法
下载之后的文件不能直接运行的,只能把重要的几个文件复制到自己的zf项目中,并且做些配置。
以zf1.10.0为例子。
把zfdebuglibraryzfdebug 复制到 你自己zf项目的库文件夹下面,例如:zfproject/library/zfdebug
然后打开文件zfdebugdemos_application_bootstrap.php 复制里面的protected function _initzfdebug()全部到你项目的
bootstrap.php里面。
这样就能看到zfdebug了。
(zfdebug的图片不需要复制,因为zfdebug里面已经把zfdebug的图片写成数据流的方式来显示了)
四、灵活的使用zfdebug
但在实际的使用过程中还要注意下面几点,
1.默认的情况下zfdebug只显示三项的调试信息,如果要想显示更多的调试信息类型,就要修改
你项目的bootstrap.php的_initzfdebug的内容。
&& && && &$autoloader = zend_loader_autoloader::instance();
& && && && &$autoloader-&registernamespace('zfdebug');
& && && && & $db = zend_registry::get ( 'db');
& && && && &$options = array(
& && && && && & 'plugins' =& array('variables',
& && && && && && && && && && && && &'database' =& array('adapter' =& $db),
& && && && && && && && && && && && &'html',
& && && && && && && && && && && &&&'file' =& array('base_path' =& myweb_root_dir),
& && && && && && && && && && && &&&'memory',
& && && && && && && && && && && &&&'time',
& && && && && && && && && && && &&&'registry',
& && && && && && && && && && && &&&'exception'),
& && && && &);
2.调试信息在项目开发过程中要用到,实际使用时就关闭的,所以应该在配置文件application.ini里面加上zfdebug开关的配置。
例如& &zfdebug.open = 1
那么在_initzfdebug()中就可以根据这个值来是否执行zfdebug了。
3.默认情况下,zfdebug使用的js文件是/ajax/libs//1.3.2/jquery.min.js,也就是说如果在不能外网的情况下,zfdebug的结果栏是可以显示出来,但点击之后会有js错误。
的办法是修改_initzfdebug()的jquery_path变量。
&& && && &$options = array(
& && && && && & 'plugins' =& array('variables',
& && && && && && && && && && && && &'database' =& array('adapter' =& $db),
& && && && && && && && && && && && &'html',
& && && && && && && && && && && &&&'file' =& array('base_path' =& myweb_root_dir),
& && && && && && && && && && && &&&'memory',
& && && && && && && && && && && &&&'time',
& && && && && && && && && && && &&&'registry',
& && && && && && && && && && && &&&'exception'),
& && && && && & 'jquery_path'=&&http://lcoalhost/zfproject/templates/default/js/jquery.min.js&
& && && && &);
4)也是js的问题。一般的情况下zfdebug很好的运作,但实际使用中,很有可能zfdebug的jquery.min.js和你项目的js有冲突。确实是个头痛的问题。
&&我解决的办法是修改zfdebug的核心文件,使zfdebug的结果在iframe的另外一个窗口显示,这样就避免了js冲突的问题。
要深入研究zfdebug,主要看libraryzfdebugcontrollerplugindebug.php 和libraryzfdebugcontrollerplugindebugplugin下面的php文件。那么你就知道zfdebug的原理和修改了。也会惊叹作者对zf内核的熟悉。上一页: &&&&&下一页:相关内容

我要回帖

更多关于 应用层 的文章

 

随机推荐