仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 981|回复: 19
打印 上一主题 下一主题

[学习教程] PHP编程:php伪静态:php复杂的伪静态url机制完成...

[复制链接]
小魔女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:31:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
说说这一个月左右的学习情况和心得吧!我个人认为,既然决定了去做一件事,那就要以认真的态度去对待!既然决定来学习了,那不管当初是抱着怎样的心态来到这个培训班的,都要让自己认真的投入到学习中。   
   曾几什么时候,咱们公司筹办开辟一套新的建站体系,决意将之前的框架给ko失落,从头开辟一套新的框架来顺应新的体系功效。向导们不但愿利用里面已有的框架,号称要开辟有本人特征的框架(不懂开辟的向导害逝世人)。因而咱们又投入到了新的开辟傍边。
   因为咱们的体系撑持伪静态,之前的体系是直接利用办事器apache或iis自带的rewrite文件界说划定规矩,而框架中没有任何路由机制,因而此次框架筹办利用新的战略,由php完成路由机制。因而我入手下手了功效完成的探究之路。
   开辟之前,我先懂得‘路由机制’要做甚么,它次要做两件事。
   1.路由机制就是把某一个特定模式的url布局中提炼出来体系对应的参数。举个例子,如:http://www.cxybl.com/article/1  个中:/article/1  -> ?_m=article&id=1。
   2.其次,是将具有对应参数的url转换成特定模式的url布局,是下面的进程的逆向进程。因为路由机制隔离了url布局和参数的转换关系,使的往后布局的变更不会影响上面代码的履行。
   经由过程下面的懂得,可以得出要编写一个路由机制要一下几步:
   1.编写办事器apache或iis自带的rewrite文件,将url布局导入index.php。
   2.一个路由划定规矩设置装备摆设文件。
   3.一个路由解析器,用来解析划定规矩,婚配和转换url。
   因而,咱们逐一完成个中的每个局部。
1.rewrite文件编写,以apache为例:
<ifmodule mod_rewrite.c>
rewriteengine on
rewriterule ^index\.php$ - [l]
rewritecond %{request_filename} !-f
rewritecond %{request_filename} !-d
rewriterule (.+) index.php/$1 [l]
</ifmodule>
  下面的代码就是将url布局导入index.php中,详细的rewrite细节就不赘述了。
  2.在php中设置一个路由划定规矩设置装备摆设文件routes.php,我复杂的利用了一个hash数组编写划定规矩:
/**
*路由设置装备摆设文件编写申明:
* 路由设置装备摆设在一个array数组中,一笔记录代表一个划定规矩
* 个中数组key的数据代表婚配的途径格局:利用特定的字符串标识 如:'/{id}'
* 字符串中可以包括特定的变量,一切变量利用大括号{}包裹起来
* 数组value里是一个array数组,是对key中途径中变量停止特定处置
* 变量写在数组的key中,标准写在数组的value里,如:array('id'=>'/\d+/','_m'=>'frontpage','_a'=>'index')
* 标准分红两类:
* 1.格局判别:好比 '/{id}'=> array('id'=>'/\d+/','_m'=>'frontpage','_a'=>'index') 为例,个中'id'=>'/\d+/'就是一个格局判别,
* 暗示id变量只能是数字,格局判别前面只能利用正则表达式,因为php没有正则类,所以我指定 '/xxx/'和'#xxx#'格局的字符串为正则表达式
* 2.默许参数:好比 '/{id}'=> array('id'=>'/\d+/','_m'=>'frontpage','_a'=>'index') 为例,个中'_m'=>'frontpage'就是一个默许参数,
* 由于后面的途径没有_m和_a信息,所今后面会利用默许参数作为_m和_a的值
*
* 所以关于划定规矩'/{id}'=> array('id'=>'/\d+/','_m'=>'frontpage','_a'=>'index')。我传入 /3 体系会转换成 index.php?_m=frontpage&_a=index&id=3
*
* 划定规矩婚配是依照$routes数组的按次一一婚配,一旦婚配上了就不往下婚配了。所以一些特定的婚配划定规矩要放在后面,通用的放在前面。
* 不然能够招致不履行特定的婚配划定规矩了
*/
$routes= array(
'/' => array('_m'=>'wp_frontpage','_a'=>'index'),
'/{id}'=> array('id'=>'/\d+/','_m'=>'wp_frontpage','_a'=>'index'),
'/{_m}/{_a}/{id}'=> array('id'=>'/\d+/'),
'/{_m}/{_a}'=> array()
);
  3.路由机制中最庞杂也是最主要的一局部,就是解析器。
   解析器有两个类构成(名字能够起的欠安)。
   一个是route,作为全部解析器对外的接口,用于解析划定规矩,婚配和转换url,但是它只是一个代办署理,实践操作不是直接由它直接做的。
    一个是routepattern,每一个routepattern实例对应划定规矩数组中的一笔记录,一个route实例包括多个routepattern,而route中的一切操作城市挪用外部一切routepattern实例操作,并停止整合。
class route
{
private static $instance = null;
private $routepatterns=array();
private function __construct()
{
$routes = array();
include root."/routes.php";
foreach($routes as $key=>$value){
$this->routepatterns[]=new routepattern($key,$value);
}
if(!isset($_server['path_info'])) return false;
$urlpath= $_server['path_info'];
$ismatch=$this->match_url($urlpath); 本文链接http://www.cxybl.com/html/wlbc/Php/20120607/28511.html如果你单纯是为了做网站赚钱,我想你还是别学php的好,去学ASP,JSP好了,毕竟它们有实力雄厚的公司去支持它们。
兰色精灵 该用户已被删除
沙发
发表于 2015-2-4 00:26:32 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
小妖女 该用户已被删除
板凳
发表于 2015-2-4 00:26:32 | 只看该作者
当然这种网站的会员费就几十块钱。
冷月葬花魂 该用户已被删除
地板
发表于 2015-2-9 08:32:01 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
谁可相欹 该用户已被删除
5#
发表于 2015-2-25 01:59:32 | 只看该作者
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
活着的死人 该用户已被删除
6#
发表于 2015-3-7 15:44:41 | 只看该作者
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
若天明 该用户已被删除
7#
发表于 2015-3-15 07:45:07 | 只看该作者
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
飘飘悠悠 该用户已被删除
8#
发表于 2015-3-19 12:31:14 | 只看该作者
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
再见西城 该用户已被删除
9#
发表于 2015-3-27 19:12:00 | 只看该作者
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
金色的骷髅 该用户已被删除
10#
发表于 2015-3-28 01:35:11 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
老尸 该用户已被删除
11#
发表于 2015-4-11 09:15:09 | 只看该作者
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
深爱那片海 该用户已被删除
12#
发表于 2015-4-12 02:52:52 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
变相怪杰 该用户已被删除
13#
发表于 2015-4-12 07:13:07 | 只看该作者
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
莫相离 该用户已被删除
14#
发表于 2015-4-16 21:15:16 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
灵魂腐蚀 该用户已被删除
15#
发表于 2015-4-20 22:21:35 | 只看该作者
实践是检验自己会不会的真理。
简单生活 该用户已被删除
16#
发表于 2015-4-21 19:36:04 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
小女巫 该用户已被删除
17#
发表于 2015-4-22 12:11:08 | 只看该作者
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
乐观 该用户已被删除
18#
发表于 2015-5-2 15:21:50 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
精灵巫婆 该用户已被删除
19#
发表于 2015-6-8 22:44:18 | 只看该作者
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
愤怒的大鸟 该用户已被删除
20#
发表于 2015-6-17 11:28:35 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-14 13:50

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表