文档章节

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

喵了_个咪
 喵了_个咪
发布于 2016/02/02 10:47
字数 1384
阅读 8139
收藏 57
点赞 8
评论 16

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

© 著作权归作者所有

共有 人打赏支持
喵了_个咪
粉丝 241
博文 136
码字总数 178071
作品 4
杨浦
技术主管
加载中

评论(16)

喵了_个咪
喵了_个咪

引用来自“咚往咚来”的评论

引用来自“夏侯”的评论

博主是做java出身的吧,web容器这词貌似只有java圈说

太孤陋寡闻了你

引用来自“夏侯”的评论

请大神指教一二
其实我们一般讲nginx或者是apache(或者说tomket)都是叫做web服务器当然也叫做web容器但是确实说web容器的比较少,一般web容器对于java来说比较形容一些,一般java应用都是通过编译之后把编译之后的class文件部署到web服务器或者web容器的目录中,当然这是我的个人的一个观点
夏侯
夏侯

引用来自“咚往咚来”的评论

引用来自“夏侯”的评论

博主是做java出身的吧,web容器这词貌似只有java圈说

太孤陋寡闻了你
请大神指教一二
喵了_个咪
喵了_个咪

引用来自“zonghua”的评论

引用来自“喵了_个咪”的评论

引用来自“金三胖”的评论

重新编辑下吧,图片什么的都看不到
图片看不到可能是网络问题环境问题 如果这个地址能通图片就可以看到 http://imgur.com/

性能怎么样?
phalcon是结合性能功能来说最好的框架没有之一,但是成本和黑盒开发比较头疼 采用phalcon+swoole 可以达到非常理想的结果当然phalcon 也已经很不错了 那个实际的例子 phalapi轻量级框架 5.6 中并发2000+ phalcon 3000+ yaf 3300左右 但是极致的追求性能 可以考虑 go啊等其他语言 PHP 还是比较适合快速开发敏捷开发 方便简单
咚往咚来
咚往咚来
赞楼主~
咚往咚来
咚往咚来

引用来自“夏侯”的评论

博主是做java出身的吧,web容器这词貌似只有java圈说

太孤陋寡闻了你
红薯的小黄瓜
红薯的小黄瓜

引用来自“夏侯”的评论

博主是做java出身的吧,web容器这词貌似只有java圈说

其他语言都有,只不过让你感觉不到而已
啦啦啦拉拉
啦啦啦拉拉

引用来自“喵了_个咪”的评论

引用来自“金三胖”的评论

重新编辑下吧,图片什么的都看不到
图片看不到可能是网络问题环境问题 如果这个地址能通图片就可以看到 http://imgur.com/

性能怎么样?
喵了_个咪
喵了_个咪

引用来自“金三胖”的评论

重新编辑下吧,图片什么的都看不到
图片看不到可能是网络问题环境问题 如果这个地址能通图片就可以看到 http://imgur.com/
金三胖
金三胖
重新编辑下吧,图片什么的都看不到
喵了_个咪
喵了_个咪

引用来自“夏侯”的评论

博主是做java出身的吧,web容器这词貌似只有java圈说
然而你已经看穿了一切
phalcon-入门篇2(HelloWord与PhalconTools)

本教程基于phalcon2.0.9版本 先在这里感谢各位phalcon技术爱好者,我们提供这样一个优秀的交流平台 最近刚好趁着春节放假前几天摸鱼的时间为大家带来今天的phalcon教程,今天教程的内容只要是把...

喵了_个咪
2016/02/01
1K
0
phalcon-入门篇5(请求与返回)

本教程基于phalcon2.0.9版本 先在这里感谢各位phalcon技术爱好者,我们提供这样一个优秀的交流平台 在节后上班的第一条小编已经迫不及待的来为大家带来今天的phalcon教程,今天所讲的是phalcon...

喵了_个咪
2016/02/16
453
0
phalcon-入门篇6(控制器)

本教程基于phalcon2.0.9版本 先在这里感谢各位phalcon技术爱好者,我们提供这样一个优秀的交流平台 废话不多说今天我们就开门见山的来讲一讲phalcon的控制器,控制器是MVC中的C层,也是业务逻辑...

喵了_个咪
2016/02/17
454
0
phalcon-入门篇8(Model层基础使用2)

