框架主要是为了提高开发效率、使得团队开发人员之间的更容易沟通和协作以及提高应用程序的可维护性。学习了解一种或多种框架对实际项目的应用会有所帮助。
一、ZendFramework 的介绍:
ZendFramework(以下简称:ZF),以 Model-View-Controller(MVC)三层架构展开。将程序中的不同的部分独立开来,使得程序的开发互不影响和后期维护更加容易。
ZF框架的设计思想和策略:
ZF采用了前端控制器(Front Controller)设计模式,它把所有用户的请求发送到一个中心控制点,具体做法就是所有的请求都需要通过index.php入口(单入口可以配合Web服务器来实现,后面会提到)。然后通过 index.php 中的脚本把用户请求分发到对应的控制器中,控制器负责调用模型中的逻辑(Model)和用户界面(View)的呈现。

二、ZendFramework 的安装、简单实例
系统要求:ZendFramework-1.9.3 、CentOS 5.2+
1、下载 ZF(http://framework.zend.com/download/latest )
2、解压将其库类放到项目的根目录中;如:/var/www/nbaplayers/library/Zend......
3、创建项目的基本目录:

 
4、实例:
4.1、新建文件 /var/www/nbaplayers/index.php:
<?php
error_reporting(E_ALL|E_STRICT);//语句打开了错误输出开关,用于代码调试,正式发布的代码应该屏蔽错误信息。
date_default_timezone_set('Asia/Shanghai');//设定时区
set_include_path('.'.
                PATH_SEPARATOR.'./library'.  //用于设定类库的包含路径,ZF的系统类库就是在这里指定的。
                PATH_SEPARATOR.'application/models/'.    //包含自定义类文件。
                PATH_SEPARATOR. get_include_path()
                );
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();  //自动加载类

$frontController = Zend_Controller_Front::getInstance();//取得Zend_Controller_Front类实例
$frontController->setControllerDirectory (array(
        "default" => 'application/controllers',
    )); // 指定一组控制器文件路径,参数是数组。设置前端控制器,主要是让控制器知道我们的的控制器类在哪里
$frontController->throwExceptions(true);//让前端控制器抛出所有的异常。 默认情况下,前端控制器将捕获这些异常并将其人传递到 ErrorController 控制器,在开发过程,这样错误容易发现。但在实际运行中,不能将这些错误直接显示给前端用户。
$frontController->setParam('noViewRenderer', true);// 指明不使用视图,false 是默认值。
$frontController->setParam('noErrorHandler', false);
$frontController->dispatch(); //程序执行分发
?>
注意:如果你用的ZF是之前的版本的话,会出现以下提示:
Notice: Zend_Loader::Zend_Loader::registerAutoload is deprecated as of 1.8.0 and will be removed with 2.0.0; use Zend_Loader_Autoloader instead in /usr/local/zend/share/ZendFramework/library/Zend/Loader.php on line 207
那么将:
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload(); // 自动加载类
修改为:
require_once 'Zend/Loader/Autoloader.php';  // 自动加载类
$loader = Zend_Loader_Autoloader::getInstance();
$loader->setFallbackAutoloader(true);
$loader->suppressNotFoundWarnings(false);
就好了。具体可以看看ZF的官方说明。在Autoloader.php文件中,有一方法:
protected function __construct()
{
    spl_autoload_register(array(__CLASS__, 'autoload'));
    $this->_internalAutoloader = array($this, '_autoload');
}
用来实现自动加载类文件。
* spl_autoload_register — Register given function as __autoload() implementation
//设置对象的自动载入

4.2、新建文件 /var/www/nbaplayers/application/Controllers/IndexController.php:
<?php
class IndexController extends Zend_Controller_Action
{
      function indexAction()
      {
        echo "Hello ZendFramework!";
      }
}
?>

4.3 新建文件 /var/www/nbaplayers/.htaccess
RewriteEngine on
RewriteRule !/.(js|ico|gif|jpg|png|css)$ index.php

以上是说,启动 RewriteEngine 引擎,并把对除js、ico、gif、jpg、png、css等图片、js脚本、css的请求外都得经过index.php文件。当然上面的实例不创建这个也可以正常运行,但如果你使用ZF开发实际的项目,这就是必须的了。

4.4、运行:在浏览器地址栏输入http://www.domain.com回车,浏览器将显示结果:
Hello ZendFramework!
OK 完成!

ZendFramework的介绍、安装和实例运行相关推荐

  1. php 需要已安装且正在运行的邮件系统_php如何发送邮件?一个函数轻松搞定

    中国邮箱网讯 10月12日消息 大家都知道,我们可以通过php直接发送邮件.那么php是如何发送邮件的呢?其实很简单,那就是通过邮件发送神器mail()函数. 发送邮件 01mail()函数介绍 ph ...

  2. sql server 群集_SQL Server 2014 –安装群集实例–分步(1/3)

    sql server 群集 Do you want to install a SQL Server 2014 clustered instance? Not sure how to proceed? ...

  3. redis数据库NoSQL的介绍安装和使用

    Redis使用 redis介绍 什么是NoSQL NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题.目前一些主流的NOSQL产品: NoSQL数据库的分类 ...

  4. 一个完整的Installshield安装程序实例

    一个完整的Installshield安装程序实例-艾泽拉斯之海洋女神出品(一)---基本设置一 前言 Installshield可以说是最好的做安装程序的商业软件之一,不过因为功能的太过于强大,以至于 ...

  5. 一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(四) --高级设置二...

    一个完整的Installshield安装程序实例-艾泽拉斯之海洋女神出品(四) --高级设置二 原文:一个完整的Installshield安装程序实例-艾泽拉斯之海洋女神出品(四) --高级设置二 上 ...

  6. docker 详细介绍安装步骤以及简单的运用

    目录 一,docker的简单介绍 二,docker的安装步骤 Centos7安装 1.确定版本是否是Centos7以上 2.卸载旧版docker (如果有的话) 3.安装一些软件 4.设置docker ...

  7. conda 装tensorboardx_Pytorch数据可视化:TensorboardX安装及使用(安装测试+实例演示)...

    数据可视化:TensorboardX安装及使用 tensorboard作为Tensorflow中强大的可视化工具: https://github.com/tensorflow/tensorboard, ...

  8. Java XML解析工具 dom4j介绍及使用实例

    Java XML解析工具 dom4j介绍及使用实例 dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory ...

  9. 一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(三) --高级设置一...

    一个完整的Installshield安装程序实例-艾泽拉斯之海洋女神出品(三) --高级设置一 原文:一个完整的Installshield安装程序实例-艾泽拉斯之海洋女神出品(三) --高级设置一 上 ...

最新文章

  1. Stack:peek、pop、push、search
  2. DockingManager的使用入门
  3. JZOJ 5195. 【NOIP2017提高组模拟7.3】A
  4. display函数怎么使用_损失函数—深度学习常见损失函数总结【图像分类|上】
  5. C++编译代码的时候提示‘getInstance’ is not a member of ‘A’ A a = A::getInstance();解决办法
  6. c语言case怎么输入字母,如何使用switch case语句将字母转换为数字
  7. 数据结构与算法的时间空间复杂度
  8. 关于“指针数组”和”数组指针“
  9. Kubernetes集群部署及简单命令行操作
  10. js 读取外部的本地json文件
  11. Kettle入门操作——输入流(表输入、excel)详细
  12. 数据恢复软件真的可以恢复硬盘数据吗,有哪些数据恢复软件推荐?
  13. Hair-Gan论文翻译
  14. Vue对高德地图2.0的封装使用
  15. python打包和添加数据文件_python库打包分发setup.py编写指南
  16. MMCV之Runner介绍
  17. Ext3、Ext4、FAT、FAT32、NTFS、exFAT、Sparse、Raw
  18. map与multimap
  19. 【Wi-Fi 802.11协议】管理帧 之 Beacon帧详解
  20. 《Python计算机视觉编程》一书中关于增强现实茶壶显示的程序

热门文章

  1. 语言小型心形图案代码_c语言心形告白代码实现
  2. python 正则表达式方法_Python正则表达式一: 基本使用方法
  3. js手机键盘遮挡_完美解决手机网页中输入框被输入法遮挡的问题
  4. java应用窗口大小_java 如何让程序窗口随屏幕大小改变 | 学步园
  5. 镜像处理坐标 android,Android应用开发之Android重写ImageView实现图片镜像效果的代码教程...
  6. 素数c语言k1k2,1.编写一程序,输入两个整数k1,k2,(k1k2)。求出k1,k2间的素数...
  7. android gdb 命令大全,ndk-gdb  |  Android NDK  |  Android Developers
  8. mysql数据库建仓范式_存mysql个数
  9. python autopy_安装python autopy时出错
  10. 【人尽其才】颠覆思维☞合理分配工作