码迷,mamicode.com
首页 > 移动开发 > 详细

【shopex】app开发机制

时间:2017-10-04 16:17:56      阅读:324      评论:0      收藏:0      [点我收藏+]

标签:font   out   目录   数据库表   事件   htm   control   流程   new   

shopex的app开发机制详解

shopex的app开发机制,让我们可以实现以下特性:

    1、建立自己的数据库表。
    2、创建自己的控制器。
    3、在前后台增加栏目。
    4、用自己的控制器替换系统默认的(自定义业务流程)。
    5、添加事件侦听器,使得系统事件时调用自己的代码。

下面我们一个小例子来阐述下这种app功能包基本开发步骤:

    1、在网站根目录的/plugins/app目录下创建demo目录,那么同时这个文件下面就必须要有个app.demo.php文件,此文件可以如下定义:

class app_demo extends app{

    var $ver = 0.8;

    var $name=‘样例程序‘;

    var $website = ‘http://www.shopex.cn‘;

    var $author = ‘dev@shopex.cn‘;

    //可选函数

    //定义接管系统哪些流程,由自身的哪个类/方法去执行

    //本例表示,启用后前台将把所有访问购物车的控制器请求重定向

    //到本软件包内 democtl对象的cartidx方法里。

    function ctl_mapper(){

        return array(

            ‘shop:cart:index‘ => ‘demo_ctl:cartidx‘,

        );

    }

    //可选函数

    //侦听系统哪些事件

    //此处可用关键字any表示所有事件

    //本例表示:

    //侦听订单新建事件 -> 调用event_handle类的order_new方法执行

    //侦听会员新建事件 -> 调用event_handle类的member_create方法执行

    function listener(){

        return array(

            ‘trading/order:create‘ =>

                ‘demo_event_handler:order_new‘,

 

            ‘member/account:register‘ =>

                ‘demo_event_handler:member_create‘,

 

            ‘any‘=>‘demo_event_handler:any‘,

        );

    }

    //可选函数, 返回需要建表的信息

    //本例是建立两个表, 系统会自动加前缀 sdb_

    function dbtables(){

        $tables[‘table_2‘] = array (

            ‘columns‘ =>

            array (

                ‘controller‘ =>

                array (

                    ‘type‘ => ‘varchar(100)‘,

                    ‘required‘ => true,

                    ‘pkey‘ => true,

                    ‘editable‘ => false,

                ),

                ‘plugin‘ =>

                array (

                    ‘type‘ =>‘varchar(100)‘,

                    ‘required‘ => true,

                    ‘editable‘ => false,

                ),

            ),

        );

        $tables[‘table_1‘] = array (

            ‘columns‘ =>

            array (

                ‘controller‘ =>

                array (

                    ‘type‘ => ‘varchar(100)‘,

                    ‘required‘ => true,

                    ‘pkey‘ => true,

                    ‘editable‘ => false,

                ),

                ‘plugin‘ =>

                array (

                    ‘type‘ =>‘varchar(100)‘,

                    ‘required‘ => true,

                    ‘editable‘ => false,

                ),

            ),

        );

        return $tables;

    }

    //我承认这是个非常邪恶的设计...

    //但你要承认它可以让你无所不能

    function output_modifiers(){

        return array(

         ‘admin:goods/product:index‘=>‘demo_modifiers:product_edit‘

        );

    }

    //重载安装时的方法...

    //同样可重载的还有:

    //   uninstall -> 卸载

    //   enable -> 程序启动

    //   disable -> 程序关闭

    function install(){

        //别忘了调用父类的install

        return parent::install();

    }

 

}

 

    2、为了防止命名冲突,请使用自己包的名字作为类的前缀,文件plugins/app/demo/demo_event_handler.php,这里的是对应上面的app.demo.php定义的与系统的本身的方法对接,该文件的代码如下:

class demo_event_handler{

    //订单新建时本方法将被自动执行

    //此处event被赋值为 order:new

    function order_new($event_type,$order_data){

        ...

    }

//会员新建时本方法将被自动执行

    //此处event被赋值为 order:new

    function member_create($event_type,$member_data){

        ...

    }

//任何事件都将调用此函数

    function any($event_type,$event_data){

        ...

    }

}

 

    3、例如与前台购物车操作对接,我们可以定义一下文件来实现此功能,如文件plugins/app/demo/demo_ctl.php,代码如下:

require(‘app_page.php‘);

class demo_ctl extends app_page{

function cartidx(){

        //输出模板:软件包文件夹里的cart.html

        $this->system; //可以调用系统入口

        $this->db; //可以直接使用数据库

//载入包里的类...

        require(dirname(__FILE__).‘/demo_my_model_layer.php‘);

        $obj = new demo_my_model_layer;

$this->output(‘view/cart.html‘);

    }

 

}

 

    4、建立一个类来重定义购物车页面用关键字<{$_BASE_PATH_}>可以定位到插件文件夹的url,如我们建立一个模板文件plugins/app/demo/view/cart.html在文件里面我们就可以使用此关键词

例如输出 plugins/app/demo/images/cart.png 。

以上的代码只是稍微的阐述了下shopex的辅助功能包的一些小特性,如果用得好的话,就会感觉如鱼得水,希望这些代码对你有帮助。

 

【shopex】app开发机制

标签:font   out   目录   数据库表   事件   htm   control   流程   new   

原文地址:http://www.cnblogs.com/GaZeon/p/7625723.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!