zoukankan      html  css  js  c++  java
  • PHP从入门到精通——读书笔记(第20章:Zend Framwork框架)

    第二十章:Zend Framwork 框架

    1:概述


    2:Zend Framwork 环境搭建
    1)环境配置:使用ZF框架进行项目开发,首先需要对PHP运行环境进行配置,从而使整个运行环境能够支持ZF的各个组件和MVC运行机制。从ZF的MVC运行机制可以知道,所有HTTP请求都需要访问 index.php 引导文件,而实现这个功能就需要使用Apache的 mod_rewrite 功能。由于ZF的数据库访问是基于PDO的,所以需要开启PHP的PDO_MySQL扩展

    (1)开启Apache的mod_rewrite功能
    进入Apache安装目录下的conf 子目录,打开该目录的httpd.conf 文件,去掉 #LoadModule rewrite_module modules/mod_rewrite.so的#注释标记,这样就可以加载 mod_rewrite.so 模块。使Apache加载 mod_rewrite.so 模块后还需要指定 rewrite 生效的目录,这里指定 Apache 默认主目录为rewrite 生效目录。在httpd.conf 文件中找到 “DocumentRoot” 配置项,将该配置块中的 “AllowOverride None” 改为 “AllowOverrid All”。

    (2)启用PHP的PDO_MySQL 扩展——在php.ini文件中,找到 ;extension=php_pdo_mysql.dll 并去掉其注释。开启PDO_MySQL扩展后,还需要查看PHP安装目录下的 ext 子目录中是否存在 php_pdo_mysql.dll 文件和 php_pdo.dll 文件,如果不存在则需要下载这两个 dll 文件,然后复制到该子目录中。重启apache 服务器使配置生效。

    注意:为能完全发挥ZF各组件的功能,建议使用PHP 5.2.6 或以上版本

    注意:在PHP最新版本(PHP5.3.6)以上两个功能都已经默认开启!

    3:框架架构——ZF框架搭建

    1)手工方式搭建:
    (1)创建工程test,在test目录下创建程序的根目录public,并在public目录下创建引导文件 index.php。代码如下:

    View Code
    <?php 
    /* 
    PHP的两个常量的作用
    DIRECTORY_SEPARATOR:路径分隔符,linux上就是‘/’    windows上是‘\’
    PATH_SEPARATOR:include多个路径使用,在windows下,当你要include多个路径的话,你要用”;”隔开,但在linux下就使用”:”隔开的。
    所以编写程序时最好用常量 PATH_SEPARATOR 代替,否则如果系统从linux移植到win系统或反过来移植会出错!
    get_include_path取得当前已有的环境变量,加上前面的设置就是新的系统include
    */
    
    set_include_path ('../library'.PATH_SEPARATOR.get_include_path() ); //设定路径
    
    //调用Zend类库
    require_once 'Zend/Application.php';
    
    //读取配置文件
    $application = new Zend_Application('project', '../application/configs/application.ini ');
    
    //运行方式: 启动文件->运行
    $application->bootstrap()->run();

    上述代码中,使用 set_include_path() 方法,包含 library 目录,library 目录用于存放程序所依赖的类库、使程序在运行时能够直接找到这些类。ZF提供了 Zend_Application 组件,所有配置在扩展名为 ini 或 xml 的配置文件中指定,并通过 Zend_Application 组件进行解析。Zend_Application 组件的构造函数包含两个参数,其中第一个参数用于指定配置文件中环境参数的名称,第二个参数用于指定配置文件的位置。

    实例化Zend_Application 组件,然后调用该组件的 bootstrap() 方法生成启动类对象,然后调用启动类的 run() 方法运行程序

    说明:在index.php文件中,没有加入结束符 "?>",这是因为在文件结尾处它并不是必需的,而且这样也可以避免产生一些难于调试的问题,还可以防止非法注入

    (2)在public 目录下创建URL 重写文件 .htaccess,将所有不能映射到磁盘上已存在的文件的URL都要index.php来代替:

    RewriteEngine on
    RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

    (3)修改application.ini 配置文件:

    [project]                                      //头部标识
    bootstrap.path = "../application/Bootstrap.php"; //启动文件路径
    
    bootstrap.class = "Bootstrap"; //启动类名
    
    phpSettings.display_errors = 1; //错误类型
    
    phpSettings.date.timezone = "Asia/GMT-8"; 时间区域
    
    resource.frontController.controllerDirectory = "../application/controller"; //控制器路径

    (4)编写启动类,代码如下:

    <?php
        class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
    
             public function _initAutoload(){
                    
                    $moduleAutoloader = new Zend_Application_Module_Autoloader(array('namespace'=>'', 'basePath'=> '../application' ));
    
                    return $moduleAutoloader;
             }
    
    }

    上述代码中创建了启动类,在_initAutoload() 方法中实例化 Zend_Application_Module_Autoloader 对象并返回,目的是使启动文件自动加载模块资源,设置的底层路径为应用程序文件夹application,这样开发人员在编写程序时,就可以按照ZendFramework 的目录结构引用类,而不需要使用 require()等包含函数包含要引用的类。
    在启动类中以 _init 开头的方法被当作资源方法自动运行,如果方法存在返回值,会被作为资源保存

    (5)创建控制器
    Zend Framework 如何处理HTTP请求:默认情况下,URL的第一个部分会映射到一个控制器,第二个部分则映射到控制器类中的Action(缺少则为index),然后ZF的转发器会根据控制器的名称找到具体的控制器类。通常会把控制器名称加上”Controller“,控制器第一个字母大写。类似的,Action会映射到控制器类中的一个类方法。默认,会被转换成小写字母,然后加上Action:

    <?php
        //创建IndexController 控制器
        class IndexController extends Zend_Controller_Action
        {
             //创建 indexACtion 动作
             public function indexAction()
             {
                      //为视图变量title初始化
                      $this->view->assign('title', 'Zend Framework 环境初始搭建');
    
                      $this->view->assign('body', '欢迎您搭建ZF成功!');
             }
        }

    (6)创建视图——默认视图保存路径为与 Controllers 同级目录下的 views 目录的 scripts 子目录中,视图文件则为scripts目录下的 index/index.phtml

    <?php echo $this->escape($this->title); ?>
    <?php echo $this->escape($this->body); ?>

    2)使用Zend Studio开发工具搭建Zend Framework的MVC框架结构

    3:Zend Framework 中的常用组件

    1)Zend_Auth 认证——Zend_Auth只涉及认证而不是授权。认证被宽松地定义为基于一些证书(credential)来确定一个实体(例如身份)是否确实是其所声称的。而授权是一个过程,决定是否允许一个实体对其他实体进行访问、执行操作。

    注意:Zend_Auth 中不能使用 new 操作符和 close 关键字,而是需要使用 Zend_Auth::getInstance()来代替:static Zend_Auth::getInstance()

    2)Zend_Db数据库操作

    3)Zend_Cache 精细缓存

    4)Zend_Layout站点布局

    5)Zend_Paginator数据分页

    6)Zend_Mail发送邮件

  • 相关阅读:
    邮箱整理
    C++ Primer Plus 6 笔记(1)
    MySQL的远程链接
    MySQL的安装和使用
    nginx的反向代理和负载均衡
    linux--配置开发环境 --Nginx篇
    linux--配置开发环境 --Apache篇
    Linux -- 运维
    Linux
    使用宝塔面板部署tp5网站
  • 原文地址:https://www.cnblogs.com/mumue/p/2846143.html
Copyright © 2011-2022 走看看