首页 > 后端开发 > 正文

php框架路由设计思路 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了

2023-09-15 07:27:47 | 我爱编程网

今天我爱编程网小编整理了php框架路由设计思路 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了相关信息,希望在这方面能够更好的大家。

php框架路由设计思路 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了

thinkphp 怎样动态配置路由,怎样从数据库调取数据来配置路由

用这个方法: Route::get('detail-<name>-<id>', 'product/detail');
<name>和<id> 后台自己定义内容
例:域名/detail-xxxx-23

xxxx 从数据库调取数据

php框架路由设计思路 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了

Phpcms如何自定义URL路由规则

一、概述

自定义url规则,首先要建立自己的URL规则,首先的理解一些定义和变量含义。首先进入URL规则管理这里,你会看到如下内容(进入方法:“扩展”-》“RUL规则管理”—》“管理RUL规则”)

在、问吧、专题、等等

也就是说你下一步建立的RUL规则是要应用在哪个模块上,那你就要选者哪个。在这里特别要提示一下的是,你在建立URL规则的时候不要选哪个“不限”。本然按照PHPCMS当初的意思是可以应用与任何模块,但是我实际操作当中,发现如果选者了不限,那你在其他模型里面是看不到你选者的URL规则。

二、名称

名称这里PHPCMS分 category(列表页),show(详细页),htmlshow(问吧详细页),htmlcategory(问吧列表页)。

这里要注意一点,假如你是现在定义的URL规则是想应用与图片模块的列表页,那你这里URL名称一定要写category,否者的话,你在模块设置这里是看不到你定义的URL规则。

三、HTML

你在定义URL规则的时候,有个可选项目,静态URL规则:生成静态页面调用的URL规则,你选者“是”或者“否”,意思就是如果选者是,那你这条规则就是生成静态页面用的,相反就选否。

四、URL示例

这里就是些一些你想要的URL形式,你可以随便写,只要你自己认得这是你这一条规则的形式。但是不能不写啊,否者你在模型设置里面,又会发现,怎么看不到我定义的规则名称,这个示例可是当名称一样用的哦。

在定义RUL规则之前,你首先要理解上面的四点,然后接下来要理解那些变量的含义了。

1、{$parentdir}{$catdir} ---含义:当前栏目目录名称;

2、{$catid} ----含义:栏目ID号;

