Zend Framework1 框架入门(针对Windows,包含安装配置与数据库增删改查)

 

 

最近公司接的项目须要用到Zend Framework框架,原本须要用的是ZendFramework2 ,可是因为原有代码使用了ZendFramework1 框架,因此顺带学习了。现将一些基础入门记录一下,以供后用。php

一. 搭建zend framework1开发环境html

  1. 下载框架源码,下载后解压到本地。mysql

    下载地址:https://packages.zendframework.com/releases/ZendFramework-1.12.9/ZendFramework-1.12.9.zipsql

  2. 利用源码生成project数据库

    环境准备:apache

    (1)首先要保证本身本地环境安装配置了Apache和PHP。  (为了方便,我使用的是 wamp数组

    (2)将php.exe的路径添加到系统环境变量中。将解压后的ZendFramework-1.12.9\bin 目录也添加到系统环境变量中。(为了执行源码中  zf 命令)浏览器

   安装:服务器

    运行cmd   进入apache配置的workspace目录,(wamp就是www目录,xampp就是htdocs目录)app

    执行:(quickstart为项目名称,能够自定义)

      zf create project quickstart 

    结果以下:

     

    而后看workspace文件目录下多出一个文件夹 quickstart

      目录以下:

      

      public 为公开目录

      application 为代码目录

      library 为库文件目录

      tests 为测试目录

      .zfproject.xml 为路由配置文件

    

  3. 启动apache,尝试访问index

    url: http://localhost/quickstart/public/index    (localhost为apache配置的域名)

    系统入口文件为: quickstart\public\index.php

     打开浏览器访问 http://localhost/quickstart/public/index

    发现报错

      

      这是由于咱们尚未在建立的工程目录中添加Zend框架的核心库文件。

    

  4. 为project添加框架核心库文件。

    有两种方法:

      (1)在php.ini中直接包含library(好处是 多个project 能够共用一份Zend框架的核心库文件。) 

        1)将ZendFramework-1.12.9\library 文件夹复制到 php安装目录的lib目录下

             例如:个人php安装目录为 C:\wamp64\bin\php\php5.6.25

           那么在 C:\wamp64\bin\php\php5.6.25\lib 下建立一个Zend文件夹

              将ZendFramework-1.12.9\library复制到Zend文件夹下

        2)修改php.ini  (若是是Wamp,那么要注意修改的是哪一个php.ini,通常在apache安装目录C:\wamp64\bin\apache\apache2.4.23\bin下,为了保险起见,建议将C:\wamp64\bin\php\php5.6.25下的php.ini一并修改)

           打开php.ini ,搜索  Windows: "\path1;\path2"

           在下面添加   include_path = "c:\wamp64\bin\php\php5.6.25\lib\Zend\library" 

                  (引号中为上述的library所复制的目录。)

           如图:

            

      (2) 在工程目录project中导入library 

         这个方法比较简单,只须要将  ZendFramework-1.12.9\library 文件夹覆盖到project目录下就能够了。  

 

    搞定以后再刷新 网页。

      

    出现以上画面,恭喜你,成功了!

 

二. 配置使用layout 和 配置文件application.ini  , .zfproject.xml 简介。

  1.  使用layout

    初始安装后的zend1框架只有初始结构,咱们须要引入layout布局

    运行cmd 进入project目录,执行   zf enable layout 

      如图:

      

   而后看project目录结构,发现多了layouts文件夹。

   再次刷新网页 http://localhost/quickstart/public/index

    

    发现多了title和一系列东西。是否是很神奇,若是想修改layout能够去修改layouts文件夹下面的layout.phtml,关于layouts就说到这里。

  2. 配置文件简介

    首先明确一点,zendframework1是标准的MVC模式的框架。

    (1)application/configs/application.ini是配置文件

      内容以下:

       

       初始状态下,包含了一些路径的配置以及错误状态码。

       这个配置分三种环境,生产环境production,开发环境development,测试环境testing。

        生产环境的error_code = 0是为了避免报错,其余环境都应该设置为1。

       之后要使用的数据库配置等信息,须要添加到这个文件中。

    (2)project根目录下的.zfproject.xml是路由文件,里面配置了可以访问的路由信息

      如图:

      

      咱们本身添加到Controller和view都须要写入这个文件中

        controller须要写入controllersDirectory标签里

          controllerName 为controller名 去掉后缀

          actionName为action名 去掉后缀

        view须要写入viewsDirectory标签里

          forControllerName 为view所属的controller名

          forActionName 为view所属的action名

      咱们须要访问的路由信息都应该加入这个文件,否则可能会报错404。具体见后面的mysql应用。

 

