服务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
];