toplan / laravel-sms

:iphone::heavy_check_mark:A phone number validation solution based on laravel
MIT License
838 stars 174 forks source link

希望可以把table laravel-sms,可以拉到設定檔設定 #67

Closed aloha1003 closed 8 years ago

aloha1003 commented 8 years ago

我看你的源代碼操作table是用 DB::table('laravel_sms') ,希望可以改成ORM的方式操作 並將 tableName、connect 拉到設定檔設定

toplan commented 8 years ago

@aloha1003 你好,个人认为在配置文件中设置数据库表名称的意义不大,我认为这样做虽然可以改下表名称,但不能解决使用者自己修改表结构的情况,不论是DB还是ORM都无法应对表结构的自定义。如果用户需要自定义数据库表名称/表结构,可以通过beforeSendafterSend钩子来实现怎么存储数据到哪个表里面,这样一来可以解开与数据库的耦合。当然,希望能听到你的想法,感谢 😄

aloha1003 commented 8 years ago

那請問一下,我要在什麼地方去覆寫你說的beforeSend和afterSend 這兩個方法呢 不太明白,方便給個sample code嗎,謝謝

toplan commented 8 years ago

ok,你可以看下在SmsManagerServiceProvider.php中的默认处理方式,beforeSendafterSend两个方法是由PhpSms提供的。

toplan commented 8 years ago

只需要在发送短信前这样做:

PhpSms::beforeSend(function ($task, $prev, $index, $handlers) {
    //该匿名函数在短信发送之前会执行,可以在这里将短信数据先保存到数据库
}, true)//后面加上true可以覆盖在SmsManagerServiceProiver中的默认处理方式
PhpSms::afterSend(function ($task, $result, $prev, $index, $handlers) {
   //该函数在短信发送之后执行,可以在这里修改数据库中数据状态
}, true)

关于beforeSendafterSend的文档可以在这里查看