相信大家在ectouch官网都注意到了,ectouch采用的MVC框架,之前一直以为它用的和ecshop一样都是smarty,本鸟默默按照smarty的文件结构研究了好几天,结果是各种文件对不上号。无奈之下问了度娘才明白我的思考从一开始就是个错误(妹的,这么简单的错误,我竟真的如此认真地研究了好几天,也是醉了,大家平时还是多与度娘沟通,别和我一样遇到个问题就坐在那里想。。。)。说的够多了,该正题了。

  先说一下MVC结构,相信大家能在网上找到不少这方面的资料,这里就ectouch的文件简单总结下。

模块(The Model): 即M

主要包含那些用来操作数据库的函数 文件后缀一般是***Model.class.php 路径一般是../mobile/include/apps/default/model/

控制器(The Controller):即C

控制器是所有WEB应用的第一站,它接受收到的参数,比如$_GET变量,然后做出相应的反应。主要包含处理用户各种操作的函数 文件后缀一般是***Controller.class.php 路径一般是../mobile/include/apps/default/controller/

视图(The View):即V

一说到视图,我们很多人都会想到模板引擎(诸如Smarty等等)。其实就是各种各样的输出,比如说html模板和Javascript文件等。模板路径一般是../mobile/themes/default/

目录结构

根目录 
  |  –  admin 默认后台管理目录(可任意改名) 
  |  –  data 静态资源和系统缓存、配置项目录(必须可写入)

|  – assets 静态资源目录

|  – attached 附件目录

|  – cache缓存目录 
       |  – common 公共静态文件目录 
  |  –  include 核心程序目录 

|  – apps 主程序 
            |  – admin 后台模块

|  – install 安装模块

|  – default 前台默认模块 
                 |  – common 公共方法

|  – controller 控制器

|  – language 语言包

                 |  – model  模型 
       |  – base 基础程序    
                 |  – constant.php  系统常量
                 |  –function.php  系统函数  
                 |  –controller 
                 |  –model  

|  – driver驱动程序

|  – library 主类库

|  – vendor 第三方扩展类

|  –  plugins 插件程序目录  

|  – connect授权登录

|  – wechat 微信 
       |  – integrates 第三方用户整合 
       |  – payment 支付方式

|  – shipping 配送方式

|  –  themes系统默认模板目录

  url结构

  ECTouch是采用个MVC设计模式开发,基于模块和操作的方式进行访问,并且使用单一入口模式进行项目部署和访问,任何功能和模块的访问,只有通过此入口文件。

模块访问方法[示例]:  index.php?m=default&c=category&a=index&id=2

其中 
  m = default 为模块名称位于include/apps/

c = category 为控制器名称位于include/apps/default/controller/IndexController.class.php

a = index 控制器访问方法名称 位于include/apps/default/controller/IndexController.class.php 中index()方法

id = 2 为其他参数 与正常get传递参数形式相同 
模块和操作方法 
  ECTouch中的模块,位于include/apps/目录中 每一个目录称之为一个模块。即url访问中的m [示例]:

index.php?m=default&c=index 
  那么您访问的就是ECTouch/include/apps/default这个模块。 
  如果创建一个前台模块,只要在 include/apps/default 目录下创建:模块名称+Model.class.php  
控制器 
  控制器就是模块文件下面controller下的类文件,位于include/apps/模块/controller/下面。

命名规则为:文件名+Controller.class.php,文件名开头字母大写,例如一个名为test的控制器,那么他的命名为TestController.class.php即可。控制器类的类名称与控制器文件名必须相同。 
  如果您创建了一个TestController.class.php在default模块下,那么我们在浏览器里面输入URL: 
http://localhost/ectouch/mobile/index.php?m=default&c=test 即可访问到相应控制器

如果你添加的控制器类继承了其他的类,那么要注意你类中的方法名称不能和父类的方法名称重复,否则会覆盖原有的或者出现程序运行错误。

例如default模块的类继承了CommonController类,而这个类中定义了view方法,那么就不能再重复定义这个方法了。 
命名规范 
  规范如下:   
  核心程序目录(includes)的类文件需要以.class.php 为后缀名称,开头第一个字母大写。例如:IndexModel.class.php  
  控制器和模型中的类名和文件名一致,例如IndexModel.class.php的类名为:IndexModel

