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

       此前讲到 我做的一个基于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();
?>



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好用的简易PHP模板引擎框架 +------------------------------------------------------------------------------------------------------ + WshbinPHP模板引擎系统 开发者:吴雅格 + + 模板编译规则 + + 2013年7月1日 编 +----------------------------------------------------------------------------------------------------- * 系统默认使用边界符 “{”开始,“}”结束。 +----------------------------------------------------------------------------------------------------- + 变量 标签 在模板中的使用 +----------------------------------------------------------------------------------------------------- * {$name} (变量) +----------------------------------------------------------------------------------------------------- + 数组 标签 在模板中的使用 +----------------------------------------------------------------------------------------------------- * {$name['name']} (数组) +----------------------------------------------------------------------------------------------------- + foreach 标签 在模板中的使用 +----------------------------------------------------------------------------------------------------- * {loop $name $name} ( foreach 循环标签:<?php foreach($name as $name){ ?> ) * {loop $name $key $val} ( foreach 循环标签:<?php foreach($name as $key => $val){ ?> ) * {elseloop} 任意值 {endloop} ( foreach 循环标签如果没有内,容就输出自定义值 ) * {endloop} (循环结束标签) +----------------------------------------------------------------------------------------------------- + if 标签 在模板中的使用 +----------------------------------------------------------------------------------------------------- * {if ( 任意条件 )} ( if判断:<?php if( 任意条件 ){ ?> ) * {else} ( 否则标签 ) * {elseif ( 任意条件 )} ( elseif判断:<?php elseif( 任意条件 ){ ?> ) * {endif} ( if结束标签 ) +----------------------------------------------------------------------------------------------------- + 其他 标签 在模板中的使用 +----------------------------------------------------------------------------------------------------- * {date('Y-m-d H:i:s','时间戳')} (时间戳转换日期) * {P: php言语 :} ( 这是一段PHP言语:<?php ?> ) * {I: 要加载的文件路径 } ( 模板里文件加载:public/header.html )

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值