PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通

QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > CMS教程 > iCMS

应用基础知识-应用前台开发_二次开发

管理员 2024-12-15
iCMS
5

应用前台开发

应用所有前台操作代码都写在 应用唯一标识.app.php
请求链接为:应用唯一标识.php?do=执行的操作&其它参数
例:
文章应用 article.app.php
链接:article.php?id=1
请求方法:do_iCMS

<?phpclass 应用唯一标识App{    //允许用URL访问的方法,仅限于do_,API_,ACTION_开头类的方法,默认需要有一个'iCMS'    //无需填写do_,API_,ACTION_开头    public $methods = array('iCMS','允许访问方法名','执行的操作');    public function __construct() {}    /**     * [无do请求参数下,默认访问这个方法]     */    public function do_iCMS(){    }    /**     * [do类方法主要用于处理来自 (应用唯一标识.php?do=执行的操作) 的GET请求]     */    public function do_执行的操作(){    /*可正常使用$_GET,$_POST之类PHP原生代码接收提交的数据*/        $id = (int)$_GET['id'];        $name = iSecurity::escapeStr($_POST['name']);    }    /**     * [API类方法主要用于处理来自api.php?app=应用唯一标识&do=执行的操作 的GET请求]     */    public function API_执行的操作(){    /*可正常使用$_GET,$_POST之类PHP原生代码接收提交的数据*/        $id = (int)$_GET['id'];        $name = iSecurity::escapeStr($_POST['name']);    }    /**     * [ACTION类方法主要用于POST请求]     */    public function ACTION_执行的操作(){    /*可正常使用$_POST之类PHP原生代码接收提交的数据*/        $id = (int)$_POST['id'];        $name = iSecurity::escapeStr($_POST['name']);    }}?>

注:本来应以文章应用为示例,但是发现文章应用已经更新为统一标准应用模式,使用继承appsApp的方法,在这里不适合用来做示例

以用户应用为例 user.app.php
用户登陆页,请求链接为:user.php?do=login,对应方法do_login
但是用户应用采用的是以api.php为链接的模式
所以请求链接为:api.php?app=user&do=login,对应方法API_login

<?phpclass userApp{    public $methods = array('iCMS', 'login');    public $config = array();    public function __construct() {        //获取用户应用配置        $this->config    = iCMS::$config['user'];    }    /**     * [用户登陆]     */    public function do_login(){        /*......*/        /*用户访问登陆页面执行的相关代码*/        /*......*/        /*读取模板*/        iView::display('iCMS://user/login.htm');    }    /**     * [功能作用与do_login是一致的,一般出于兼容做法,可直接在这个方法里调用do_login,也可以另外编不一样的代码]     */    public function API_login() {        $this->do_login();    }    /**     * [在登陆页面用户提交登陆操作执行的方法]     */    public function ACTION_login() {        /*用户执行登陆时的相关代码*/        /*可根据页面使用的提交方法,返回相关类形数据*/        /*如:AJAX,可返回json*/        if(登陆成功){            iUI::code(1, 0, $this->forward, 'json');        }else{            iUI::code(0, 'user:login:error', 'uname', 'json');        }    }    /**     * [其它方法]     * 遵循PHP类方法编写规则就行     */    public function openid() {    }}?>

那么问题来了,我想要在用户应用二次开发,要怎么把代码,请求链接添加到应用呢?

二次开发

新增代码的两种方式:

1.直接在user.app.php添加代码

不推荐使用此方式,因为如果官方更新用户应用的相关代码会把您添加代码覆盖掉,不过放心升级时系统会自动对代码进行备份.更新完成后自行在对比添加下就可以了

<?phpclass userApp{    //这里一定要追加,不然就无法访问    public $methods = array('ooxx');    /**     * [二次开发]     */    public function do_ooxx() {        /*代码*/    }    /**     * [二次开发]     */    public function API_ooxx() {        /*代码*/    }?>

因为访问链接不一样,可以实现不一样功能,自行决定

2.使用内部方法重写方式

所有应用支持将xxx.app.php内部方法重写
api请求API_xxx.app.php

<?php//继承 articleAppclass API_articleApp extends articleApp {    public function __construct() {        parent::__construct();        //追加允许访问方法        array_push($this->methods, "aaaa");    }    //对API_hits方法二次开发    public function API_hits($id = null) {        var_dump($_GET);    }    //新增功能    public function API_aaaa($id = null) {        var_dump($_GET);    }}?>

action请求ACTION_xxx.app.php,

<?php//继承 articleAppclass ACTION_articleApp extends articleApp {    //对ACTION_vote方法二次开发    public function ACTION_vote() {        var_dump($_POST);    }}?>

其它请求DO_xxx.app.php

<?php//继承 articleAppclass DO_articleApp extends articleApp {    //对article方法二次开发    public function article(){        //...code    }}?>

等三种方式重写,二次开发将不在受官方更新影响

配置前端路由

代码是解决了,但是我现在要怎么访问,链接是什么,怎么在模板里调用等等
开发前我们在基本介绍里说过所有应用都要在后台应用管理添加.

具体请见 为应用配置前端路由

看完后我们就刚才API_articleApp添加的代码,如何配置路由的,其它的类同,
ACTION_articleApp不用配置一般提交到api.php记得带上app数据就可以了

示例新功能aaaa

{    "article:aaaa": [        "/article/aaaa",        "api.php?app=article&do=aaaa"//因为方法是城API类型        //"article.php?do=aaaa" //如果方法是do_aaaa 使用这个    ]}

PHP中调用方式

<?phpiURL::router('article:aaaa');?>

模板中调用方式

<!--{iCMS:router url='article:aaaa'}-->

希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。

相关推荐

扫码关注

qrcode

QQ交谈

回顶部