麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

走進Zend Framework框架編程5(Zend_Controller進階)

2019-11-17 04:11:20
字體:
來源:轉載
供稿:網友

Zend_Controller進階

在前邊的例子中,我們的index.php引導文件所在的文件夾與控制器、視圖等所在的文件夾是不同的,這并不符合一般網站項目的文件夾的組織習慣。從本部分開始,我們把他們放在同一個文件夾中,這是因為ZF提供了靈活的文件夾組織和配置能力。
我們新的文件夾結構如下:  …/htdocs

library

  Zend

test.zf.com

  controllers

  models

  views

  index.php

  .htaccess
即把原來app_phpchina1.com文件夾下的子文件夾Controllers、models、views轉移到文件夾phpchina1.com下,與index.php和.htaccess文件放在一起。為了不覆蓋原來的代碼,我們把原來的phpchina1.com文件夾拷貝一份,命名為test.zf.com。
為了測試,我們建立一個新的虛擬主機test.zf.com。這可以仿照前面的phpchina1.com來完成,即在httpd.conf中添加:<VirtualHost *:8080>

ServerAdmin [email protected]

DocumentRoot “C:/PRogram Files/Apache Software Foundation/Apache2.2/htdocs/test.zf.com”

ServerName test.zf.com

ErrorLog “logs/test.zf.com-error.log”

CustomLog “logs/test.zf.com-access.log” common

</VirtualHost>
重新啟動Apache服務。
然后再在hosts文件中加一條
<服務器ip>  phpchina1.com
以后即可以以http://test.zf.com:8080/*.*的形式訪問新的網站。但現在暫時還不能像前邊的例子一樣運行原來的示例代碼,因為還需要對index.php里的路徑配置進行調整。
我們把語句PATH_SEPARATOR . ‘../App_phpchina1.com/models/’修改為:
PATH_SEPARATOR . ‘models/’
把語句”default”=>’../app_phpchina1.com/controllers’修改為:
“default”=>’controllers’

然后用瀏覽器打開地址http://test.zf.com:8080,就可以看到和原來一樣,顯示了字符串“Hello PHPChina1.com!”。也可以打開http://test.zf.com:8080/news顯示“Welcome to News!”字符串。

下一步我們對Controllers進行擴展改造。比如我們有這樣的需求:如果一個網站項目很大,有多個模塊,Controllers文件夾下將有大量的控制器文件,我們打算通過按模塊建立子文件夾對其進行分類存放,IndexController.php控制器文件存放在index文件夾下,news控制器文件存放在news文件夾下。
首先修改index.php文件,把
  $fc->setControllerDirectory(array(
  “default”=>’controllers’,
));
處的”default”=>’controllers’修改為
“default”=>’controllers/index’
這時http://test.zf.com:8080地址就可以打開了,顯示結果與原來相同。
但要訪問news文件夾下的NewsController.php控制器,必須把news添加到搜索路徑,并為其命名,我們這里命名為other模塊,這樣我們就添加以下語句:
$fc->addControllerDirectory(’controllers/news’, ‘other’);
然后打開地址http://test.zf.com:8080/news,看不到原來的結果。
再打開地址http://test.zf.com:8080/otherhttp://test.zf.com:8080/other/news,也看不到原來的結果。
原來,需要修改NewsController.php中的語句
Class NewsController extends Zend_Controller_Action為
class other_NewsController extends Zend_Controller_Action
即在類名前加“other_”字符串。然后訪問地址
http://test.zf.com:8080/other/news
即可得到正確的結果。
這里有一個新問題,即http://test.zf.com:8080/other/news和index默認文件夾的
OtherController控制器中的newsAction方法訪問路徑是相同的,如果index文件夾下同時還有文件OtherController.php,內容為:<?php

class OtherController extends Zend_Controller_Action

{

  function newsAction()

  {

echo “This is OtherController.php ==> newAction”;

  }

}

?>

那么http://test.zf.com:8080/other/news會不會顯示
This is OtherController.php ==> newAction
字符串的結果呢?不會的,因為按模塊搜索訪問方式優先。有了other搜素路徑名,就不能再訪問默認文件夾下的other控制器中的任何方法了,即使搜素路徑下沒有任何對應的控制器文件,也不能訪問。即,即使沒有news文件夾下的NewsController.php文件,http://test.zf.com:8080/other/news也不會獲得index文件夾下OtherController.php中newsAction方法的結果。
這里的搜素路徑和Web服務器的虛擬路徑有點相似。但是因為可以用代碼指定,所以更靈活一些。后面,我們根據這一點可以靈活的組織網站項目的文件夾結構。
我們對前邊ZF中請求URL的格式做一些補充,原URL格式
http://host_name/controller_name/action_name/param1/ value1/param2/ value2…
可以擴展為:
http://host_name/路徑/controller_name/action_name/param1/ value1/param2/ value2…
路徑名需要作為“路徑名_”字符串的形式加在
代碼“Class controller_name”的實現代碼的前邊,成為“Class路徑名_controller_name”的形式。明白了這點,在分析ZF的源代碼的時候,就不會被路徑問題所迷惑了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美韩国日本在线 | 国产免费午夜 | 国产高潮好爽受不了了夜色 | 亚洲精品xxx | 精品国产一区二区久久 | 一级成人在线 | 香蕉视频1024 | 关键词 | 禁漫天堂久久久久久久久久 | 欧美三级欧美成人高清www | 亚洲精品成人在线视频 | 成人午夜激情视频 | 91短视频版高清在线观看免费 | 亚洲欧美日韩一区二区三区在线观看 | 欧美日韩在线中文 | 一级电影免费看 | 久久草在线观看视频 | 色视频在线播放 | chinese 军人 gay xx 呻吟 | 国产精品区一区二区三区 | 中国fx性欧美xxxx | 国产精品午夜一区 | 成人三级电影在线 | 黄色片免费在线播放 | 91真视频 | 国产精品爱久久久久久久 | 亚洲四播房 | 91在线视频在线观看 | 在线免费观看麻豆 | 一级黄色影院 | 亚洲一二区视频 | 久久久婷婷一区二区三区不卡 | 成人短视频在线观看免费 | av电影在线免费 | 99视频有精品视频高清 | 国产精品久久久久久模特 | 国产精品成人亚洲一区二区 | 在线 日本 制服 中文 欧美 | 羞羞网站视频 | 一级精品 | 免费观看高清视频网站 |