基于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 ...
随机推荐
- Linux vmstat具体解释(系统IO)
1. vmstat 能够展现给定时间间隔的server的状态值,包含server的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况 vmstat 2 10 2: 每隔2s 10 : 统计10次 ...
- ThinkPHP3.1新特性: 多层MVC支持
ThinkPHP基于MVC(Model-View-Controller,模型-视图-控制器)模式,不过均支持多层(multi-Layer)设计. 模型(Model)层:默认的模型层由Model类构成, ...
- Linq-表达式常用写法
这里主要是将数据库中的常用操作用LAMBDA表达式重新表示了下,用法不多,但相对较常用,等有时间了还会扩展,并将查询语句及LINQ到时也一并重新整理下:1.select语句:books.Select( ...
- java12 File类
)File类 )IO流的原理及概念 )IO流的分类 )IO流类的体系 )字节流和字符流 )处理流 )文件拷贝 )处理流 )文件拷贝 )文件分割与合并 File:文件和目录路径名的抽象表示形式,一个Fi ...
- careercup-树与图 4.9
4.9 给定一颗二叉树,其中每个结点都含有一个数值.设计一个算法,打印结点数值总和等于某个给定值的所有路径.注意,路径不一定非得从二叉树的根节点或叶子节点开始或结束. 类似于leetcode:Path ...
- MySQL DBA教程:Mysql性能优化之缓存参数优化
在平时被问及最多的问题就是关于 MySQL 数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级 MySQL DBA 以及其他对 MySQL 性能优化感 ...
- iphone4s 关于大于400M的视频无法拷贝的问题
方法有二: 1.可以用win7等高版本的系统拷出 2.可以用Itools工具导出
- linux 清空文件内容命令
清空文件内容命令 $ echo "" >log.log > 是重写,覆盖式 >>是尾部追加
- 【转】Hibernate映射机制之XXX.hbm.xml
http://blog.csdn.net/a9529lty/article/details/6454924[注意多对一中“多”和“一”各自的java文件.xml文件的书写格式] 另外两篇总结:http ...
- Android(java)学习笔记156:Java虚拟机和Dalvik虚拟机的区别
Google于2007年底正式发布了Android SDK, 作为 Android系统的重要特性,Dalvik虚拟机也第一次进入了人们的视野.它对内存的高效使用,和在低速CPU上表现出的高性能,确实令 ...