検索
ホームページphp教程php手册PHP MVC 从零学起(2)

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);
    }
    
}
<?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();
?>
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール