1. 安装

从 Zend Framework 的网页上下载最新版本。解压后,把整个目录拷贝到一个理想的地方,比如:/php/library/Zend。

打开 php.ini 文件,确认包含 Zend 目录的路径在 include_path 里定义了。以上面的配置为例,php.ini 中应有类似下面的条目:

include_path = ".:/php/library"

注意:Windows 下的写法略有不同,应该类似于 include_path = ".;C:\php\library"

初始的安装就这么简单。Zend Framework 的一些组件会用到 php 的一些附加模块。具体的要求请参考这里。

2. 项目的目录结构

如果你的项目不包含多个模块,可以用下面的目录结构:

application/controllers/IndexController.phpmodels/views/scripts/index/index.phtmlhelpers/filters/html/.htaccessindex.php如果你的项目要包含多个模块(比如:博客,社区,等等),那么建议使用模块化的目录结构。

3. 网页的根目录

网页的根目录应指向上述目录结构中的 html 文件夹。

4. 重写规则

编辑 html/.htaccess 文件,加入下面两行:

RewriteEngine onRewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php注意:上述是针对 apache 的配置。如果是其他的服务器,请参考这里。

5. 引导程序

编辑 html/index.php 文件,敲入下面代码:

<?phprequire_once'Zend/Controller/Front.php';$rootPath = dirname(dirname(__FILE__));Zend_Controller_Front::run($rootPath .'/application/controllers');上面代码的作用是实例化前端控制器(Front Controller)并运行它。6. 默认的动作控制器(Action Controller)

Zend Framework 的默认路由规则是 http://域名/控制器名/动作(方法)名。例如:

会被解析到名为 User 的控制器以及该控制器中定义的 show 方法。如果该方法没有定义,则默认转到 index 方法。

注意:在代码中,控制器名的后面要加上 Controller,而动作名的后面要加上 Action。

编辑 application/controllers/IndexController.php 文件,输入:

<?php
/** Zend_Controller_Action */
require_once'Zend/Controller/Action.php'; classIndexControllerextendsZend_Controller_Action
{
public functionindexAction()
{
}
}

7. 视图(页面)脚本

编辑 application/views/scripts/index/index.phtml,输入:

<!DOCTYPE htmlPUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"" http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>My first Zend Framework App</title>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>

8. 错误控制器

默认情况下,Zend Framework 的错误处理插件是被注册的。它需要一个错误控制器来处理错误。缺省的错误控制处理被假定为 ErrorController 以及其中定义的 errorAction。

编辑 application/controllers/ErrorController.php,输入:

<?php
/** Zend_Controller_Action */
require_once'Zend/Controller/Action.php'; classErrorControllerextendsZend_Controller_Action
{
public functionerrorAction()
{
}
}

下面是对应的视图脚本。编辑 application/views/scripts/error/error.phtml,输入:

<!DOCTYPE htmlPUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"" http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Error</title>
</head>
<body>
<h1>An error occurred</h1>
<p>An error occurred; please try again later.</p>
</body>
</html>

9. 运行

好,现在运行网站。在浏览器中键入下面三个地址,得到的结果应该是一样的——就是最最常见的“Hello, World!“。

http://域名
http://域名/index
http://域名/index/index
如果是这样,那么恭喜你!

