Heim > php教程 > php手册 > PHP MVC 从零学起(2)

PHP MVC 从零学起(2)

WBOY
Freigeben: 2016-06-06 19:35:42
Original
1137 Leute haben es durchsucht

PHPMVC从零学起,带你编写自己的框架。 想拥有属于自己的框架吗?来吧,带你装B,带你飞。 项目默认访问:http://虚拟域名/index.php?mod=mainnbsp;MVC 第2集,配置smarty模版引擎、过滤HTTP请求防止注入 目录结构: application ------cache ------component

PHP MVC 从零学起,带你编写自己的框架。
想拥有属于自己的框架吗?来吧,带你装B,带你飞。
项目默认访问:http://虚拟域名/index.php?mod=main&act=index

第1集,简单入门 MVC
第2集,配置smarty模版引擎、 过滤HTTP请求防止注入


目录结构:
application
------cache
------components
------------controller.php
------------functions.php
------configs
------------config.php
------controllers
------------main.php
------views
------------default
------------------index.php
plugin
------smarty
index.php
<?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);
    }
    
}
Nach dem Login kopieren
<?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;
?>
Nach dem Login kopieren
<?php

class main extends controller {

    public function __construct(){
        parent::init();    
    }
    
    public function index(){
        $this->assign('hi', 'holle smarty!');
        $this->display('index.html');
    }
}
?>
Nach dem Login kopieren
<?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();
?>
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage