smarty建的mvc环境

简介: ================================ 搭建MVC结构================================ 基于MVC,解耦合 (高内聚,低耦合),优点:易维护、易扩展 本MVC模式采用的是单一入口: 如:http://localhost/lamp45/mvc/index.php?m=stu&a=add //打开学生信息的添加界面 其中m的值stu表示访问的是StuAction a的值add表示是方法(动作) 就是访问StuAction的add方法。

================================
搭建MVC结构
================================
基于MVC,解耦合 (高内聚,低耦合),优点:易维护、易扩展
本MVC模式采用的是单一入口:
如:http://localhost/lamp45/mvc/index.php?m=stu&a=add //打开学生信息的添加界面
其中m的值stu表示访问的是StuAction a的值add表示是方法(动作)
就是访问StuAction的add方法。
1. 创建目录:
ORG 第三方扩展类
model M(模型)层目录
action A(控制)层目录
view V(视图) 层目录(smarty的模板目录)
public 公共资源目录
libs Smarty库(解压到这里即可)
view_c Smarty模板编译目录
cache Smarty静态缓存目录
configs 配置文件目录

2. 将自己写好的model类放到model目录下
model/db.class.php

3. 在ORG目录下创建一个tpl.class.php的smarty子类,用于初始化smarty(等同于以前的init.php)
代码如下:
//Smarty信息的初始化类
class Tpl extends Smarty{
public function __construct(){
parent::__construct(); //构造父类
//初始化Smarty对象中属性:
$this->template_dir = "view"; //smarty模板目录
$this->compile_dir = "view_c"; //smarty模板编译目录

$this->config_dir = "configs"; //smarty配置文件目录

$this->cache_dir = "cache"; //smarty模板静态缓存目录
//$this->caching = true; //是否开启静态缓存
//$this->cache_lifetime = 3600; //静态缓存时间(秒)

//指定定界符
$this->left_delimiter="<{"; //左定界符
$this->right_delimiter="}>"; //右定界符
}
}

4. 在action目录下创建Action类,继承Tpl类,文件名叫:action.class.php
代码如下:
//Action的控制基类
class Action extends Tpl{
public function __construct(){
parent::__construct();
}

/**
*action初始化方法(在这个方法里根据参数a的值决定调用对应的方法)
*
*/
public function init(){
//获取a参数的值
$a = isset($_GET["a"])?$_GET["a"]:"index"; //默认值为index
//判断当前Action是否存在此方法
if(method_exists($this,$a)){
//调用此方法
$this->$a();
}else{
die("没有找到{$a}对应的方法");
}
}

}

5. 在最外层,创建一个index.php的入口文件
<?php
//网站的主入口程序

//自动加载类
function __autoload($name){
$name = strtolower($name);//转成小写
if(file_exists("./action/{$name}.class.php")){
require("./action/{$name}.class.php");
}elseif(file_exists("./model/{$name}.class.php")){
require("./model/{$name}.class.php");
}elseif(file_exists("./ORG/{$name}.class.php")){
require("./ORG/{$name}.class.php");
}elseif(file_exists("./libs/".ucfirst($name).".class.php")){
require("./libs/".ucfirst($name).".class.php");
}elseif(file_exists("./libs/sysplugins/{$name}.php")){
require("./libs/sysplugins/{$name}.php");
}else{
die("错误:没有找到对应{$name}类!");
}
}
//数据连接配置文件
require("./configs/config.php");

//获取参数m的值,并创建对应的Action对象
$mod = isset($_GET['m'])?$_GET['m']:"index";
//拼装action类名
$classname = ucfirst($mod)."Action";
//创建对应的Action对象
$action = new $classname();

//执行action的初始化(action入口)
$action->init();

6. 在configs的目录下创建一个config.php的配置文件

7. 测试:
-------------------------------------------------------------
1. 在action目录下创建一个indexaction.class.php文件
/**
* 网站入口的主Action类
*/
class IndexAction extends Action{
//默认入口方法
public function index(){
$this->assign("title","MVC的测试界面");
$this->display("index.html");
}
}
2. 在view目录下创建index.html模板页面
<html>
<head>
<title><{$title}></title>
</head>
<body>
<h2><{$title}></h2>

</body>
</html>

目录
相关文章
|
3月前
|
安全 前端开发 测试技术
安全开发-PHP应用&模版引用&Smarty渲染&MVC模型&数据联动&RCE安全&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞
安全开发-PHP应用&模版引用&Smarty渲染&MVC模型&数据联动&RCE安全&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞
|
前端开发 PHP 数据库
浅谈smarty MVC框架
这次又是项目开发遇到的问题,做一个简单的表单处理,将数据写入数据库,流程很简单,由于客户不了解php框架导致我开发用了原生php,当我交付的时候对方说需要使用mvc方式且需要使用smarty框架,这里做一下踩坑总结(由于博主并不是很熟悉这个框架,今天的分享只用于探讨和记录,若有叙述不正确的,欢迎指正)
浅谈smarty MVC框架
|
前端开发 Java 应用服务中间件
Spring MVC环境中文件上传大小和文件类型限制以及超大文件上传bug问题
      在上一篇文章中,主要介绍了Spirng MVC环境下的正常情况下文件上传功能实现。在实际开发的时候,还会涉及到上传文件大小和类型的限制,接下来就会对Spirng MVC环境下文件上传大小和类型的限制进行介绍,还会讲解到文件上传大小tomcat服务器bug问题及解决方案。
2496 0
|
JavaScript 前端开发
Web 2.0 大环境下 JavaScript 的 MVC 赶潮风儿
Web 2.0 大环境下 JavaScript 的 MVC 赶潮风儿 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循“署名-非商业用途-保持一致”创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。
1080 0
|
前端开发 Java 数据库连接
Spring MVC + MyBatis整合(IntelliJ IDEA环境下)
原文:Spring MVC + MyBatis整合(IntelliJ IDEA环境下) 一些重要的知识: mybais-spring.jar及其提供的API: SqlSessionFactoryBean: SqlSessionFactory是由SqlSessionFactoryBuilder产生的,Spring整合MyBats时SqlSessionFactoryBean也是由SqlSessionFactoryBuilder生成的。
1049 0
|
前端开发 PHP
smarty与MVC的关系总结
samrty:主要实现的是m和v的分离实现, samrty是编译型的模版引擎,有着自己的独自语法, samrty函数丰富:  模板嵌套,读取设定文件,变量的预处理。条件判断,循环控制 smarty_inc.
885 0
|
前端开发 .NET 索引
搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 (一)搭建你的环境
使用这套框架不是很长时间。但也基本应用了几个项目中了。在此和大家分享一下我是怎样一步一步搭建此框架的。并为初学者提供一个简单的示范。欢迎共同讨论技术问题。【本人纯属菜鸟!不足之处多谅解!】 第一步:       首先要看一下我项目中三层与mvc以及Spring.Net,Nhibernate处在的哪一层。
1213 0