服务services的使用

一、默认环境下使用service

1、找到app\config\services.php,在里面添加方法函数。

<?php

namespace Config;

use CodeIgniter\Config\BaseService;

class Services extends BaseService
{

    function hehe()
    {
        echo "hehe111";
    }
}

 

2、在控制器里通过services方法调用服务方法

function hehe()
    {
        service('hehe');  //用方法名作参数
    }

 

二、服务发现

要求:

  • 其命名空间必须在 app/Config/Autoload.php 中定义

  • 在命名空间内,该文件必须位于 Config/Services.php

  • 它必须扩展 CodeIgniter\Config\BaseService

1、先创建自己需要的服务模块,app\Blog\Config\Services.php

 2、在autoload.php文件中添加命名空间。

3、修改app\Blog\Config\Services.php,命名空间设置成和autoload.php里面一样

<?php

namespace Blogc\Config;    //Services.php要带Config,autoload.php设置里面不能带Config

use CodeIgniter\Config\BaseService;


class Services extends BaseService
{  
    public static function myfun()
    {
        echo "我的方法211aaa13";
    }
}

4、在控制器里面便可以用service直接调用。

<?php

namespace App\Controllers;

class Home extends BaseController
{
    public function index()
    {
        return view('welcome_message');
    }

    function hehe()
    {
        service('myfun');

        // \Blogc\Config\Services::myfun();
    }
}

 

服务模块的位置放在任何地方都行,只要在autoload.php中设置正确的命名空间就好,如果有相同的方法名称,则会调用最先找到的(先后顺序按照命名空间设置顺序,从上到下)

public $psr4 = [
        APP_NAMESPACE => APPPATH, // For custom app namespace
        'Config'      => APPPATH . 'Config',
        'Blog'      => APPPATH . 'Blog',          //app目录下的Blog
        'Blog'      => ROOTPATH . 'Blog',          //根目录下的Blog
    ];

 

posted @ 2024-08-02 15:21  哆啦阿梦  阅读(1)  评论(0编辑  收藏  举报