让我们一起爱米兰
站内搜搜:
移动设备
请扫描二维码
或访问
m.milan100.com
您所在的位置 -> 米兰百分百 -> CakePhp -> CakePHP框架连载---CakePHP的基本概念

CakePHP框架连载---CakePHP的基本概念

点击数:1070 发表时间:2010-07-05 17:47:41 作者: 来源链接:
分享到:
分享到微信

  本节将简短地介绍 MVC 的概念以及他们如何在Cake中实现的。如果你是初学 MVC (模型-视图-控制器),那么你一定要看这一章。我们将从一个通用的 MVC 概念的讨论开始,并逐渐进入特定的 CakePHP 中的 MVC 应用,最后使用MVC模式演示一些简单的 CakePHP 的例子。jZNI%O3{E8ihr0

PHPChina 开源社区门户H q5?[2J'AX a

    模型--视图--控制器(Model-View-Controller)是一种软件设计模式,它可帮助你有逻辑地划分代码,使代码可重用、可维护。模型--视图--控制器最先由Gang of Four的作者小组描述出来。Dean Helman 写到(以下节选自Objective Toolkit Pro白皮书):PHPChina 开源社区门户e1UNq6G)z3h-Y

PHPChina 开源社区门户_7[W1j"|'~ [o)P

  “MVC 范例是一种分解应用的方法,或者甚至仅仅是一个应用接口的一小部分,它将应用分解成三个部分:模型、视图和控制器。开发 MVC 最先的目的,是用来将原有的输入、处理、输出的角色映射到 GUI 的领域中”。PHPChina 开源社区门户2G7c}vY]%U

2T2e,xt,h"AQM0   输入 → 处理 → 输出(控制器 → 模型 → 视图)

"H_[tyE+K*?w0

