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 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 歡迎大家的加入!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章