基于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 ...
随机推荐
- Supervisor的安装与使用入门
Supervisor是一个进程管理工具,官方的说法 自己开发的应用往往也希望做到随系统自动启动, 而且启动之后最好还能方便的控制其停止/重启. 传统的做法是在 /etc/init.d/ 下建立启动脚本 ...
- HTML---Android与js交互实例
Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true Android(Java)与JavaScript(HTML) ...
- JS/JQ综合总结
总结 js部分 一 语法结构 1 区分大小写 2注意 //单行 /*多行注释*/ 3子面量(直接量 literal) 12//数字 5.8//小数 "hello"字符串 true ...
- cocos2d-x触屏事件(单点触屏)
转自:http://blog.csdn.net/onerain88/article/details/7550009 一般经常用到的触屏的情况有两种:一种是Layer统一接收触屏消息,然后由程序根据需要 ...
- ListView视图缓存错位问题
由于之前写Scroller应用:ListView滑动删除遇到Item视图错位问题,观察发现第1item位置改变后,第1+10的item布局也跟着改变.假设使用ScrollView+ListView,把 ...
- vs2010突然变慢解决方法
方法一: 开始>>运行>>devenv.exe /resetuserdata
- 【代码优化】坚持使用Override注解
对于传统程序猿,注解里面最重要的就是Override注解了.这里的注解,都是指仅仅能用在方法中的声明, 她表示被注解的方法用于覆盖了父类的一个声明,假设坚持使用这个注解,能够防止一大类的非法错误. & ...
- iOS开发简单高效的数据存储
在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题,你是用什么方法来持久保存数据的?这是在几乎每一次关于iOS技术的交流或讨论都会被提到的问题,而且大家对这个问题的热情持续高涨.本文主要从概 ...
- Linux screen命令简介
Linux上有的shell脚本运行时候是阻塞的,如果想在屏幕上即能够看到阻塞命令的输出,同时又能够在shell窗口运行其他程序,那么Linux自带的screen命令是非常不错的选择. 1.screen ...
- SharePoint 页面Pages和SitePages目录创建不成功解决
最近项目中要用到Pages及SitePages目录中的一个 可是目录时,不是发现没有Pages就是没SitePages: 分析后才得知Pages目录需要开户SharePoint Server Publ ...