一个php框架的简单实现,仅实现简单路由层

首先看一下现有的文件目录

一个php框架的简单实现,仅实现简单路由层

DOCUMENT_ROOR 为 /home/www目录

然后看一下入口文件的内容

<?php
	$controll_action = $_GET['_ca_'];
	$params  = explode('/',$controll_action);
	$params_count = count($params);

	$otherParams = $params;
	if($params_count>1) {
		$controller = $params[0];
		$action  = $params[1];
		unset($params[0]);
		unset($params[1]);
	}else if($params_count==1) {
		$controller = $params[0];
		$action = 'index';
		unset($params[0]);
	}

	$filename = strtolower($controller).'.php';
	$controller_path = $_SERVER['DOCUMENT_ROOT'].'/application/controllers/';

	if(!file_exists($controller_path.$filename)) {
		throw new Exception('controller '.$filename.' is not exists!');
		return;
	}
	include($controller_path.$filename);

	$classname = ucfirst($controller);
	if(!class_exists($classname)) {
		throw new Excpetion('class '.$classname.' is not exists!');
	}
	$reflecObj = new ReflectionClass($classname);
	if(!$reflecObj->hasMethod($action)){
		throw new Exception('method '.$action.' is not exists!');
	}

	$currentObj = new $classname();
	echo "classname=$classname,action=$action,params=".json_encode($params)."<br/>";
	call_user_func_array([$currentObj,$action],$params);
	return;
?>

然后创建一个简单的控制器 user.php,放到applicaiton/controllers/目录下,具体内容如下:

<?php
class User {
    
    function __construct(){
        
    }
    public function index($name='')
    {
    	echo 'hello,'.$name.',lucky,you are arrive here!';
    }
}

最后测试一个正确的控制器跳转和错误的控制器跳转

首先测试一下正确的流程: http://192.168.1.99/user/index/xiaoming

输出内容:

classname=User,action=index,params={"2":"xiaoming"}
 hello,xiaoming,lucky,you are arrive here!

再测试一下不存在的控制器,http://192.168.1.99/account/index/xiaoming

Fatal error: Uncaught exception 'Exception' with message 'controller acount.php is not exists!' in /home/www/webroot/index.php:25Stack trace:#0 {main} thrown in 
/home/www/webroot/index.php on line 25

关于一个php框架的简单实现,仅实现简单路由层的文章就分享到这,如果对你有帮助欢迎继续关注我们哦

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/44699.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
php学习php学习订阅用户
上一篇 2022年6月27日 00:31
下一篇 2022年6月27日 00:31

相关推荐

  • 创建 PSR-4 的 Php 包

    【相关学习推荐:php图文教程】本文是帮助初学者搭建基础的 php composer 包, 本项目源码地址githubpackagist目录结构和初建准备首先创建一个目录来存放所有文件, 这里我 命名为 util-demo , 目录中需要包含两个目…

    2022年6月21日
    0153
  • 详解PHP位运算符

    位运算符位运算符是指对二进制位从低位到高位对齐后进行运算。符号作用举例个人理解&按位与$m & $n全1为1,否则为0|按位或$m | $n全0为0,有1为1^按位异或$m | $n不同为1,相同为0~按位取反~$m<<向左…

    2022年6月27日
    099
  • PHP如何实现微信小程序中的多媒体素材管理。

    随着微信小程序的流行,越来越多的开发者开始探索如何在小程序中实现多媒体素材管理。而PHP作为一种常用的服务器端编程语言,可以实现小程序中多媒体素材的上传、下载、管理等功能。下面将介绍PHP如何实现微信小程…

    2023年6月3日
    011
  • PHP8中的新函数:array_key_first()的新技巧。

    随着Web应用程序的不断发展,PHP作为一种可靠且易于使用的编程语言在开发Web应用程序方面变得越来越流行。在PHP8中,开发人员将受到一个新的函数array_key_first()的欢迎,这个函数可以帮助他们更轻松地访问数组的…

    2023年5月21日
    01
  • 今日分享PHP header的7种用法。

    PHP header函数用于在发送HTTP响应之前输出一些信息,如HTTP状态码、内容类型等。它有7种用法,包括设置状态码、添加自定义头信息、重定向到其他URL、显示错误信息等。 在PHP中,header()函数是一个非常重要的工具…

    2024年7月24日
    02
  • php字符串的常用函数

    字符串分解和合并 说明:在PHP中提供了两个函数可以对字符串进行“拆分”和“组合-数组”,作用是如多选框有多少个值 Explode:把字符串通过一个分割字符进行分割成数组 Implode:把一维数组转换成字符串 去除字符串的空…

    2017年11月20日 PHP自学教程
    0273
  • PHP实现数据库容器化负载均衡的方法。

    随着互联网应用越来越广泛,数据库的负载均衡问题越来越受到关注。在传统的单机架构下,单个数据库的瓶颈会导致系统的响应速度下降或甚至崩溃,因此容器化负载均衡已成为解决数据库性能问题的主要方案之一。本文将…

    2023年5月21日
    01
  • 掌握PHP语言对接抖音快手小红书视频/图片去水印API接口源码

    以下为PHP语言调用去水印接口的示例,分别展示GET请求方式和POST请求方式的调用方式。示例代码中用到的userId和secretKey请前往开发者接口管理中心获取。GET请求方式调用接口示例:$url = 'https://v.douyin.c…

    2022年6月17日
    0327

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息