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 欢迎你们的加入!

相关文章
相关标签/搜索