基于smarty+medoo手搭php简单的框架
1、首先看一下搭建好的smarty目录(箭头位置是后新建的文件夹,也是框架结构的最终目录结构)

2、首先在根目录下新建index.php文件即入口文件,内容如下
<?php
require_once("/Framework/autoloadPhp_requireSmarty.php"); // 用来自动引入需要的控制器类和引入smarty配置文件 define('__PUBLIC__','http://localhost/beerlottery_test/public/');
$smarty->assign('__PULIC__',__PUBLIC__); // 定义常量模板文件需要的public目录 require_once('/Framework/load_function.php'); // 进行生成动态方法执行
autoloadPhp_requireSmarty.php 代码如下
<?php
header("Content-type: text/html; charset=utf-8"); // 声明编码
function __autoload($classname){
$file_url = "./Controller/".$classname.".php"; // 设置目录
if(file_exists($file_url)) { // 判断文件是否存在
include($file_url);
} else {
header("Location: http://localhost/beerlottery_test/public/404.html");
echo "<h2 style='margin-left:30px;margin-top:30px'>未找到控制器'$classname'!</h2>";
}
}
require_once("/libs/config.php"); // 加载smarty配置文件
/Framework/load_function.php 代码如下
$url = $_SERVER['PHP_SELF']; // 获取url路径
$arr = explode("/",$url); // 按照/的方式拆分字符串放在一维数组中
$Controller = new $arr[3](); // 获取控制器名称,创建动态对象
if(method_exists($Controller,"$arr[4]")){ // 判断该类中是否有该方法
$Controller->$arr[4](); // 运行该方法
}else{
header("Location: http://localhost/beerlottery_test/public/404.html");
echo "<h2 style='margin-left:30px;margin-top:30px'>未定义该方法'$arr[4]()'!</h2>";
} 总的思路就是获取url然后按照/来进行拆分成一维的数组,然后进行new 该位置的数组元素,在执行url位置上的方法即可

以此种方式作为简单的路由访问。
3、接下来看一看控制器文件,即Controller.php文件,主要做了两件事,接收smarty对象,引入model控制器

<?php
class Controller{
var $smarty = null; // 定义全局变量
public function __construct(){ // 当被实例化即加载相关资源
require_once('/Model/Model.php'); // 引入Model层
// 在此次做向下扩展
global $smarty; // 拿到全局变量
$this->smarty = $smarty; // 赋值全局变量,传递对象参数
}
}
其余本分有空再补,本文仅供自己学习总结,如有需要源代码者联系我吧。
基于smarty+medoo手搭php简单的框架的更多相关文章
- 使用java语言基于SMTP协议手写邮件客户端
使用java语言基于SMTP协议手写邮件客户端 1. 说明 电子邮件是互联网上常见的应用,他是互联网早期的产品,直至今日依然受到广大用户的喜爱(在中国可能因为文化背景不同,电子邮件只在办公的时候常用) ...
- 手写一个简单到SpirngMVC框架
spring对于java程序员来说,无疑就是吃饭到筷子.在每次编程工作到时候,我们几乎都离不开它,相信无论过去,还是现在或是未来到一段时间,它仍会扮演着重要到角色.自己对spring有一定的自我见解, ...
- 基于MATLAB的手写公式识别(3)
基于MATLAB的手写公式识别 图像的膨胀化,获取边缘(思考是否需要做这种处理,初始参考样本相对简单) %膨胀 imdilate(dilate=膨胀/扩大) clc clear A1=imread(' ...
- 基于DOM的XSS注入漏洞简单解析
基于DOM的XSS注入漏洞简单解析http://automationqa.com/forum.php?mod=viewthread&tid=2956&fromuid=21
- 基于mAppWidget实现手绘地图(十五)–如何控制放大缩小
一般来说,可以使用以下几种方式来控制地图的放大/缩小 : 使用控件底部的缩放按钮 双击控件 pinch手势 物理按键 :I键标识缩小 :O键表示放大.(只有设备具有物理按键才行) 当然, ...
- 基于zepto的手机焦点图touchstart touchmove
基于zepto的手机焦点图,查看地址:demo (建议使用手机浏览器查看)代码如下: <!DOCTYPE HTML> <html> <head> <title ...
- 基于mAppWidget实现手绘地图--索引&DEMO
文章翻译完了,梳理一下,附Demo下载 基于mAppWidget实现手绘地图(一)–简介 基于mAppWidget实现手绘地图(二)–概要 基于mAppWidget实现手绘地图(三)–环境搭建 基于m ...
- 最简单的基于libVLC的例子:最简单的基于libVLC的推流器
===================================================== 最简单的基于libVLC的例子文章列表: 最简单的基于libVLC的例子:最简单的基于lib ...
- 最简单的基于libVLC的例子:最简单的基于libVLC的视频播放器(图形界面版)
===================================================== 最简单的基于libVLC的例子文章列表: 最简单的基于libVLC的例子:最简单的基于lib ...
随机推荐
- solrj6.2异常--Expected mime type application/octet-stream but got text/html.
org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException: Error from server at http://19 ...
- WINFORM跟随WPF窗体移动
<Window x:Name="mainWindow1" x:Class="WpfApplication9.MainWindow" xml ...
- java23 XML
XML:可扩展标记语言. xml可以当成一个小型的数据库, html / \ html5 xhtml(格式比较严格) | xml xml解析方式有2种: -SAX,SAX是基于事件流的解析,事件流解析 ...
- 【Android】 onSaveInstanceState()恢复数据
onSaveInstanceState()方法会携带一个 Bundle 类型的参数,Bundle 提供了一系列的方法用于保存数据,比如可以使用 putString()方法保存字符串,使用 putInt ...
- Demo1_iOS9网络适配_改用更安全的HTTPS
iOS9把所有的http请求都改为https了:iOS9系统发送的网络请求将统一 使用TLS 1.2 SSL.采用TLS 1.2 协议,目的是 强制增强数据访问安全,而且 系统 Foundation ...
- Java内存模型浅析
JVM在执行java程序时会将它所管理的内存划分成若干个不同的数据区域.如图所示: 其中方法区和堆是所有线程共享的数据区,其他区域则是线程隔离的数据区. 这些区域的功能各有不同: 程序计数器:可以理解 ...
- .net+easyui系列--Pagination 分页
使用 JS 创建分页 <div id="pat" style="background:#efefef;border:1px solid #ccc;"> ...
- GridView中使用如下button OnClientClick代码会出现解析错误
在GridView中使用如下代码会出现解析错误: <asp:LinkButton ID="DeleteButton" runat="server" Cau ...
- 数据结构与算法JavaScript 读书笔记
由于自己在对数组操作这块比较薄弱,然后经高人指点,需要好好的攻读一下这本书籍,原本想这个书名就比较高深,这下不好玩了.不过看着看着突然觉得讲的东西都比较基础.不过很多东西,平时还是没有注意到,故写出读 ...
- UIView的frame和bounds区别
UIView的frame和bounds区别 iOS中,大家肯定对view和frame都不陌生,我们设置view在父view中的位置和大小时,只需要设置frame就可以了. 可能大家也有查过网上的一些资 ...