转载

每日一博 | phalcon入门篇(优美的URL与Config)

phalcon-入门篇3(优美的URL与Config)

发表于22小时前(2016-02-02 10:47)   阅读( 270 ) | 评论( 0 0 人收藏此文章,

0

摘要

优美的URL不论实在MVC开发中还是API开发中都是很重要的,它是一套规范能够帮助记忆,虽然phalcon原生的url地址并不友好但是可以通过web容器进行URL重写达到想要的效果,在本节还会对一个很重要的模块进行讲解那就是使用phalcon读取配置文件,那么就开始本节的学习吧!

php phalcon 框架

目录[-]

  • phalcon-入门篇3(优美的URL路由与Config)
  • 前言
  • 1. 优美的URL路由
  • 1.1 Nginx
  • 1.2 Apache
  • 1.3 优美的URL
  • 2. 配置文件Config
  • 2.1 准备工作
  • 2.2 获取配置项
  • 3. 小结
  • phalcon-入门篇3(优美的URL路由与Config)

    每日一博 | phalcon入门篇(优美的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层结构改一下如下:

    每日一博 | phalcon入门篇(优美的URL与Config)

    这样的话只有请求到Index/index的时候才会进入到view层,那么这个时候再次请求我们就能得到如下结果:

    每日一博 | phalcon入门篇(优美的URL与Config)

    那么问题来了我们今天的目的是什么,对的我们要让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 准备工作

    我们先在项目目录下创建如下文件已经目录

    每日一博 | phalcon入门篇(优美的URL与Config)

    我们在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>';

    我们再次请求会发现有如下输出

    每日一博 | phalcon入门篇(优美的URL与Config)

    那么恭喜你已经成功读取到了配置文件

    3. 小结

    我们回顾一下今天教程的内容,优美的URL通过web容器Nginx或者Apache的URL重写来实现,还有phalcon中的3种配置文件的使用,那么到这里我们已经对phalcon有了一最基本的了解,下一节我们一同来学习phalcon的log的使用以及Session的使用,谢谢大家的支持!

    注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!

    Phalcon技术交流:364520707 PhalCon中文社区:287484785 欢迎大家的加入!

    原文  http://my.oschina.net/wenzhenxi/blog/612865?fromerr=7cNLlgSF
    正文到此结束
    Loading...