跨模块访问

有时候在模块中可能需要调用其他模块来访问其他模块中的某个方法,比如显示网站在线人数,目前有多少会员,在每个页面可能都需要显示,以此来吸引访问者到网站注册会员.在每个页面显示相同内容的原因有时候与SEO有一定关系,如果需要优化的关键字在每个页面都有出现,这更利于百度搜索进行搜录.


  跨模块访问的具体方法有

   ①自动加载函数/方法(spl_autoload_register)框架中在Think.class.php(Lib/Core/Think.class.)中已经封装了自动加载方法

115927_OGTI_1788914.png

  实例化其他模块,调用模块方法;

class AdminAction extends Action{
    
    //后台管理员登陆
    public function login(){
       $module = new UserstestAction ;
       $module->numbers();
        $this->display();
    }

  ②利用函数来实现跨模块访问,不仅可以跨模块,而且可以跨项目访问.

   利用A函数(common.php中可以查看具体参数)跨模块访问:
$User = A('Userstext');//

  实例化当前项目的UserstextAction控制器.如果当前项目有分组,则:

$User = A('Admin/Userstext');

  可以跨项目来调用模块,但是必须与当前项目是同一级的项目,不然会出错

$User = A("otherpro://User");
//如果项目有分组
$User = A("otherpro://Admin/User");

  在tp3.1版本中,支持了控制器分层.

$User = A("Goods","family");

 :实例化lib/family/Goodsfamily.class.php  如下所示

144337_Gydj_1788914.png

分层控制器仅用于内部调用,URL访问的控制器还是Action层,但是可以配置
DEFAULT_C_LAYER修改默认控制器层名称(该参数默认值为Action)。

    利用R函数实现跨模块访问

R($url,$parms,$layer):

$url参数说明 : [项目://][分组/]模块/操作

  R("Admin/Userstest/numbers");

  R("fetian://Admin/Userstest/numbers");


总结:其实R函数是对A函数的封装.

在跨项目调用的情况下,如果你的操作方法 有针对当前控制器的特殊变量操作,会有一些未知的问题,所以,一般来说,官方建议需要公共调用的控制器层单独开发,不要有太多的依赖关系。                  

转载于:https://my.oschina.net/osmyblog/blog/294125

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值