PHPMVC从零学起,带你编写自己的框架。 想拥有属于自己的框架吗?来吧,带你装B,带你飞。 项目默认访问:http://虚拟域名/index.php?mod=mainnbsp;MVC 第2集,配置smarty模版引擎、过滤HTTP请求防止注入 目录结构: application ------cache ------component
PHP MVC 从零学起,带你编写自己的框架。
<?php
if(!defined('MVC_PATH')){
exit('Access Denied');
}
class controller {
public $tpl; // 模版对象
public $config; // 配置对象
/**
* 初始化
*/
public function init()
{
$this->initConfig();
$this->initViews();
}
/**
* 加载配置
*/
public function initConfig()
{
session_start();
require CONFIGS_PATH . '/config.php';
$this->config = $config;
}
/**
* 加载smarty
*/
public function initViews()
{
require PLUGIN_PATH . '/smarty/Smarty.class.php';
$this->tpl = new Smarty();
$data = $this->config['smarty'];
foreach ($data as $key => $val) {
$this->tpl->$key = $val;
}
}
/**
* smarty同名方法assign
*
* @param string $tpl_var
* @param mixed $value
*/
public function assign($tpl_var, $value = null)
{
$this->tpl->assign($tpl_var, $value);
}
/**
* smarty同名方法display
*
* @param string $resource_name
* @param string $cache_id
* @param string $compile_id
*/
public function display($resource_name, $cache_id = null, $compile_id = null)
{
$this->tpl->display($resource_name, $cache_id, $compile_id);
}
}<?php
/* Smarty配置 */
$config['smarty']['left_delimiter'] = '<{';
$config['smarty']['right_delimiter'] = '}>';
$config['smarty']['template_dir'] = VIEWS_PATH . '/default';
$config['smarty']['compile_dir'] = CACHE_PATH . '/smarty/template_c';
$config['smarty']['cache_dir'] = CACHE_PATH . '/smarty/cache_c';
$config['smarty']['caching'] = false;
$config['smarty']['cache_lifetime'] = 3600;
$config['smarty']['debugging'] = false;
?><?php
class main extends controller {
public function __construct(){
parent::init();
}
public function index(){
$this->assign('hi', 'holle smarty!');
$this->display('index.html');
}
}
?><?php
header('Content-type: text/html; charset=utf-8');
date_default_timezone_set('Asia/Shanghai');
error_reporting(E_ALL ^ E_NOTICE);
// 定义路径
define('MVC_PATH', dirname(__FILE__));
define('PLUGIN_PATH', MVC_PATH . '/plugin');
define('SMARTY_PATH', PLUGIN_PATH . '/smarty');
define('APPLICATION_PATH', MVC_PATH . '/application');
define('COMPONENTS_PATH', APPLICATION_PATH . '/components');
define('CONTROLLERS_PATH', APPLICATION_PATH . '/controllers');
define('VIEWS_PATH', APPLICATION_PATH . '/views');
define('CONFIGS_PATH', APPLICATION_PATH . '/configs');
define('CACHE_PATH', APPLICATION_PATH . '/cache');
require_once COMPONENTS_PATH . '/functions.php'; //加载函数类
require_once COMPONENTS_PATH . '/controller.php'; //加载主控制器
/**
* 过滤特殊符号
* 该方法在GBK数据表下有漏洞
*/
foreach(array('_REQUEST', '_GET', '_POST', '_COOKIE', '_SERVER') as $value) {
foreach(${$value} as $k => $v){
${$value}[$k] = func::saddslashes($v);
}
unset($value);
}
$mod = $_REQUEST['mod'] = !empty($_REQUEST['mod']) ? $_REQUEST['mod'] : 'main';
$act = $_REQUEST['act'] = !empty($_REQUEST['act']) ? $_REQUEST['act'] : 'index';
$controller_file = CONTROLLERS_PATH . '/' . $mod . '.php';
if(!file_exists($controller_file)){
die('没有找到对应的程序文件');
}
require $controller_file;
$controller = new $mod();
$controller->$act();
?>
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
C++高性能并发应用_C++如何开发性能关键应用
Java AI集成Deep Java Library_Java怎么集成AI模型部署
Golang后端API开发_Golang如何高效开发后端和API
Python异步并发改进_Python异步编程有哪些新改进
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
Java GraalVM原生镜像构建_Java怎么用GraalVM构建高效原生镜像
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
C++现代C++20/23/26特性_现代C++有哪些新标准特性如modules和coroutines
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号