如何使用织梦小助手

很多的时候,织梦是不能满足我们要求的,比如我们要增加个织梦没有功能,例如,我们要调用分类信息三级联动里面的内容,以前我们要写个函数放在/include/extend.func.php里面,然后,在我们的首页,或其它而面引入comm.inc.php文件,即可调用这个函数,功能
  很多的时候,织梦是不能满足我们要求的,比如我们要增加个织梦没有功能,例如,我们要调用分类信息三级联动里面的内容,以前我们要写个函数放在/include/extend.func.php里面,然后,在我们的首页,或其它而面引入comm.inc.php文件,即可调用这个函数,功能就这样实现了,只要会php编程什么功能都可以在织梦的基础上扩展。

  现在不仅仅有这个extend.func.php文件了,织梦帮我们提供了一个叫小助手的功能,从字面意思理解,小助手就是帮助我们的人助手,没有错,在include/helpers里面有很多的小助手文件,只要我们的以后扩展功能直接在这里建立一个文件命名为:起的名字.helper.php,然后再在要调用的文件里用helper('起的名字')进行初始化,即可调用起的名字.helper.php这个文件里面的功能了。

一、织梦小助手的应用。

  举例说明:计算二个数的值。

  定义php文件名:sum.helper.php,然后在这个文件里写上如下计算二个数的代码。

<?php

  $a=10;
  $b=33;

  function sum($a,$b){
  return $a+$b;
}

?>

  如果我们要在某个文件例如文件test.php里调用这个功能,我们只需要在这个test.php文件里,用helper('sum')进行初始化一下,即可调用。

  test.php文件内容如下:

require_once(dirname(__FILE__)."/include/common.inc.php");
helper('sum');
echo sum(32,34);

  输入结果是:66。请注意,无论是用织梦小助手,还是用extend.func.php进行二次开发,都要引入文件common.inc.php文件。织梦小助手的应用就是这样简单。

  对比一下用织梦小助手和extend.func.php进行二次开发的好处。

  如果我们在extend.func.php这个里面进行功能二次开发的话,如果是小的功能还好,如果是代码特别多,那么,用这个就有缺点了,想一下如果这个文件太多,不仅对于程序员来说感觉乱,在调用功能的时候不容易找,而且这样也降低了执行效率,本来一个程序员写好的功能,结果另一个程序员来调用那么,找起来就非常不便,浪费时间。

  而用小助手,而大大提高了效率,不管有多少个人来写,不管什么样的谁来调用,只要找到对应的文件名,就可以调用,而且,每个功能对应一个文件,这样也不至于弄错,而且调用也非常方便,只需要初始化一下小助手即可。

二、小助手的实现代码分析。

  织梦小助手既然如此好,我们要研究一下,这个小助手是如何实现的?以后,我们在自己开发中也可以把这种思想用到我们的开发中,提高效率。我们来分析一下小助手是如何实现这样的功能的。

  首页要在入口文件common.inc.php里面进行初始化(这里的初始化与上面的提到的helper('sum')初始化不一样,这里指的是引入helper.inc.php并根据里面的数组创建程序文件)织梦小助手,若文件helper.inc.php存在,则把里面的数组$cfg_helper_autoload,通过helper($cfg_helper_autoload)初始化(这里跟上面提到的初始化一样),若没有这个文件,而用默认的。

  代码如下:
初始化织梦小助手
  小助手是如何初始化的?这是重点。小助手正是通过文件common.fuc.php里面下面这段代码,实现了我们上面举的例子功能。
helper程序分析

  我们分析一下上面的代码,

  第一句代码$_helpers = array();这句用来设置一种状态,在php里面经常用到,常常是true和fault就像电源开关似的,当程序中某个功能执行成功就设置成true,当某个功能没有执行或某个文件不存在等都可设置成fault这样就可以在true或fault时执行不同的功能了,程序中经常用到非常方便。

  接下来就开始判断,我们传的$helpers是不是数组,例如我们一次开发了多个功能,建立了多个类似: 名字.helper.php的多个文件,在调用初始化helper(数组)时,就需要传数组,程序会判断如果传的是数据,那么进行递归调用,当第一个文件假设名为abc.helper.php,当foreach完第一个后,进入到递归,再判断一下$dede的值abc是不是数组不是则向下执行代码。

     if (isset($_helpers[$helpers]))
    {
        continue;
    }

  这段代码判断一下这个文件abc.helper.php,是不是存在并引入了?若已经有了了也引入了,那么,回到foreach里面继续遍历,否则接着向下执行,判断一下abc.helper.php文件是不是存在,若存在,则引入abc.helper.php文件。并把状态$_helpers[$helpers]设置为真,表明这个文件$_helpers[$helpers]已经引入了,最后一句判断$_helpers[$helpers]若没有设置,则打印出文件abc.helper.php无法装载。

  请注意:此时程序并没有完成,只是把数组$helpers里面进行了第一个递归,接着继续foreach,接下来程序执行的动作就跟上面的分析的一样了。这样通过一个递归,就可以把数组里面的代表文件名的键全部循环出来,并把对应的文件明引入到要调用的文件里了。

  当我们在要调用的文件里面用helper($helper)初始化后,就开始运行上面的代码了。作为一个程序员,既要知道是什么,还要知道为什么,本篇内容由织梦基地作的分析,抛砖引玉,共同进步。
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

dedecms织梦无需登录注册可下单购买的修改,首先找到/plus/carbuaction.php文件,找到如下代码: //确认用户登录信息if($cfg_ml-IsLogin()){ $userid = $cfg_ml-M_ID;}else{ $username = trim($username); $password = trim($password); if(empty($username)
用过织梦dedecms的人都知道,织梦会员系统相当强大,跟论坛程序差不多,对于使用会员系统的人来说,织梦系统足够用的了,但是,有时候,织梦系统很多的地方又不是我们所希望,或都说,有的地方不适合我们使用,这时候就要对织梦会员系统进行二次开发,所以,
我们在做 织梦模板 开发时,有时需要在artlist 和list标签中调用出图集中的图片,同时可以自定调用几张图片。跟版网整理了个一个这样功能的自定义函数。调用后效果如下: dedecms织梦artlist和list标签调用图集图片实现方法 函数代码 请将代码加入到 /includ
大家都知道,Discuz程序在发文章时有个【隐藏】功能,可以限制这个隐藏内容供某些级别的会员查看。 在织梦模板中,做些改动,也是可以实现的。例如:电话号码,下载地址等等。 前提是织梦开启会员功能,已经有了自定义字段。 一、建立文件 ajax_loginsta_c.p
json数据格式可以方便不同站点之间进行数据调用引用,当然我们的DEDECMS也可以实现全站数据生成JSON供其他站点调用,代码很简单,主要用到include/json.class.php。 织梦本身是自带json标签的,调用方法: {dede:json url=http://yoursite/json.php cache=300
大家在使用织梦的时候,用到会员中心可能涉及到多二级域名同步登录退出的问题,涉及到跨域,那么这个问题该如何解决呢?在一个技术大牛博客看到过此教程,特此转发分享给大家,解决大家问题。 首先打开 \include\dedeajax2.js 找到 DedeXHTTP = new XMLHttpR