模仿thinkphp访问控制器的方法

本文介绍了如何利用pathinfo模拟ThinkPHP的控制器访问方式。在ThinkPHP框架中,通过URL如`localhost/app/index.php/Controller/Method`即可调用控制器方法。作者在尝试将此功能应用于原生PHP时,发现与ThinkPHP的数据库访问方式存在差异。经过研究,作者找到了pathinfo这个PHP内置函数,并结合`$_SERVER`变量,实现了类似的功能,解决了前后台接口衔接的问题。关键代码已分享,供读者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Thinkphp,作为中mvc架构里比较简单的php框架,其本身特殊的访问控制器的方法让人爱不释手,也给我这个web初学者很大的震撼——接口竟然可以做的那么简洁明了。


Thinkphp里,访问控制器的方法是下面这样的:  localhost/app/index.php/Controller/Method。更形象的来说就是,假如你在app/Lib/Action文件夹下新建了一个叫做ApiAction.class.php的文件,里面有个public的方法,名字叫做getInformation。那么,访问这个方法的url就可以这样写:http://localhost/app/index.php/Api/getInformation。当你把这段url放到浏览器的地址栏里,thinkphp就会运行ApiAction.class.php里的getInformation方法。


由于知道了thinkphp有如此方便的访问函数的方法,一度对此爱之有加。前段时间,做大作业的时候,我被分配到写前后台衔接的接口。前期谈论的时候,自己就想着用thinkphp完成接口的编写,这样写出来的接口文件既简洁又易懂。然而,由于后台不是我写的,而写后台的伙伴用的是原生的php访问mysql数据库的方法。在thinkphp里,虽然允许原生的方法,但是访问数据库必须new一个空的model,然后用model来访问数据库,而且访问出来的结果跟原生的不一样。因为这点,我想到:我需要的只是thinkphp访问函数的这种方法,其他的特性不需要。因此,我何不自己查一下,弄个类似的形式就可以了。


果然,通过百度和谷歌,我找到pathinfo,这个关键字。接着,再从php.net查阅pathinfo这个方法,以及$_SERVER的属性,想出一个解决这个问题的解决方案。当我想出解决方案的时候,猛然间再看到那条访问函数的url,顿时理解了为什么thinkphp需要一个入口文件,也更加理解为什么叫“入口”。


这里把关键代码共享出来,以供参考

$path = pathinfo($_SERVER['PHP_SELF']);
print_r($path);

将这句代码放到你的www文件夹下面,然后试图访问一下,你就知道其中道理了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值