我的简单PHP框架——LabPHP v1.0.1

2023-05-16

       此前讲到 我做的一个基于MVC设计思想的简单PHP框架(我的简单PHP框架——LabPHP),这里对其进行一些改进,改进地方如下:

1、对 LabPHP/Common/functions.php 中的 M 方法进行修改,方法中实例化一个没有模型文件的Model;

2、在 LabPHP/Common/functions.php 中增加 D 方法,D方法实现实例化模型类(具有模型文件的Model对象);

3、在 LabPHP/Common/functions.php 中加入一个简单的 dump 方法,提供友好输出变量的方法;

4、在 LabPHP/LabPHP.php 增加引入用户当前模块下自定义的 function.php 文件的功能,在各个模块(如:Home、Admin)下增加 Common文件夹,在Common 文件夹下添加 function.php;

5、在 LabPHP/LabPHP.php 增加引入用户所有模块公共的自定义的 function.php 文件的功能,在 Application 文件夹下增加 Common文件夹,在Common 文件夹下再增加Common文件夹,在最后新增的Common文件夹下添加 function.php。


LabPHP框架修改后,项目目录结构基本如下:


LabPHP/Common/functions.php 修改如下:

<?php 
	//防止非法字符的输入
	function daddslashes($str) {
		return (!get_magic_quotes_gpc())?addslashes($str):$str;
	}

	/**
	 * 浏览器友好的变量输出
	 * @param  [type] $var 变量
	 * @return [type]      [description]
	 */		
	function dump($var) {
		echo '<pre>';
		var_dump($var);
		echo '</pre>';
	}

	/**
	 * 获得当前被访问的模块名
	 * @return [type] 当前模块名
	 */
	function getModuleName() {
		return isset($_GET['m']) ? daddslashes($_GET['m']) : 'Home'; //初始化模块(默认Home模块)
	}

	/**
	 * 获得当前被访问的控制器名
	 * @return [type] 当前控制器名
	 */
	function getControllerName() {
		return isset($_GET['c']) ? daddslashes($_GET['c']) : 'Index'; //初始化控制器
	}

	/**
	 * 获得当前被访问的操作名
	 * @return [type] 当前操作名
	 */
	function getActionName() {
		return isset($_GET['a']) ? daddslashes($_GET['a']) : 'index'; //初始化操作
	}

	function getConfig() {
		$c1 = include('./LabPHP/Conf/convention.php');
		$c2 = include('./Application/' . MODULE_NAME . '/Config/config.php');

		$config = array_merge($c1, $c2);
		return $config;
	}

	/**
	 * 用于调用 $name 控制器的 $method 方法
	 * @param [type] $name   控制器名
	 * @param [type] $method 方法名
	 */
	function C($name, $method) {
		$m = getModuleName();
		require_once('./Application/' . $m . '/Controller/' . $name . 'Controller.class.php');
		$c = $name . 'Controller';
		$ct = new $c();
		$ct->$method();
	}

	/**
	 * 实例化一个没有模型文件的Model
	 * @param [type] $name Model名称
	 */
	function M($name = '') {
		$obj = new Model();
		
		return $obj;
	}

	/**
	 * 实例化模型类
	 * @param [type] $name 模型类的名,如IndexModel,则 $name = 'Index'
	 */
	function D($name) {

		if(!isset($name) || empty($name)) {
			return null;
		}

		$obj = new Model();

		// 如果不存在具有模型文件(xxxModel.class.php)的Model,就返回 new Model() 对象
		$m = getModuleName();
		$file_model_path = './Application/' . $m . '/Model/' . $name . 'Model.class.php';
		if(file_exists($file_model_path)) {
			require_once($file_model_path);	
			$model = $name.'Model';
			$obj = new $model();
		}
		
		return $obj;
	}
?>


LabPHP/LabPHP.php 修改如下:

