1. 程式人生 > 其它 >phalcon-入門篇3(優美的URL與Config)

phalcon-入門篇3(優美的URL與Config)

phalcon-入門篇3(優美的URL路由與Config)

本教程基於phalcon2.0.9版本

前言先在這裡感謝各位phalcon技術愛好者,我們提供這樣一個優秀的交流平臺

優美的URL不論實在MVC開發中還是API開發中都是很重要的,它是一套規範能夠幫助記憶,雖然phalcon原生的url地址並不友好但是可以通過web容器進行URL重寫達到想要的效果,在本節還會對一個很重要的模組進行講解那就是使用phalcon讀取配置檔案,那麼就開始本節的學習吧!

注:筆者水平有限,說的不正確的地方希望大家多多指正,一同交流技術

附上:

喵了個咪的部落格:http://w-blog.cn

教程程式碼庫:http://git.oschina.net/wenzhenxi/Phalcon-tutorial

phalcon官網地址:https://phalconphp.com

phalcon中文社群:http://www.iphalcon.cn/

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 PhalconConfigAdapterIni as ConfigIni;
use PhalconConfigAdapterJson as ConfigJson;
use PhalconConfigAdapterPhp 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 歡迎大家的加入!