ectouch第三讲之加载调用机制

加载与调用机制:

当地址栏键入/mobile,就会加载入口文件index.php;从入口文件里面会调用EcTouch.php公共入口文件,当进入公共入口文件,会定义一些变量,然后加载公共函数文件Common.php,再加载默认配置和数据库配置时区的设置等基本功能,然后会调用在Common.php里面的urlRoute()函数,这个函数是在Common.php里面。在调用urlRoute()函数进行网址路由解析解析时,会调用\mobile\include\vendor\Dispatcher.class.php这个文件里面的dispatch()方法进行URL调度,这个方法获得当前实际的模块名,控制器和方法名。对获得的这些模块名,控制器和方法会在Common.php进行URL的组装,并最终解析呈现出页面。 然后实现各个页面的传递与跳转。最后抛出异常处理。

default模块和admin模块下有着自己的控制器和model,还有数据库配置文件。

加载与调用主要函数及定义如下(缩进为层次关系,缩进指在当前文件下):
调用文件 文件存放位置
1、入口文件   \mobile\index.php
2、调用核心文件     \mobile\include\EcTouch.php

define  BASE_PATH \mobile\include\

ROOT_PATH \mobile\
        APP_PATH \mobile\include\apps\
        ADDONS_PATH \mobile\plugins\
        DEFAULT_APP                 default
        DEFAULT_CONTROLLER     Index
        DEFAULT_ACTION         index

加载系统函数       \mobile\include\Common.php

路由解析 urlRoute()

生成URL链接 url( U())
                        URL组装 U()
                        URL重定向 redirect()
                        自动加载         \mobile\include\base\model\类名.class.php
                        \mobile\include\base\controller\类名.class.php
                        \mobile\include\apps\模块名\model\类名.class.php
                        \mobile\include\apps\模块名\controller\类名.class.php
                        加载配置文件 load_config()
                        C()获取和设置配置参数、E()异常、L()获取和设置语言定义、I()获取输入参数、
                        session()session管理函数
                        cookie()Cookie 设置、获取、删除
                        site_info()站点数据
                        logResult()写入日志文件

默认配置    \mobile\include\Convention.php (包含应用配置、数据库配置、模板配置、session参数设置、Cookie参数设置)
            数据库配置      \mobile\data\config.php

define      __HOST__      http://localhost

__ROOT__        \mobile

__URL__             http://localhost/mobile

__PUBLIC__      \mobile\data\common

__ASSETS__  \mobile\data\assets\default