3、.{$fileext}---含义:.htm(注意这里前面要加个“."号l ;

4、{$year} ----含义:年;

5、{$month} --含义:月;

6、{$day} -----含义:日;

根据后台 系统设置->相关设置->URL规则管理所列的URL规则编写。

以下所用示例,请灵活修改。

示例栏目:

新闻news

|___国内china

|___国际inter

|___美国usa

1、URL规则所用变量

{$catid}栏目id。例:形如1,10等 我爱编程网

{$categorydir}栏目目录树(相对于phpcms安装目录)。例:如为一级目录则为/news/,二级目录为/news/china/,三级目录为/news/inter/usa

{$catdir}栏目目录。例:如为一级目录则为/news/,二级目录为/china/,三级目录为/usa/

{$year} {$month} {$day} 年月日。文章发布时间的年,月,日。

{$page}页码。文章分页时的页码。

{$fileext}静态页扩展名。为网站配置->生成的扩展名所定义。

{$contentid}文章id。

以下是专题模块用的

{$typeid}类别id

{$typedir}类别目录

{{$filename}专题名称

{$specialid}专题id

问吧,对于问吧,最好不要修改了

{$action}操作

2、URL规则数据库字段说明

模块:所属模块,目前有问吧,专题,phpcms。

URL规则名称:这个名称应该为URL规则应用的范围,如用于栏目页(目录),内容页等。一般会用到show(内容页),category(栏目页)

生成Html:是否生成html。关系到所写的URL规则。

URL规则/URL示例:这个就是本文重点要讲的了

3、应用示例

特别说明:定义url时,应为分页网址加上{$page}变量。两条规则用|隔开。

(1)官方演示

{$catdir}/index.{$fileext}|{$catdir}/{$page}.{$fileext}

{$categorydir}/{$year}/{$month}{$day}/{$contentid}.{$fileext}|{$categorydir}/{$year}/{$month}{$day}/{$contentid}_{$page}.{$fileext}

(2)一个例子

建立形如/news/article_1_2.html的规则

{$catdir}/article_{$contentid}.{$fileext}|{$catdir}/article_{$contentid}_{$page}.{$fileext}

如选目录树,则{$catdir}改为{$category}

(3)扩展功能(正式版未测试)

定义为动态时,所以栏目、内容页都为phpcms目录下/list.php?,/show?等形式,如果想让url规则为/news/show.php?id=,/news/index.php这个要怎么操作呢?

首先想到的是定义url规则,如

栏目页{$catdir}/index.php|{$catdir}/index.php?page={$page}

内容页{$catdir}/show.php?contentid={$contentid}|{$catdir}/show.php?contentid={$contentid}&page={$page}

定义完之后,问题来了,所建的目录下并没有index.php和show.php文件,怎么办?

把list.php复制到相应目录下,更名为index.php,show.php也做如上操作,这两个文件都在phpcms的目录里。

这时再看已经输入的内容,会提示出错,路径错误,改show.php第一句为

require ‘../include/common.inc.php’; 这个是根据一级目录改的

下面还有几个require,相应的改动一下就行了,我没改,也没有报错。改完之后再浏览(在后台,点文章标题)就可以打开了。

修改复制进去的index.php

第一句修改同上。因为自定义的URL规则是不带catid参数的,所以在$catid = intval($catid);改为$catid = 5(这里是你所要改的栏目的id,在栏目管理可以看到)。

摘选自 网页链接 ,内容挺全的

php框架路由设计思路 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了

我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了

类自动加载跟路由是框架最基础的特性

给你点自动加载的思路,首先现在写框架必须用上命名空间,框架内部的类文件夹根据命名空间命名方便自动加载

在入口文件引入自己写的Autoload.php 通过spl_autoload_register获得要加载的类名

spl_autoload_register(function ($class_name) {
    Autoload::splAutoload($class_name);
});

asseek\route\Router


asseek\Func


asseek\route\Route


app\www\docs\docsController


asseek\Controller


asseek\View


如果你采用命名空间上面函数的$class_name是类似这样的字符串,只要你有当前项目的初始路径再根据这段字符串 require相应的php文件应该不难,自动加载就搞定了。

路由就更简单了就是通过$_SERVER['REDIRECT_URL'] 或$_SERVER['REDIRECT_URI']  获得用户访问的URL,根据自己的框架制定的规则从URL中取得控制器与控制器方法名称,判断controller的类是否存在,存在则实例化,再判断controller的method是否存在,存在则调用方法,方法里面加载视图等就是另外的事情了。

以上就是我爱编程网小编给大家带来的php框架路由设计思路 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了全部内容,希望对大家有所帮助!
与“php框架路由设计思路 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了”相关推荐
php框架路由实现 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了
php框架路由实现 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了

php写路由有几种方法路由的功能就是分发请求到不同的控制器,基于的原理就是正则匹配。接下来呢,我们实现一个简单的路由器,实现的能力是对于静态的路由(没占位符的),正确调用callback。路由分配(推荐学习:PHP视频教程)基于php的路由分配,实质上来说就是利用url中的path去匹配对应的控制类,同时调用其中的方法进行相关操作的处理。&lt;?php//权限控制in

2023-08-29 03:38:13
php框架路由怎么写 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了
php框架路由怎么写 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了

我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了类自动加载跟路由是框架最基础的特性给你点自动加载的思路,首先现在写框架必须用上命名空间,框架内部的类文件夹根据命名空间命名方便自动加载在入口文件引入自己写的Autoload.php通过spl_autoload_register获得要加载的类名spl_autoload_register(function ($cla

2023-09-15 15:47:47
php框架路由如何匹配 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了
php框架路由如何匹配 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了

phppreg_match如何匹配网址/index.php/sohw/n/1234567.html$path_info='/index.php/sohw/n/1234567.html';if(preg_match("/\/\w{1,50}\.php\/\w{1,50}\/\w{1,50}\/\w{1,50}\.html/",$path_info,$arr_path)){print_r

2023-09-20 03:01:16
php框架路由是干嘛的 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了
php框架路由是干嘛的 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了

php主要是做什么的php主要的作用如下:1、辅助开发,可以用php来辅助其他的东西来做开发,比如电子地图。2、开发框架,可以用php来开发框架,也可以用来完成软件的建立。3、网站,php最简单的应用就是制作网站,包括数据库类操作、社区、系统和管理。4、写爬虫,写爬虫也就是我们说的数据采集,虽然不是php的强项,但只要你的php技术足够好,也是可以用php来写的

2023-09-24 21:22:57
php自动框架代码 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了
php自动框架代码 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了

如何写一个PHP框架呢?思路是什么,需要注意些什么?第一步实现自动加载第二步实现依赖注入容器第三步实现路由第四步实现控制器第五步实现模型第六步实现最基本的一些辅助操作类1.Db类,数据库操作少不了2.数据操作类,接收过滤getpostputdelete等数据3.配置文件操作类,任何一个框架都少不了,是吧。4.模板引擎,如果是前后端分离的

2023-09-14 15:49:36
php框架实现的自动加载图片 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了
php框架实现的自动加载图片 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了

PHP中?:什么意思PHP中“?:”指的是三目运算符。三目运算符,又称条件运算符,是计算机语言的重要组成部分。它是唯一有3个操作数的运算符,所以有时又称为三元运算符。一般来说,三目运算符的结合性是右结合的。三目运算符提供了一种表达简单if-else语句的简写方法。该运算符由问号(?)和冒号(:)组成,其格式如下:表达式?表达式:表达式;语句被称为条件表达式,它由3个子表达式

2023-10-04 23:27:41
如何自己编写一个php框架 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了
如何自己编写一个php框架 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了

我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了类自动加载跟路由是框架最基础的特性给你点自动加载的思路,首先现在写框架必须用上命名空间,框架内部的类文件夹根据命名空间命名方便自动加载在入口文件引入自己写的Autoload.php通过spl_autoload_register获得要加载的类名spl_autoload_register(function ($cla

2023-10-06 05:39:32
制作一个简易的PHP框架 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了
制作一个简易的PHP框架 我想尝试着写个小型PHP框架,现在卡在类自动加载和路由实现上了

php学习问题,按照网的上材料自学做一个mvc简单框架。浏览时报错。请大神帮忙看看是哪里的错误。从代码看,$data变量在使用前并没有进行定义。mvc的架构是模型、视图、控制器三者分离的架构,从你的代码中看,其实democontroller.php控制器与视图并没有分离。以下是mvc执行流程示例:1浏览者-&gt;调用控制器,对它发出指令2控制器-&gt;按指令选取

2023-10-07 01:54:44