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

#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 歡迎你們的加入!

相關文章
相關標籤/搜索