toplan/laravel-sms

能否添加对Lumen的支持?

kvzn opened this issue · 3 comments

kvzn commented

现在使用Lumen搭建Micro Services非常多,希望能支持Lumen。

顶一下,现在都是微服务啦

@kevinzheng

其实只使用其中的发短信,验证短信功能的话,完全能在lumen中使用

  1. 注册服务提供器,在bootstrap/app.php,去弄
  2. 使用aliases
// 代替laravel aliases
 $app->withFacades(true, [
     Toplan\PhpSms\Facades\Sms::class => 'PhpSms',
     Toplan\Sms\Facades\SmsManager::class => 'SmsManager',
 ]);
  1. composer 设置
"psr-4": {
            "App\\": "app/",
            "Illuminate\\Foundation\\": "app/illuminate/Foundation"
        },

然后将 laravel vender包中的Foundation/Bus 文件夹拷贝到上面那个Foundation文件夹内,这样就能保证DispatchesJobs不报错,但是不保证能用
4. laravel-sms.php文件中

 'route' => [
        'enable'     => false, // 只能是false,然后自己去写路由,laravel和lumen路由很不同,特别是没有一些中间件,所以没办法
        'prefix'     => 'laravel-sms',
        'middleware' => ['api'], // 改成这个,不用session,不然报错
    ],

  1. 自己补充两个全局辅助函数,不懂怎么补的话建议多看官方文档,熟悉lumen和laravel之后再看此教程
if (! function_exists('config_path')) {
    /**
     * Get the configuration path.
     *
     * @param  string  $path
     * @return string
     */
    function config_path($path = '')
    {
        return app()->basePath().'/config'.($path ? DIRECTORY_SEPARATOR.$path : $path);
    }
}


if (!function_exists('dump')) {
    /**
     * @author Nicolas Grekas <p@tchwork.com>
     */
    function dump($var)
    {
        foreach (func_get_args() as $var) {
            echo "<pre>";var_export($var);echo "<pre>";
        }
    }
}
  1. 路由, 没啥说的
        $router->get('sms-info', ['uses' => '\\Toplan\\Sms\\SmsController@getInfo']);
        $router->post('verify-code', ['uses' => '\\Toplan\\Sms\\SmsController@postSendCode']);
        $router->post('voice-verify', ['uses' => '\\Toplan\\Sms\\SmsController@postVoiceVerify']);

  1. 使用起来可能有点麻烦
    前端传参的时候必须带上:mobile_rule字段,mobile_rule值根据自己需要设置,看laravel-sms.php文件,有说明

  2. 差不多了,有其它报错的情况请自己解决

用同作者的phpsms应该就好了吧?