Zend Framework 入门(1)—快速上手的更多相关文章

  1. Flask入门和快速上手

    目录 Flask入门和快速上手 python三大主流框架对比 Flask安装 依赖 可选依赖 创建flask项目 flask最小应用--hello word 非法导入名称 调试模式 路由 唯一的 UR ...

  2. Zend Framework 入门(4)—页面布局

    Zend Framework 的页面布局模块——Zend_Layout——既可以跟 MVC 一起使用,也可以单独使用.本文只讨论与 MVC 一起使用的情况. 1. 布局脚本 在 application ...

  3. Zend Framework 入门(2)—多国语言支持

    如果你的项目想要支持多语言版本,那么就需要用到 Zend_Translate.Zend_Translate 的详细文档在这里,不过如果想偷懒的话,也很简单,在View Helpers 文档中介绍了如何 ...

  4. pc/移动端(手机端)浏览器的直播rtmp hls(适合入门者快速上手)

    一.直播概述 关于直播,大概的过程是:推流端——>源站——>客户端拉流,用媒介播放 客户端所谓的拉流就是一个播放的地址url,会有多种类型的流: 视频直播服务目前支持三种直播协议,分别是R ...

  5. Zend Framework 入门(3)—错误处理

    undefined 说明脚本中一些对象没有设定 你应在在使用该对象前进行判断 例如: if(typeof(aobject) == "undefined"){   //错误处理 }

  6. [译]:Xamarin.Android开发入门——Hello,Android快速上手

    返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...

  7. smarty半小时快速上手入门教程

    http://www.jb51.net/article/56754.htm http://www.yiibai.com/smarty/smarty_functions.html http://www. ...

  8. EF Core 快速上手——EF Core 入门

    EF Core 快速上手--EF Core 介绍 本章导航 从本书你能学到什么 对EF6.x 程序员的一些话 EF Core 概述 1.3.1 ORM框架的缺点 第一个EF Core应用   本文是对 ...

  9. webpack快速入门——webpack3.X 快速上手一个Demo

    1.进入根目录,建两个文件夹,分别为src和dist 1).src文件夹:用来存放我们编写的javascript代码,可以简单的理解为用JavaScript编写的模块. 2).dist文件夹:用来存放 ...

随机推荐

  1. Asp.Net缓存(2)

    缓存页的多个版本 ASP.NET 允许在输出缓存中缓存同一页的多个版本.输出缓存可能会因下列因素而异: 初始请求 (HTTP GET) 中的查询字符串. 回发时传递的控制值(HTTP POST 值). ...

  2. URAL 1073 Square Country(DP)

    题目链接 题意 :这个人要投资地,每块地都是正方形并且边长都是整数,他希望他要买的地尽量的少碎块.每买一块地要付的钱是边长的平方,而且会得到一个一份证书,给你一个钱数,让你求出能得到的证书个数. 思路 ...

  3. hdu 1812 Count the Tetris

    高精度+polya原理可以搞定 思路: 设边长为n的正方形,c种颜色.旋转只有 0,90,180,270度三种旋法.旋0度,则置换的轮换数为n*n旋90度,n为偶数时,则置换的轮换数为n*n/4,n为 ...

  4. hdu 1309 Loansome Car Buyer

    纯粹的阅读理解题………… ;}

  5. cogs 自己出的题目 题解报告

    第一题很简单嘛,就是裸的动态树分治嘛 对于每一层的重心维护子树路径的信息和子树到上一层重心的点的信息 空间复杂度O(nlogn) 对于每一层我们按dis排序,之后记录军队数量的前缀和 查询的时候我们只 ...

  6. 8、双向一对多的关联关系(等同于双向多对一。1的一方有对n的一方的集合的引用,同时n的一方有对1的一方的引用)

    双向一对多关联关系 “双向一对多关联关系”等同于“双向多对一关联关系”:1的一方有对n的一方的集合的引用,同时n的一方有对1的一方的引用. 还是用客户Customer和订单Order来解释: “一对多 ...

  7. css控制UL LI 的样式详解

    用<ul>设置导航 <style> #menu ul {list-style:none;margin:0px;} #menu ul li {float:left;} </ ...

  8. Android 面试题(经典)

    1.Actvity的生命周期,生命周期中的onCreate与onResume有什么区别 Activity的生命周期有:onCreate,onStart,onRestart,onResume,onPau ...

  9. open_table

    /* Open a table. SYNOPSIS open_table() thd Thread context. table_list Open first table in list. acti ...

  10. Java 日期时间

    Java 日期时间 标签 : Java基础 Date java.util.Date对象表示一个精确到毫秒的瞬间; 但由于Date从JDK1.0起就开始存在了,历史悠久,而且功能强大(既包含日期,也包含 ...