最近入职了新公司,需要对一个PHP项目进行二次开发,是基于ThinkPHP框架的ThinkCMF项目。
对于一个之前做java没接触过php的人来说基础语法肯定很快就能上手的,主要是对于框架比较陌生,在https://www.kancloud.cn/thinkcmf/doc/266508提供的手册中学习了一下框架架构就开始开发。因为需要用到短信验证功能,一开始有点懵逼,网上也很少相关资料,心理想着该不会要自己写一个接口吧(有点沮丧,毕竟让我用java写也不一定能写出来)。最后在相关平台上加到了这个框架开发者的群(避免打广告之嫌就不发了),在里面潜水了一天再加提问了半天算是基本上弄清了这个框架原来是由国内大神开发后,还提供了相关项目代码,很多人都是需要做项目项目就直接下载项目后进行二次开发。这个框架有很多开发者些一些插件给开发者使用,部分需要购买,我花了五块钱买了个某某短信的接口后发现公司领导买的短信服务不一样,让我根据这个插件的源码进行修改,做一个自己用的插件,一开始以为很难,后来发现其实还好,弄清原理后十几分钟就能搞定。
我看好几个插件的源码都是分为三个部分,分别主目录中的conf.php负责表单,
array (// 在后台插件配置表单中的键名 ,会是config[text]
'title' => '帐号', // 表单的label标题
'type' => 'text',// 表单的类型:text,password,textarea,checkbox,radio,select等
'value' => '',// 表单的默认值
'tip' => '' //表单的帮助提示
),
'user_pwd' => array (// 在后台插件配置表单中的键名 ,会是config[text]
'title' => '密码', // 表单的label标题
'type' => 'password',// 表单的类型:text,password,textarea,checkbox,radio,select等
'value' => '',// 表单的默认值
'tip' => '' //表单的帮助提示
),
'expire_minute' => array (// 在后台插件配置表单中的键名 ,会是config[text]
'title' => '有效期', // 表单的label标题
'type' => 'text',// 表单的类型:text,password,textarea,checkbox,radio,select等
'value' => '30',// 表单的默认值
'tip' => '短信验证码过期时间,单位分钟' //表单的帮助提示
),
);
另外一个.php文件负责逻辑判断跟参数获取,参数获取到就调用自己继承的父类(子目录model文件夹中的另一个.php文件),在子目录中文件写具体方法就能够完成一个插件的编写。附代码:
namespace plugins\send_mobile_sms\model;
use think\Model;
class PluginMobileCodeSMSModel extends Model
{
function SendSMS($user_name, $user_pwd, $mobile, $Content){
$url="http://api.sms.cn/sms/?ac=send";
$id = $user_name;//帐号
$pwd = $user_pwd;//密码
$content = urlencode($Content);//发送短信内容
$rdata = 'action=send&account='.$user_name.'&password='.$user_pwd.'&mobile='.$mobile.'&content='.$content.'&sendTime=&extno=';
$ch = curl_init();//初始化
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $rdata);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
}
接下来只需要对自己写完代码的文件夹打包放进到public\plugins 文件,接着到后台管理界面中的“插件管理”对插件进行设置,办好相关短信业务输入相关信息就能实现短信验证了。