<?php 
// +----------------------------------------------------------------------
// | LabPHP v1.0.1
// +----------------------------------------------------------------------
// | Author: DreamBoy <937921168@qq.com>
// +----------------------------------------------------------------------


	//定义应用的模式——是否为调试模式
	if(!defined('APP_DEBUG') || APP_DEBUG == false) {
		error_reporting(0);	
	}
	
	//启动引擎
	$currentdir = dirname(__FILE__);
	//首先include文件清单
	include_once $currentdir . '/Conf/include.list.php';
	//include必要的文件
	foreach ($paths as $value) {
		include_once $currentdir . '/' . $value;
	}


	// 导入用户自定义的模块公共的 function.php 文件
	$user_c_func = './Application/Common/Common/function.php';
	if(file_exists($user_c_func)) {
		include_once $user_c_func;
	}
	// 导入用户自定义的针对某一模块的 function.php 文件
	$user_m_func = './Application/' . getModuleName() . '/Common/function.php';
	if(file_exists($user_m_func)) {
		include_once $user_m_func;
	}



	//定义当前被访问的模块
	defined('MODULE_NAME') or define('MODULE_NAME', getModuleName());
	//定义当前被访问的控制器
	defined('CONTROLLER_NAME') or define('CONTROLLER_NAME', getControllerName());
	//定义当前被访问的操作
	defined('ACTION_NAME') or define('ACTION_NAME', getActionName());

	LabPHP::start();