三. Mysql配置及增删改查应用。

  1. Mysql配置

    (1)首先建立并配置数据库

      因为我使用的是wamp,因此直接用phpMyAdmin,建立一个数据库 quickstart (名字自定义).

      建立数据表

CREATE TABLE `quickstart`.`m_user`
 (
     `id` INT NOT NULL AUTO_INCREMENT ,
     `name` VARCHAR(50NOT NULL , 
     PRIMARY KEY (`id`)
 )

       插入数据

INSERT INTO `m_user` (`id`, `name`) VALUES
(1, 'name1'),
(2, 'name2'),
(3, 'name3'),

       在application.ini底部加入以下配置

[mysql]
db.adapter=PDO_MYSQL
db.params.host=localhost
db.params.username=root
db.params.password=
db.params.dbname=quickstart

       [mysql]名字能够自定义,后面会用到

        host为数据库服务器地址   

        username为数据库服务器用户名

        password为密码

          dbname为刚才建立的数据库名

   (2)初始化数据库适配器
        通常来讲须要用到数据库的地方才须要初始化适配器,合理的作法是写在每一个控制器的init方法里,
      可是这样仍是很麻烦,并且代码冗余,所以抽象出一个BaseController控制器,将初始化数据库适配器
      放在BaseController的init()方法里,在须要使用数据库的控制器再继承这个新的控制器。
      新建文件: controllers/BaseController.php

 1 <?php  
 2 class BaseController extends Zend_Controller_Action  
 3 {  
 4     public function init()  
 5     {  
 6           
 7         $url = constant("APPLICATION_PATH").DIRECTORY_SEPARATOR.'configs'.DIRECTORY_SEPARATOR.'application.ini';  
 8         //这个名称要和application.ini配置的相同,我配置的是[mysql]  
 9         $dbconfig = new Zend_Config_Ini($url , "mysql");  
10         $db = Zend_Db::factory( $dbconfig->db);  
11         $db->query('set names utf8');  
12         Zend_Db_Table::setDefaultAdapter($db);  
13     }  
14 }

       zend framework的控制器必须继承Zend_Controller_Action,若是没继承这个类就不是控制器

   (3)建立表模型 UserModel

      通常来讲一个表对应一个模型,模型的PHP文件应该写在models文件夹下面

     新建文件:models/UserModel.php

<?php  
class UserModel extends Zend_Db_Table{  
    protected $_name='m_user';  
    protected $_primary='id';  
}  

          模型层的php也要继承一个类Zend_Db_Table不然就不是模型,

       $_name 为数据库的表名,$_primary为表的主键(主键的默认字段就是id,若是是这种状况主键能够不配置)

   (4)使用数据库实现简单查询操做

     增删改查操做须要调用Zend_Db_Table提供的方法。

      建立咱们本身的控制器UserController,继承BaseController

       新建文件:UserController.php

 1 <?php
 2 require_once APPLICATION_PATH . '/controllers/BaseController.php';
 3 require_once APPLICATION_PATH . '/models/UserModel.php';
 4 
 5 class UserController extends BaseController
 6 {
 7     public function getUserAction()
 8     {
 9         $user = new UserModel();
10         $result = $user->fetchAll()->toArray();
11         $this->view->result = $result;
12     }
13 }

       建立view  

     新建文件:views/scripts/user/get-user.phtml

<?php var_dump($this->result);?>

     (zend框架view的命名是根据Controller里的Action名,若是Action名采用驼峰式命名,则view将相应的大写转小写,并在前面加"-")

      修改路由文件.zfproject.xml

     在<viewScriptsDirectory>标签里添加

<viewControllerScriptsDirectory    forControllerName="User">
             <viewScriptFile forActionName="getUser" />
</viewControllerScriptsDirectory>

     在<controllersDirectory>标签里添加

<controllerFile controllerName="User">
        <actionMethod actionName="getUser" />
</controllerFile>

     

      演示效果

     在浏览器地址栏输入   http://localhost/quickstart/public/user/get-user

      (url规则为: 域名+project名+public+controller名+view名;若是将public文件夹设置为 访问目录,则url为: 域名+controller名+view名) 

    

    如图可以输出db中的内容,则为成功。

 

四.  增删改查

  1.插入操做

    插入数据通常须要从前台form获取数据,而后在客户端和服务端进行验证check后,调用insert方法插入数据库。

     insert方法须要将待插入的数据组成一个关联数组,key为列名,将此数组看成insert方法的参数

     为了方便,就不作form,直接将数据写在URL之中,而后在后台获取,代码以下:

    public function insertUserAction() {
        // action body
        $user = new UserModel();
        $name = $this->getRequest ()->getParam ( "name" );
        $set = array (
                "name" => $name
        );
        $user->insert ( $set );
        $this->getUserAction();
    }

     为了便于显示效果,在插入后,我直接调用了以前的getUserAction,跳转到get-user画面获取db数据而后显示。

     将这段代码加入UserController中。

     在.zfproject.xml中加入路由配置信息。

<controllerFile controllerName="User">
    <actionMethod actionName="insertUser" />
</controllerFile>
<viewControllerScriptsDirectory   forControllerName="User">
    <viewScriptFile forActionName="insertUser" />
</viewControllerScriptsDirectory>

     页面演示:url:   http://localhost/quickstart/public/user/insert-user?name=name_insert

       

    最后一条即为刚刚插入的数据。

  2.删除操做

    这个操做也很简单直接调用delete方法就行,可是须要传入一个参数,即要删除数据的id

      代码以下:

    public function deleteUserAction() {
        // action body
        $user = new UserModel();
        $id = $this->getRequest ()->getParam ( "id" );
        $adapter = $user->getAdapter ();
        $where = $adapter->quoteInto ( "id=?", $id );
        $user->delete ( $where );
        $this->getUserAction();
    }

     参照 插入操做 在.zfproject.xml中加入路由配置信息。

     页面演示:  删除id=5的数据

       url: http://localhost/quickstart/public/user/delete-user?id=5

        

    id=5的数据已经不存在了,删除成功。

  3.更新操做

    更新数据调用update方法,和insert相似,须要将待修改的数据组成一个关联数组,key是列名,而后在where条件中添加要更新的id信息。

    代码以下:   这次,只获取了id,也能够获取name信息,而后将$set 进行修改便可, "name"=>$name  

    public function updateUserAction() {
        // action body
        $id = $this->getRequest ()->getParam ( "id" );

        $user = new UserModel();
        $adapter = $user->getAdapter ();
        $set = array (
                "name" => "name".$id."_update"
        );
        $where = $adapter->quoteInto ( "id=?", $id );
        $user->update ( $set, $where );
        $this->getUserAction();
    }

     在.zfproject.xml中加入路由配置信息。

    页面演示: url:http://localhost/quickstart/public/user/update-user?id=2

     

     id = 2的信息被成功修改。

  4.查询操做

    考虑到sql注入,须要使用adapter,quoteinto起到的做用就是转义,避免sql注入

    查询条件为:  查询 id>1 而且 name不等于name2_update的全部数据,并按照id降序排序

    代码以下:

    public function getUserDetailAction()
    {
        $user = new UserModel();
        $adapter = $user->getAdapter ();
        $whereCondition = $adapter->quoteInto ( "name<>?", "name2_update" ) . $adapter->quoteInto ( "and id>?", 1 );
        $orderCondition = 'id desc';
        $result = $user->fetchAll($whereCondition,$orderCondition)->toArray();
        $this->view->result = $result;
        $this->render ( "get-user-detail" );
    }

    在views/scripts/user下建立get-user-detail.phtml 

     内容为  <?php var_dump($this->result);?> 

    在.zfproject.xml中加入路由配置信息。

    页面演示:

    url:http://localhost/quickstart/public/user/get-user-detail

    

    符合条件的数据被所有查出。

 

  以上就是关于zf1框架的配置使用以及mysql关联增删改查的操做,若有问题请联系。

  感谢查阅~~~

 

 

参照:

  http://blog.csdn.net/walkcode/article/details/16840243

  http://www.zendframework.org.cn/learn/

相关文章
相关标签/搜索