#phalcon-入門篇3(優美的URL路由與Config)#php
本教程基於phalcon2.0.9版本nginx
##前言## 先在這裏感謝各位phalcon技術愛好者,咱們提供這樣一個優秀的交流平臺git
優美的URL不論實在MVC開發中仍是API開發中都是很重要的,它是一套規範可以幫助記憶,雖然phalcon原生的url地址並不友好可是能夠經過web容器進行URL重寫達到想要的效果,在本節還會對一個很重要的模塊進行講解那就是使用phalcon讀取配置文件,那麼就開始本節的學習吧!web
注:筆者水平有限,說的不正確的地方但願你們多多指正,一同交流技術sql
附上:json
喵了個咪的博客:http://w-blog.cnapp
教程代碼庫:http://git.oschina.net/wenzhenxi/Phalcon-tutorial學習
phalcon官網地址:https://phalconphp.com測試
phalcon中文社區:http://www.iphalcon.cn/url
##1. 優美的URL路由##
注意:phalcon.w-blog.cn能夠自行替換成本身的url
在開始以前咱們作一個實驗,在上一小節咱們成功運行了hello word例如以下URL:
http://phalcon.w-blog.cn/phalcon/public/
咱們請求一下:
http://phalcon.w-blog.cn/phalcon/public/?_url=/Index/index
會驚訝的發現竟然結果是同樣的,其實phalcon是經過最後一種方式請求的也就是帶有?_url=/控制器名稱/Action名稱,這種方式請求的爲了進一步測試咱們在IndexController.php中加入以下方法:
// 測試Action public function testAction() { echo "<h1>This is a testAction!</h1>"; }
在試着請求:
http://phalcon.w-blog.cn/phalcon/public/?_url=/Index/test
你們會發現一個問題,仍是顯示了**This is a index!**這是爲何呢這個是應爲被默認的view層渲染了那麼咱們把view層結構改一下以下:
這樣的話只有請求到Index/index的時候纔會進入到view層,那麼這個時候再次請求咱們就能獲得以下結果:
那麼問題來了咱們今天的目的是什麼,對的咱們要讓url優雅,咱們要利用web容器的url重寫功能. .
###1.1 Nginx###
把一下語句加入到nginx.conf中你的server{}中,下面咱們來說解一下這段配置:
#第一段話的意思是 當URL中包含 /phalcon/ 的話進入到下面的url 重寫 這樣定製的好處是針對項目其餘的文件請求方式不會被改變 location /phalcon/ { #這句話的意思是nginx的重寫URL規則 能夠看到把 /phalcon/後面的內容 放到了 public/index.php?_url=/ 後面 rewrite ^/phalcon/(.*)$ /phalcon/public/index.php?_url=/$1; }
###1.2 Apache###
在phalcon目錄下建立.htaccess文件加入以下語句 主要做用是指向到public
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ public/ [L] RewriteRule ((?s).*) public/$1 [L] </IfModule>
在public加入以下語句 主要做用是定向賦值給_url
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^((?s).*)$ index.php?_url=/$1 [QSA,L] </IfModule>
###1.3 優美的URL###
若是你們已經配置好了試着訪問一下如下地址:(這裏Nginx親測過,Apache未測試)
訪問默認的Index/index : http://phalcon.w-blog.cn/phalcon/
訪問Index/test http://phalcon.w-blog.cn/phalcon/Index/test
##2. 配置文件Config##
phalcon的配置文件支持四種類型分別是ini,Json,php,Yaml在教程裏面分別對咱們經常使用的三種ini,Json,php作簡單的說明yaml再此再也不作說明
###2.1 準備工做##
咱們先在項目目錄下建立以下文件已經目錄
咱們在ini.in中加入以下語句:
[database] adapter = Mysql host = localhost username = scott password = cheetah dbname = test_db
在json.json中加入:
{"phalcon":{"baseuri":"\/phalcon\/"},"models":{"metadata":"memory"}}
在php.php中加入:
return array( 'database' => array( 'adapter' => 'Mysql', 'host' => 'localhost', 'username' => 'scott', 'password' => 'cheetah', 'dbname' => 'test_db' ), 'phalcon' => array( 'controllersDir' => '../app/controllers/', 'modelsDir' => '../app/models/', 'viewsDir' => '../app/views/' ));
###2.2 獲取配置項###
上面咱們已經配置好了文件以及目錄,那麼問題就是咱們要如何使用,固然全部的一切都要在index.php中初始化配置也不例外,代碼以下:
//在文件頂部加上 以下語句 做用是加載命名空間中的類 use Phalcon\Config\Adapter\Ini as ConfigIni; use Phalcon\Config\Adapter\Json as ConfigJson; use Phalcon\Config\Adapter\Php as ConfigPhp;
爲們在代碼中加入以下初始化項
$ConfigIni = new ConfigIni('../Config/ini.ini'); $ConfigJson = new ConfigJson('../Config/json.json'); $ConfigPhp = new ConfigPhp('../Config/php.php');
這個時候咱們就已經能夠開始使用配置了:
echo $ConfigIni->database->host . '</br>'; echo $ConfigJson->phalcon->baseuri . '</br>'; echo $ConfigPhp->database->username . '</br>';
咱們再次請求會發現有以下輸出
那麼恭喜你已經成功讀取到了配置文件
##3. 小結##
咱們回顧一下今天教程的內容,優美的URL經過web容器Nginx或者Apache的URL重寫來實現,還有phalcon中的3種配置文件的使用,那麼到這裏咱們已經對phalcon有了一最基本的瞭解,下一節咱們一同來學習phalcon的log的使用以及Session的使用,謝謝你們的支持!
注:筆者能力有限有說的不對的地方但願你們可以指出,也但願多多交流!
Phalcon技術交流:364520707 PhalCon中文社區:287484785 歡迎你們的加入!