?>



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我的简单PHP框架——LabPHP v1.0.1 的相关文章

  • SQL 大表中的随机行(使用 where 子句)

    我有一个网站 人们可以在其中对汽车进行投票 向用户展示 4 辆汽车 他 她可以投票选出他们最喜欢的汽车 桌子cars有重要的列 car id int 10 not auto increment so has gaps views int 7
  • 很好地阻止了齿轮工人

    我有许多 Gearman 工作人员不断运行 保存用户页面浏览记录等内容 偶尔 我会更新 Gearman 工作人员使用的 PHP 代码 为了让工作人员切换到新代码 我杀死并重新启动了工作人员的 PHP 进程 有什么更好的方法来做到这一点 据推
  • PDO::commit() 成功或失败

    The PHP PDO 提交 http www php net manual en pdo commit php文档指出该方法成功时返回 TRUE 失败时返回 FALSE 这是指beginTransaction 和commit 之间的语句执
  • Smarty 3 或更早版本中有类似 Dwoo-s {with} 或 {loop} 的东西吗?

    Dwoo 模板引擎中的 with 和 loop 插件更改变量名称解析的默认上下文 如果在 Dwoo 中您提供模板 arr foo with arr foo arr foo with 有数据 array arr gt array foo gt
  • 使用 strtotime() 计算时间差(以小时和分钟为单位)[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions time1
  • 如何将 php Web 应用程序转换为桌面应用程序并保留数据库 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们有一个用 PHP 开发的 Web 应用程序 但大多数客户并没有一直连接到互联网 那么 有没有办法将应用程序转换为桌面应用程序 以便
  • 智能位置表单字段

    我的用户注册表单上有一个文本字段location 我本质上希望这个字段能够根据 Google 地图 或同等地图 进行验证 只允许有效位置通过 最好采用类似的格式滑铁卢 伦敦 or 伦敦 英国 要求 除了位置名称之外 我还想返回该位置中心的坐
  • 访问 public_html 级别之外/以下的文件

    如何通过 url 访问文件 home uzair etc index php 即使我运行域 something com 它显示了 home uzair public html index php 这个文件 任何人请帮助我如何访问放置在 ho
  • CSS 无法与 CodeIgniter 一起使用

    这是我的 CI 代码的一部分 class page extends CI Controller var Page public function construct parent construct this gt Page 1 this
  • Opencart最低下单价不包括一类

    我正在使用 opencart 并成功为所有交易添加了最低订单价格 这是我使用的代码 div div div class warning Minimum 10 Euro to checkout div 现在我想从中排除一个类别 以便可以购买该
  • 如何在 Laravel 代码中使用 Artisan 命令?

    如何在我的 php caode Ex 中使用 Artisan 命令行 php artisan version to 您可以从控制器调用 Artisan 命令 如下所示 calling of migrate install Artisan c
  • 如何将参数传递给 Symfony2 中的验证约束 - 在 yml 中

    我正在尝试向我的应用程序添加一个包范围的参数 以便我可以将其添加到我的验证约束文件 validation yml 中 myApp myBundle Entity Contact properties name NotBlank messag
  • 在 Apache 服务器上将特定的 .htm 页面处理为 .php [重复]

    这个问题在这里已经有答案了 我正在为 Apache 服务器编程 并且只需要将一个特定的 html 页面 例如 first htm 作为 PHP 脚本进行处理 可以设置吗 SetHandler http httpd apache org do
  • 如何将 yii2 Restful api 中两个表的关系数据显示为 json 格式

    我遇到了将两个表中的数据显示为 JSON 格式并在 yii2 Restful api 上工作的问题 这是我的结构数据库 TABLE volunteer volunteer id int 11 NOT NULL auto increment
  • 从数据库 MYSQL 和 Codeigniter 获取信息

    如果你们需要其他信息 上一个问题就在这里 从数据库中获取信息 https stackoverflow com questions 13336744 fetching information from the database 另一个更新 尽
  • PHP 日志文件颜色

    我正在编写一个 PHP 日志文件类 但我想为写入文件的行添加颜色 我遇到的问题是颜色也会改变终端的颜色 我想要实现的是仅更改写入日志文件的行的颜色 class logClass extends Singleton private funct
  • Laravel - 覆盖模型 ID

    我正在开发电子书管理系统 我使用 UUID 而不是自动递增整数主键 它工作得很好 protected static function boot parent boot static creating function model model
  • 图像创建从jpeg() PHP

    我正在使用 imagecreatefromjpeg 函数合并两张图片 现在我面临的问题是 当我使用服务器中的图片时 它工作正常 而当我使用其他网站的图片时 它不起作用 例如 当我使用这个 PHP 文件时http coolfbapps in
  • 如何使用 PHP 获取列中的所有值?

    我一直在到处寻找这个问题 但仍然找不到解决方案 如何从 mySQL 列中获取所有值并将它们存储在数组中 例如 表名称 客户 列名称 ID 名称 行数 5 我想获取此表中所有 5 个名称的数组 我该如何去做呢 我正在使用 PHP 我试图 SE
  • 如何移动 Zend_Layout 的“视图”

    通常它会是这样的结构 application modules somemodule views scripts index index phtml 我如何将其移动到 application templates somemodule temp

随机推荐

  • HQL数据查询基础(一)

    源自 imooc 的学习 什么是HQL呢 xff1f HQL 是Hibernate Query Language xff0c Hibernate查询语言 xff1b 同时HQL是一种面向对象的查询语言 xff0c HQL查询的主体是映射配置
  • HQL数据查询基础(二)

    继上回 xff08 HQL数据查询基础 xff08 一 xff09 xff09 说到的例子 网上商店 xff0c 来继续完善持久化类和配置文件的创建 上回 在 com imooc model 包中创建 Seller java 持久化类 xf
  • HQL数据查询基础(三)

    继上回 xff08 HQL数据查询基础 xff08 二 xff09 xff09 xff0c 针对 网上商店 这个例子 xff0c 来讲解一些HQL简单的子句用法 xff08 以下的所有测试方法均在 MyTest java 测试类 xff08
  • Maven中pom.xml的解析

    Maven项目中的 pom xml lt project xmlns 61 34 http maven apache org POM 4 0 0 34 xmlns xsi 61 34 http www w3 org 2001 XMLSche
  • IntelliJ使用指南—— 导入Eclipse的Web项目

    通常一个团队中可能有人用eclipse xff0c 有人用intelliJ xff0c 那么经常会出现需要导入别人用eclipse建好的web项目 而IntelliJ提供了多种项目类型的导入方式 xff0c 其中就有eclipse 在初始窗
  • JQuery、JSON、Ajax在Servlet中的应用

    1 在Java中正确得到JSONObject xff0c 需要导入JSON的JAVA支持包 json lib 2 3 jdk15 jar xff0c 同时需导入 JSON依赖包 commons logging 1 0 4 jar xff0c
  • 20个很有用的CSS技巧

    转载自 xff1a 20个很有用的CSS技巧 导语 xff1a 下面这几个 CSS 技巧你可能不知道 xff0c 1 彩色照片变黑白 xff0c 2 所有元素垂直居中 xff0c 3 禁用鼠标 xff0c 4 模糊文字 xff0c 小编学完
  • 「理解HTTP」之常见的状态码

    转载自 xff1a 理解HTTP 之常见的状态码 状态码的职责是当客户端向服务器端发送请求时 xff0c 描述返回请求结果 借助状态码 xff0c 用户可以知道服务器端是正常处理了请求 xff0c 还是出现了什么错误 RFC2616 定义的
  • jQuery UI的简单使用,轻松实现二级菜单

    jQuery UI 的API手册地址 xff1a http api jqueryui com jQuery UI 实现百叶窗效果 菜单 Tab导航 xff1b 最后组合 百叶窗效果 43 菜单 xff0c 实现二级菜单 案例如下 xff1a
  • Python爬虫实战:抓取并保存百度云资源(附代码)

    專 欄 王雨城 xff0c Python中文社区专栏作者 博客 xff1a http www jianshu com u 88ff70818bd1 寻找并分析百度云的转存api 首先你得有一个百度云盘的账号 xff0c 然后登录 xff0c
  • Android 系统禁止应用的某个弹框

    需求 xff1a 谷歌拼音输入法首次使用会弹出以下提示 xff0c 为了提高用户体验 xff0c 在系统层屏蔽此弹窗 这里以谷歌输入法首次使用为例 分析 xff1a 系统dialog的弹出都是集成Dialog java 所以我们先找到dia
  • mysql中的null值和空值区别

    转载自 xff1a 点击打开链接 标签 xff1a 笔记 mysql null 发表时间 xff1a 2014 06 06 23 46 作者 xff1a 出处 xff1a http jackyrong iteye com mysql中的nu
  • bootstrap-table的入门使用——从服务器获取数据

    参考 xff1a Bootstrap Table 查询 xff08 服务器端 xff09 刷新数据 这里需要使用 bootstrap table 插件 使用了CSS3loader显示加载过程 效果如下 xff1a index html lt
  • MySql中UTF8 和 GBK 编码中文字符长度问题

    转载自 xff1a MySql中UTF8 和 GBK 编码中文字符长度问题 MySql中UTF8 和 GBK 编码中文字符长度问题 出处 xff1a http blog csdn net 为什么要了解MySql中UTF8 和 GBK 编码中
  • PHP对表单提交特殊字符的过滤和处理

    转载自 xff1a PHP对表单提交特殊字符的过滤和处理 函数名 释义 介绍htmlspecialchars将与 单双引号 大于和小于号化成HTML格式 amp 转成 amp amp 34 转成 amp quot 39 转成 amp 039
  • ThinkPHP中数据库操作返回值总结

    转载自 xff1a ThinkPHP中数据库操作返回值总结 关键字 xff1a Thinkphp 返回值 数据库操作 select返回值 add返回值 setDec返回值 Thinkphp中的Think Model类提供了数据库的基本CUR
  • 基于 Token 的身份验证

    转载自 xff1a 基于 Token 的身份验证 最近了解下基于 Token 的身份验证 xff0c 跟大伙分享下 很多大型网站也都在用 xff0c 比如 Facebook xff0c Twitter xff0c Google 43 xff
  • 打造 Bootstrap Tags Input 同 Modal 结合的利器

    Boostrap Tags input 的使用 xff1a http bootstrap tagsinput github io bootstrap tagsinput examples Boostrap Tags Input 插件基于Bo
  • 打造 Bootstrap Tags Input 同 Modal 结合的利器(改)

    对上文 打造 Bootstrap Tags Input 同 Modal 结合的利器 中的 js 进行整合 xff0c 如下 xff1a bootstrap tagsinput demo js Created by DreamBoy on 2
  • 我的简单PHP框架——LabPHP v1.0.1

    此前讲到 我做的一个基于MVC设计思想的简单PHP框架 xff08 我的简单PHP框架 LabPHP xff09 xff0c 这里对其进行一些改进 xff0c 改进地方如下 xff1a 1 对 LabPHP Common functions