FM$E~5A O?(c0    在 Cake 的术语中,模型代表了一个特定的数据库表/记录,以及它和其他表和记录之间的关系。模型也可以包含校验规则,它会在插入或者更新模型数据时应用。视图代表了 Cake 的视图文件,这些是一些普通的嵌入了 PHP 代码的 HTML 文件。控制器处理服务器的请求。它获取用户输入(URL 和 POST 数据),应用业务逻辑,使用模型来从数据库和其他数据源读取数据或者写入数据,最后,将数据输出到合适和视图文件。

[ o5N3V8``;q0PHPChina 开源社区门户9sVA%ph&{%K*j

PHPChina 开源社区门户 _*v$zZ(u

    为了能尽可能更容易地组织应用程序,Cake使用了这个模式不仅仅用来管理对象如何在应用之中进行交互,还管理了如何存放文件。PHPChina 开源社区门户2A*T1qt1F;zwh

"^CPE4O V0Cake的文件结构一览

*e*~jW5~zRL3xt0PHPChina 开源社区门户+|,ZZ cste4K

    当你在服务器上解压开 Cake 安装包,你会发现有四个文件夹—app,cake,tmp,vendors。其中cake文件夹是 Cake 的核心库所放的地方, 基本上你不需要动它。PHPChina 开源社区门户}%nbo(zK1G.^PG

Z;|XT s0Ai:o0其实它并非一直这样—— 在CakePHP的0.10.0版本发布之前,所有东西都是放在在一个文件夹cake下面的,这种结构被证明有一些问题的存在:

x#c.]?l&wS0

1. 如果你想部署超过一个的Web应用程序,你需要下载并多次安装Cake,这样核心库就重复了,这不仅对空间是一种浪费,同时也违背了CakePHP试图遵循的DRY原则。
2. 当 CakePHP 新版本发布时,你必须非常小心以免 app 文件夹下面的文件被新版本中的默认文件所覆盖。
 
   app文件夹是你的程序和文件所放的地方。核心库和应用程序文件夹的分离使得你可以有许多程序目录共享同一个 Cake 库。这也使得更新 CakePHP 变得更加容易:你只需要下载最新版本的Cake并覆盖当前的核心库,而不需要担心是否会覆盖掉你为你的应用所写的东西。

9^p Ui??8C O0    tmp目录可以用于不同的 Cake 操作,比如baking(自动创建新的php文件),缓存和日志记录。  vendors目录文件夹来存放第三方库文件。下面的列表显示了主要的文件夹和它们的基本目的:

C2mj7[JpV0

  • PHPChina 开源社区门户1UG0_7I[PGi

    cake(根目录)PHPChina 开源社区门户7\AB?)@x&I)Y

    • PHPChina 开源社区门户W"R m FqQ:?

      app(这里存放你的应用程序逻辑)

      W1TL7bv0
      • PHPChina 开源社区门户P4g1D!eI6f*e&h

        config(特定于应用的配置文件,比如ACL,core, database connection,routes, paths, 和tags)

        NA3q#O%l3{@0x0
      • Y u'L9?tu0controllers(这里放置控制器)

        OL3K+x t?7w{0
        • x ss~:[ Y|j0components(组件,也就可以协助控制逻辑的类,存放的地方)PHPChina 开源社区门户2EX#Z,_&vM_

      • C^o:En,e%jfu-J0index.php(cake中有三个该文件:它令用户可以用不同的方法部署 Cake 应用。)

        &l7b)W;D5wAv7H0
      • PHPChina 开源社区门户+F3F6T,\8spp G

        models(放置模型)PHPChina 开源社区门户W/tO/}v

      • 2u9L3G Cyby1R0plugins(放置插件或者第三方应用)

        !~qu&Q)EK rk |}0
      • x ]7s&~OK0tmp(用于日志、baking等等)

        W\,X&l)`-te0
      • PHPChina 开源社区门户 bv)vO{~8p6i

        views(与视图相关文件)

        2k0\"k'p5o/I&PM0
        • zf;[-G;Sy5[H%B0elements(小的经常重复使用的布局零件)

          +IPH!{HPhA0
        • PHPChina 开源社区门户-O3M9M_/x~ ot

          errors(存放错误页面)PHPChina 开源社区门户0j,X|K1Kc$e u

        • j1Mg&`)V\^0helpers(自定义的助手类文件)PHPChina 开源社区门户2OOiC%y_"E DQ

        • PHPChina 开源社区门户YI(N pQ1i

          layouts(页面布局)PHPChina 开源社区门户|JL9o S,n

        • 7N tsb j'ywA ~c!v0pages(PagesController管理的静态内容)

          FO;n*w Z0
      • *{H4z.q] J0?0webroot(这个目录用作网站的根目录,可以并将公共的文件放在这里)

        b7K:] ZG(W3Y3j0
        • ;Fq5d {6ajH3NCqd0css

          LA1V-cc;X5l;Aa0
        • Ip+A3F:]%\BigF0files

          1j3v2\*O7^0S0
        • PHPChina 开源社区门户{ |Md7cF

          imgPHPChina 开源社区门户)Qt/Of3Pa(g-d%H

        • 5rA!L B z M0jsPHPChina 开源社区门户 Udk'vVPaMN#t

    • J2m#b3z'WZ0cake(库文件,最好不要动。)PHPChina 开源社区门户]#xe1Lvs

    • PHPChina 开源社区门户4U8j0ix0N} Cp

      index.php

      8^Q9I0A)o q^7o*p0
    • PHPChina 开源社区门户#L ok ]ZH l `

      vendors(放第三方库文件)

  • 0
    很 好
    0
    一 般
    0
    差 劲
    热门新闻
    相关文章
    上一篇: CakePHP框架连载---CakePHP的配置
    下一篇: CakePHP: Assigning The Return Value of New By Refe
    评论区
    匿名

    返回首页 | 收藏本页 | 回到顶部
    Copyright 2010. 米兰百分百 Powered By Bridge.
    京ICP备15050557号