\mobile\include\vendor\Dispatcher.class.php文件主要方法名和变量定义:
获得实际的控制器名称getController
获得实际的操作名称getAction
获得实际的模块名称getModule
获取模块名称
define(‘APP_NAME‘)|C(‘_APP_NAME‘)  default
当前应用地址
 define(‘__APP__‘, /mobile/index.php
定义控制器和操作名
define(‘CONTROLLER_NAME‘) Index
define(‘ACTION_NAME‘) index
URL地址
define(‘__MODULE__‘      /mobile/index.php/default 
define(‘__CONTROLLER__ /mobile/index.php/default/index
define(‘__ACTION__ /mobile/index.php/default/index/index
define(‘PHP_FILE‘, /mobile/index.php
define(‘__SELF__‘ /mobile/index.php?m=default&c=index&a=index

待续。。。

时间: 2024-10-11 10:35:09

ectouch第三讲之加载调用机制的相关文章

Android应用setContentView与LayoutInflater加载解析机制源码分析

[工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处,尊重分享成果] 1 背景 其实之所以要说这个话题有几个原因: 理解xml等控件是咋被显示的原理,通常大家写代码都是直接在onCreate里setContentView就完事,没怎么关注其实现原理. 前面分析<Android触摸屏事件派发机制详解与源码分析三(Activity篇)>时提到了一些关于布局嵌套的问题,当时没有深入解释. 所以接下来主要分析的就是View或者ViewGroup对象是如何添加至应用程

Android动态加载Dex机制解析

1.什么是类加载器? 类加载器(class loader)是 Java?中的一个很重要的概念.类加载器负责加载 Java 类的字节代码到 Java 虚拟机中. Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件).类加载器负责读取 Java 字节代码,并转换成java.lang.Class类的一个实例.每个这样的实例用来表示一个 Java 类.通过此实例的 newInstance()

SSH学习-Hibernate懒惰加载&amp;缓存机制

Hibernate查询会先从一级缓存session中查询数据,如果session中没有会从sessionfactory中查找数据,如果前面两个都没有将从DB中查数据,这就是Hibernate的缓存机制,这样可以降低应用程序与物理数据源的交互频率,提高应用程序的性能.另外懒惰加载,就是尽可能晚的将数据库中的数据加载到内存中来,需要查询时查询数据,不需要查询的数据暂时就不查询. 一级缓存session管理方法 (1)evict(Object):将对象Object从session中清除掉,从持久状态进

Java_动态重新加载Class机制

Java动态重新加载Class 项目中使用到了动态重新加载Class的机制,作用是让一些代码上线之前可以在线上环境测试一下,当然,这是非常不好的测试机制,我刚来的时候也为这种机制感到惊讶—怎么可以在线上环境运行测试代码!后来经过了解,这么做的原因有以下两个: 有些代码没有办法在本地进行测试,本地没有线上的环境 我们弱到连测试机都没有(这是重点) 既然我们连测试机都没有,那么我就觉得我们的项目其实也没有想象中的重要,这么测就这么测吧~~     之前对ClassLoader没啥概念,google到

unreal3对象属性自动从配置文件中加载的机制

unrealscript中有两个与属性自动配置相关的关键字: config/globalconfig 当把它们应用于属性时,对象在创建后,该属性的初始值会被自动设置为相对应ini文件中的值. 举例来说,如有一个类: class HNet extends Object config(game) native(net); //var globalconfig string host;var config string host; function test() { `Log("HNet test,

Spring加载XML机制

转载自跳刀的兔子   http://www.cnblogs.com/shipengzhi/articles/3029872.html 加载文件顺序 情形一:使用classpath加载且不含通配符 这是最简单的情形,Spring默认会使用当前线程的ClassLoader的getResource方法获取资源的URL,如果无法获得当前线程的ClassLoader,Spring将使用加载类org.springframework.util.ClassUtils的ClassLoader. 1.当工程目录结构

虚拟机加载类机制

加载--连接(验证.准备.解析)---初始化----使用---卸载 当且仅当5中情况 "初始化": 比如new关键字.反射.初始化一个类时父类未初始化,则初始化父类.main方法的类,JDK1.7时 methodHandle方法. 加载:       加载做了三件事: 1.通过一个类的全限定名来获取定义此类的二进制字节流 2.讲这个字节流所代表的静态存储结构转化为方法区的运行时数据结构 3.在内存中生成一个代表着各类的java.lang.Class对象,作为方法区的这个类的各种数据的访

虚幻4的关卡动态加载机制

对于大型游戏MMORPG游戏或是3D街景(虚拟现实)还有大型无缝地图都需要地图啊,关卡动态加载的机制来达到让用户感觉自己一直是在漫游,而不会出现Loading(读条),卡界面等情况.当然除非是垮区域无法依靠关卡和关卡中之间的关系做处理. UnrealEngine4 作为一个多年处于世界前矛的商业引擎,自然而然也为大家考虑到这个这种硬性需求.UnrealEngine4 中的动态加载大概分为3种. 首先需要明确下几点概念.因为再同学们信息会等的前提下才会更有利于理解和相互交流.好了,不瞎扯了进入正题

类的加载机制

ClassLoader Java程序并不是一个原生的可执行文件,而是由许多独立的类文件组成,每一个文件对应一个Java类.此外,这些类文件并非立即全部装入内存的,而是根据程序需要装入内存.ClassLoader专门负责类文件装入到内存. 数组类的 Class 对象不是由类加载器创建的,而是由 Java 运行时根据需要自动创建.数组类的类加载器由 Class.getClassLoader() 返回,该加载器与其元素类型的类加载器是相同的:如果该元素类型是基本类型,则该数组类没有类加载器. 从上图我