ectouch第二讲之 文件结构的更多相关文章

  1. 【军哥谈CI框架】之入门教程之第二讲:分析CI结构和CI是怎么工作的

    [军哥谈CI框架]之入门教程之第二讲:分析CI结构和CI是怎么工作的   之入门教程之第二讲:分析CI结构和CI是如何工作的大家好!上一节,我们共同部署了一个CI网站,做到这一点非常简单,但是,亲们, ...

  2. POI教程之第二讲:创建一个时间格式的单元格,处理不同内容格式的单元格,遍历工作簿的行和列并获取单元格内容,文本提取

    第二讲 1.创建一个时间格式的单元格 Workbook wb=new HSSFWorkbook(); // 定义一个新的工作簿 Sheet sheet=wb.createSheet("第一个 ...

  3. Stanford机器学习---第二讲. 多变量线性回归 Linear Regression with multiple variable

    原文:http://blog.csdn.net/abcjennifer/article/details/7700772 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...

  4. 《ArcGIS Engine+C#实例开发教程》第二讲 菜单的添加及其实现

    原文:<ArcGIS Engine+C#实例开发教程>第二讲 菜单的添加及其实现 摘要:在上一讲中,我们实现了应用程序基本框架,其中有个小错误,在此先跟大家说明下.在“属性”选项卡中,我们 ...

  5. 基于微信公众平台的开发(清华大学第二讲)_Alien的笔记

    基于微信公众平台的开发(清华大学第二讲)_Alien的笔记 基于微信公众平台的开发(清华大学第二讲)

  6. 32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数

    32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数 (如果想看所有代码,请下载课堂资料,里面有所有代码,这里会讲解怎么生成一个窗口程序) 一丶32位汇编编写Windows窗口程序 首 ...

  7. 常见注入手法第二讲,APC注入

    常见注入手法第二讲,APC注入 转载注明出处 首先,我们要了解下什么是APC APC 是一个简称,具体名字叫做异步过程调用,我们看下MSDN中的解释,异步过程调用,属于是同步对象中的函数,所以去同步对 ...

  8. PE文件格式详解,第二讲,NT头文件格式,以及文件头格式

    PE文件格式详解,第二讲,NT头文件格式,以及文件头格式 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) PS:本篇博客 ...

  9. 脱壳第二讲,手动脱壳PECompact 2.x

    脱壳第二讲,手动脱壳PECompact 2.x PS: 此博客涉及到PE格式.所以观看此博客你要熟悉PE格式 首先,逆向inc2l这个工具,汇编中可能会用的 inc头文件转换为lib的工具 但是他有壳 ...

随机推荐

  1. 手机大数据_SQL映射对象_动软_代码模板_Models

    <#@ template language="c#" HostSpecific="True" #> <#@ output extension= ...

  2. Windows平台注册mysql服务

    将mysql 注册为服务: ->mysqld --install 卸载服务: ->mysqld --remove 命令行启动mysql: ->net start mysql 命令行关 ...

  3. Java基础之写文件——从多个缓冲区写(GatheringWrite)

    控制台程序,使用单个写操作将数据从多个缓冲区按顺序传输到文件,这称为集中写(GatheringWrite)操作.这个功能的优势是能够避免在将信息写入到文件中之前将信息复制到单个缓冲区中.从每个缓冲区写 ...

  4. HTML语言的一些元素(二)

    3)表示元素:<b>,<i>,<u>,<s>,<tt>,<sup>,<sub>,<strike>,< ...

  5. pg_stat_statements

    Functions pg_stat_statements_reset() returns void pg_stat_statements_reset discards all statistics g ...

  6. FAQ: c++ 函数名后添加 const void function1(int &id) const

    说明这个函数不能修改这个类的成员变量!只能操作自己的参数和内部的范围变量! 括号内的&id,&表示这个变量和C# in和out是一样的,算是一个reference,可以更改值,要想不更 ...

  7. USACO: Combination Lock

    长久不写算法题,这种简单题折腾了一下午... /* ID: yingzho2 LANG: C++ TASK: combo */ #include <iostream> #include & ...

  8. jsp页面中的java代码

    jsp页面中的java代码 1.jsp表达式  <%= ....%>  只能放置一个变量常量 2. jsp小脚本 <% .... %>  java语句,可以插入一些语句 3. ...

  9. JSP页面元素

    jsp-->Java Server Page jsp 页面元素: 静态内容 2.  指令 <%@ page contentType=”text/html” %>  设置指定页面内容类 ...

  10. 封装mysql类

    类: <?phpheader("content-type:text/html;charset=utf-8");//封装一个类/*掌握满足单例模式的必要条件(1)私有的构造方法 ...