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/

相關文章
相關標籤/搜索