首页 后端开发 php教程 ECMall的请求与系统跳转_PHP教程

ECMall的请求与系统跳转_PHP教程

Jul 13, 2016 am 10:33 AM

ecmall是一个基于mvc模式框架系统,跟thinkphp有点像。先从ecmall的入口开始,ecmall入口文件upload/index.php、admin.php:

index.php启动ecmall前台,启动后则进入ecmall框架核心文件ecmall.php. ecmall.php相当于一个调度中心,接收不同的控制命令(app)以及命令的相关操作(funciton),接着对其进行分配处理。然后调度中心把这些命令(app)和方法(function) 传到前台控制中心对应的具体控制器上。"控制器"接收到命令后,开始实施执行控制,接着把处理后的结果传给view模板文件(模板命名规则:appname.fucname.html)。

其中控制器接收到命令执行过程中,可以调用调度中心的模型获取方法&m()实例化一个模型,进行数据的curd操作。

index.php:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

include(ROOT_PATH . '/eccore/ecmall.php'); 

/* 启动ECMall */ 

ECMall::startup(array

    'default_app'   =>  'default'

    'default_act'   =>  'index'

    'app_root'      =>  ROOT_PATH . '/app'

//加载系统所需要的基础类 

    'external_libs' =>  array

        ROOT_PATH . '/includes/global.lib.php'

        ROOT_PATH . '/includes/libraries/time.lib.php'

        ROOT_PATH . '/includes/ecapp.base.php'

        ROOT_PATH . '/includes/plugin.base.php'

        ROOT_PATH . '/app/frontend.base.php'

    ), 

)); 

登录后复制

ecmall.php:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

class ECMall 

    /* 启动 */ 

    function startup($config = array()) 

    

        /* 加载初始化文件 */ 

        require(ROOT_PATH . '/eccore/controller/app.base.php');     //基础控制器类 

        require(ROOT_PATH . '/eccore/model/model.base.php');   //模型基础类 

   

        if (!emptyempty($config['external_libs'])) 

        

            foreach ($config['external_libs'] as $lib

            

                require($lib); 

            

        

        /* 数据过滤 */ 

        if (!get_magic_quotes_gpc()) 

        

            $_GET   = addslashes_deep($_GET); 

            $_POST  = addslashes_deep($_POST); 

            $_COOKIE= addslashes_deep($_COOKIE); 

        

   

        /* 请求转发 */ 

        $default_app = $config['default_app'] ? $config['default_app'] : 'default'

        $default_act = $config['default_act'] ? $config['default_act'] : 'index'

   

        $app    = isset($_REQUEST['app']) ? trim($_REQUEST['app']) : $default_app

        $act    = isset($_REQUEST['act']) ? trim($_REQUEST['act']) : $default_act

   

        $app_file = $config['app_root'] . "/{$app}.app.php"

        if (!is_file($app_file)) 

        

            exit('Missing controller'); 

        

   

        require($app_file); 

        define('APP', $app); 

        define('ACT', $act); 

        $app_class_name = ucfirst($app) . 'App'

   

        /* 实例化控制器 */ 

        $app     = new $app_class_name(); 

        c($app); 

        $app->do_action($act);        //转发至对应的Action 

        $app->destruct(); 

    

   

//根据app后面所跟的参数,来判断加载对应的控制器类文件,类文件在app文件夹下,对应名称与参数相同,act后面的参数是对应控制器中的操作方法处理请求 

//而对应的动作中,会有一个判断: if (!IS_POST){请求前的页面内容的显示}else{请求后的表单处理及处理完成后的页面跳转}。其中包括使用json处理数据 

//这里需要提出的是:在控制器中:  

$this->assign('order', $order_info);      //向模板页传递所需要参数的值      

$this->display('buyer_order.confirm.html');//跳转到哪个页面 

$this->json_result($new_data, 'confirm_order_successed');//使用json的方式传递参数,然后在页面上使用javascript处理请求的跳转

登录后复制

由于这个机制,ECMALL中可以自行添加APP,模块,插件等。如何在ECMALL中添加自己的APP呢?比如访问地址为http://xxx.com/index.php?app=hello

  1. 在ecmall的app目录下建立一个新的名称为hello.app.php的应用文件
  2. 在languages的sc-utf8的目录下建立对应的语言文件 hello.lang.php ,并返回数组 (若不建立,会出错)
  3. hello.app.php中的类为HelloApp,并继承FrontendApp
  4. 此为前端程序,在ecmall的themes/mall/default文件夹下建立一个hello.index.html模板文件
  5. 重写默认的index方法,可以使用模板的方式输出:
  6. 1

    2

    3

    $h = "Hello"

        $this->assign("h",$h); 

        $this->display('hello.index.html'); 

    登录后复制
  7. 编写其他方法比如访问地址为http://xxx.com/index.php?app=hello&act=test

这个URL访问的名为hello的app类中的test方法,其实http://xxx.com/index.php?app=hello默认访问的是index方法。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

//1、在upload/app/下建立一个test.app.php 

<?php 

class TestApp extends MallbaseApp 

    public function index() 

    

        $str="hello world"

        $uc_first= ucfirst($str).'<br>'

        $uc_words=ucwords($str).'<br>'

            

        $Model=&m('goods'); 

        $res=$Model->get(27); 

        print_r($res); 

        

        

        $this->assign('ss',$uc_first); 

        $this->assign('sss',$uc_words); 

        $this->display('test.index.html');  

    

}    

?> 

    

//2、在upload/languages/sc-utf-8/下建立一个test.lang.php 

<?php 

    return array();            

?> 

    

//  3、在upload/themes/mall/default/建立一个test.index.html 

登录后复制

admin.php这是启动ecmall后台。启动后也进入ecmall框架核心文件ecmall.php。之后的操作跟前台差不多,区别是调度中心把命令传给"后台"控制中心。但控制器调用的模型是同一个模型中心。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/752396.htmlTechArticleecmall是一个基于mvc模式框架系统,跟thinkphp有点像。先从ecmall的入口开始,ecmall入口文件upload/index.php、admin.php: index.php启动ecmall前台,启动...
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

11个最佳PHP URL缩短脚本(免费和高级) 11个最佳PHP URL缩短脚本(免费和高级) Mar 03, 2025 am 10:49 AM

11个最佳PHP URL缩短脚本(免费和高级)

在Laravel中使用Flash会话数据 在Laravel中使用Flash会话数据 Mar 12, 2025 pm 05:08 PM

在Laravel中使用Flash会话数据

简化的HTTP响应在Laravel测试中模拟了 简化的HTTP响应在Laravel测试中模拟了 Mar 12, 2025 pm 05:09 PM

简化的HTTP响应在Laravel测试中模拟了

构建具有Laravel后端的React应用程序:第2部分,React 构建具有Laravel后端的React应用程序:第2部分,React Mar 04, 2025 am 09:33 AM

构建具有Laravel后端的React应用程序:第2部分,React

php中的卷曲:如何在REST API中使用PHP卷曲扩展 php中的卷曲:如何在REST API中使用PHP卷曲扩展 Mar 14, 2025 am 11:42 AM

php中的卷曲:如何在REST API中使用PHP卷曲扩展

Instagram API简介 Instagram API简介 Mar 02, 2025 am 09:32 AM

Instagram API简介

在Codecanyon上的12个最佳PHP聊天脚本 在Codecanyon上的12个最佳PHP聊天脚本 Mar 13, 2025 pm 12:08 PM

在Codecanyon上的12个最佳PHP聊天脚本

Laravel中的通知 Laravel中的通知 Mar 04, 2025 am 09:22 AM

Laravel中的通知

See all articles