本教程基于phalcon2.0.9版本 先在这里感谢各位phalcon技术爱好者,我们提供这样一个优秀的交流平台 在上一节我们已经介绍了,phalcon-Model层的配置和最简单的CURD的使用,那么你认为这样就完了...

喵了_个咪
2016/03/01
750
3
phalcon-进阶篇1(过滤与清理)

本教程基于phalcon2.0.9版本 先在这里感谢各位phalcon技术爱好者,我们提供这样一个优秀的交流平台 最后一次更新已经过去了1个半月,在期间也有很多热心的童鞋询问什么时候会更新,最近应为去录...

喵了_个咪
2016/05/07
222
0
phalcon-入门篇9(view层基础使用)

本教程基于phalcon2.0.9版本 先在这里感谢各位phalcon技术爱好者,我们提供这样一个优秀的交流平台 哈喽大家好呀,期待已久的第9篇终于和大家见面了,时隔半个多月在之间小编对编写phalcon的语言...

喵了_个咪
2016/03/26
555
4
phalcon-入门篇1(基本介绍与环境搭建)

本教程基于phalcon2.0.9版本 *先在这里感谢各位phalcon技术爱好者,我们提供这样一个优秀的交流平台 * 离结束了PhalApi教程之后一个多月,我喵了个咪又回来了,这次为大家带来的教程是一款国外的...

喵了_个咪
2016/01/24
877
2
phalcon-入门篇4(log日志和session缓存)

本教程基于phalcon2.0.9版本 先在这里感谢各位phalcon技术爱好者,我们提供这样一个优秀的交流平台 在新年来临之际!在这里祝关注和喜欢phalcon和phalapi的童鞋们,有你们的支持我才有动力鼓起勇...

喵了_个咪
2016/02/03
586
0
phalcon-入门篇7(Model层基础使用)

本教程基于phalcon2.0.9版本 先在这里感谢各位phalcon技术爱好者,我们提供这样一个优秀的交流平台 离上一次更新已经有一段时间了,主要是最近工作比较繁忙,在就是phalcon的model层确实是一块难...

喵了_个咪
2016/02/27
524
3
PhalconPHP 3.2.0 正式发布,高性能 PHP 框架

PhalconPHP 3.2.0 正式发布了,PhalconPHP 是一个使用 C 扩展开发的 PHP Web 框架,提供高性能和低资源占用。 下载地址: https://github.com/phalcon/cphalcon/archive/v3.2.0.tar.gz 更新内...

mia0x75
2017/06/20
1K
11

没有更多内容

加载失败,请刷新页面

加载更多

下一页

高效编写Dockerfile的几条准则

概述 Dockerfile 是专门用来进行自动化构建镜像的编排文件(就像Jenkins 2.0时代的Jenkinsfile是对Jenkins的Job和Stage的编排一样),我们可以通过 docker build 命令来自动化地从 Dockerfi...

小致dad
40分钟前
0
0
SpringBoot | 第十章:Swagger2的集成和使用

前言 前一章节介绍了mybatisPlus的集成和简单使用,本章节开始接着上一章节的用户表,进行Swagger2的集成。现在都奉行前后端分离开发和微服务大行其道,分微服务及前后端分离后,前后端开发的...

oKong
今天
9
0
Python 最小二乘法 拟合 二次曲线

Python 二次拟合 随机生成数据,并且加上噪声干扰 构造需要拟合的函数形式,使用最小二乘法进行拟合 输出拟合后的参数 将拟合后的函数与原始数据绘图后进行对比 import numpy as npimport...

阿豪boy
今天
7
0
云拿 无人便利店

附近(上海市-航南路)开了家无人便利店.特意进去体验了一下.下面把自己看到的跟大家分享下. 经得现场工作人员同意后拍了几张照片.从外面看是这样.店门口的指导里强调:不要一次扫码多个人进入....

周翔
昨天
1
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
昨天
196
1
npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
昨天
1
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
昨天
1
0
python里求解物理学上的双弹簧质能系统

物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。 由于两物体有重力,那么...

wangxuwei
昨天
0
0
apolloxlua 介绍

##项目介绍 apolloxlua 目前支持javascript到lua的翻译。可以在openresty和luajit里使用。这个工具分为两种模式, 一种是web模式,可以通过网页使用。另外一种是tool模式, 通常作为大规模翻...

钟元OSS
昨天
2
0
Mybatis入门

简介: 定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。 途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。 特性:动态SQL语句。 文件结构:Mybat...

霍淇滨
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部