PHP--MVC架构及rewrite技术

最近学习对PHP比较感兴趣,简单学习之后开始了解MVC架构----module,view,controller,找了一个比较经典的demo学习,在此分享一下 https://github.com/panique/php-login.git

前几个比较简单,基本没什么障碍,最后一个是FULL-MVC结构的,对我这个一直做嵌入式没接触过web前端的小白来说还是比较难理解的。

从概念上来说,对MVC架构比较好理解,module是与业务层面打交道的,view与页面展示息息相关,control则是负责控制转发,掌控大局。所以,这种机制决定了其设计上需采用单一入口,这样才能将所有请求通过control进行处理。代码没太大复杂性,在此表过不提,唯一疑惑的是index页面通过views\_templates\header.php进行框架设计,导航栏指向的是具体的url,这不符合单一入口的设计理念。通过运行程序,确实找不到相应页面。

demo既然是demo,那就说明他还是完整可行的,自身找原因。问了一位大神,说有一种rewrite的技术,可以改写url,一般通过在目录下的.htaccess文件实现。果不其然,在项目目录下存在一个这样奇怪的文件。接下来就研究rewrite的功能机制。

rewrite是通过rewriteRule,对当前目录及其子目录下的url进行改变,以apache为例,要想使用rewrite功能,需先加载Mod_Rewrite模块,可以通过echo phpinfo();看看apache是否已经加载mod_rewrite,如果没有在其配置文件中conf/httpd.conf文件进行相应修改。

  • 使能  LoadModule rewrite_module modules/mod_rewrite.so
  • 搜索AllowOverride 将None改为All
下面对照源码简单说一下.htaccess文件中rewrite功能的实现。项目目录下的. htaccess内容为
RewriteEngine On

#When using the script within a subfolder, put this path here, like /mysubfolder/
#If your app is in the root of your web folder, then pleae delete this line or comment it out like this line
RewriteBase /php-login-master/4-full-mvc-framework/

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

RewriteEngine On 就是打开rewrite功能
RewriteBase 的作用域为: directory, .htaccess通常默认的虚拟主机的网站在使用.htaccess 进行重写规则时不需要执行设置该指令. 因为 RewriteBase 默认值是该 .htaccess 文件所在的目录地址.但是如果使用目录别名的话就需要设置这个指令了
RewriteCond 是判断条件,RewriteCond指令定义一条规则条件。在一条RewriteRule指令前面可能会有一条或多条RewriteCond指令,只有当自身的模板(pattern)匹配成功且这些条件也满足时规则才被应用于当前URL处理。
RewriteRule 是具体的指令,就是满足RewriteCond后所进行的操作。

关于RewriteCond和RewriteRule的详细介绍可以参考http://www.cnblogs.com/scgw/archive/2011/05/01/2033730.html

可见其判断条件是,所请求的url不是目录&&不是存在的正常文件&&不是符号链接。

RewriteRule的含义是将url作为index.php的参数传入。由此可见,通过rewrite技术使得我们可以用单一入口(index.php)进行MVC的架构设计。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
git-rewrite-author是一个Git命令,用于修改提交历史中的作者信息。 在使用Git进行项目开发时,每次进行提交操作都会记录下提交者的作者信息,包括姓名和邮箱。有时候我们可能因为一些原因需要修改这些作者信息,比如提交者输入了错误的名字或邮箱地址,或者是因为合并了其他仓库的代码,希望统一提交者的作者信息。 使用git-rewrite-author命令可以轻松地修改提交历史中的作者信息。它提供了一种简单的方式来重写Git仓库的提交者作者信息。使用该命令需要提供被修改的提交范围或者特定提交的哈希值,以及修改后的作者信息。 具体使用git-rewrite-author命令的步骤如下: 1. 打开命令行终端,进入到项目的Git仓库目录中。 2. 运行git-rewrite-author命令,并提供需要修改的提交范围或者特定提交的哈希值,以及修改后的作者信息。 3. Git会通过找到需要修改的提交对象,并将其中的作者信息进行修改。修改后的提交对象会被重新写入Git仓库中。 需要注意的是,使用git-rewrite-author命令会修改提交历史,因此需要小心操作。如果在多人协作的项目中使用该命令,需要确保与其他开发者达成一致,并尽量避免在共享的分支上进行修改。 总之,git-rewrite-author是一个方便修改提交历史作者信息的Git命令,可以帮助我们修正错误的作者信息或者统一项目中的作者信息。但在使用时需要谨慎操作,避免对其他开发者造成不必要的困扰。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值