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(); ?>

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境