最近公司接的項目須要用到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(50) NOT 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/