加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP钩子与简单分发方式实例分析

发布时间:2021-03-06 12:51:16 所属栏目:PHP教程 来源:网络整理
导读:本篇章节讲解PHP钩子与简单分发方式。分享给大家供大家参考,具体如下: $fun($data); //后置公共操作 }}class a{ function b($data){ echo '我是方法b'; }}class c{ function d($data){ echo '我是方法d'; }}//钩子调用tool::main('a','b','222'); 在封装

本篇章节讲解PHP钩子与简单分发方式。分享给大家供大家参考,具体如下:

$fun($data); //后置公共操作 } } class a{ function b($data){ echo '我是方法b'; } } class c{ function d($data){ echo '我是方法d'; } } //钩子调用 tool::main('a','b','222');

在封装短信通道的时候本打算用钩子来实现的,

可以自动发送短信(多通道)email,push等消息。。。

后来发现业务需求并没有想象中那么复杂,开发就搁置了。。。。

T_T 于是就采用了一种简单的分发方式来实现

'xxxx','api_balance_query_url'=> 'xxxxx','api_account'=> 'xxxx','api_password'=> 'xxxxx',); private $alidayu_config = array(//通道2配置项 'api_key'=> 'xxxx','api_id'=> 'xxxxx','api_send_url'=> 'xxxxx',); public function __construct($type=1){ switch($type){ case self::LANCHUANG: $this->type = $type;break; case self::ALIDAYU: $this->type = $type;break; default: $this->type = false; } } //对外抛出的发送方法 public function sendSms($mobile,$msg){ switch($this->type){ case self::LANCHUANG: return $this->_sendCL($mobile,$msg); case self::ALIDAYU: return $this->_sendAL($mobile,$msg); default: return false; } } //通道1发送方法 private function _sendCL($mobile,$msg,$needstatus = 'false',$extno = ''){ $postArr = array ( 'account' => $this->chuanglan_config['api_account'],'pswd' => $this->chuanglan_config['api_password'],'msg' => $msg,'mobile' => $mobile,'needstatus' => $needstatus,'extno' => $extno ); $result = $this->_curlPost( $this->chuanglan_config['api_send_url'],$postArr); $result = $this->_execResult($result); return $result[1] == 0 ? true : $result[1]; } //通道2发送方法 private function _sendAL($mobile,$msg){ $postArr = array ( 'id' => $this->alidayu_config['api_id'],'key' => $this->alidayu_config['api_key'],); $result = $this->_curlPost( $this->alidayu_config['api_send_url'],$postArr); $result = $this->_execResult($result); return $result[1] == 0 ? true : $result[1]; } //-------------一些公共方法 /** * 处理返回值rn 分割 * */ private function _execResult($result){ $result=preg_split("/[,rn]/",$result); return $result; } /** * 处理返回值json * */ private function _jsonResult($result){ $result=json_decode($result,true); return $result; } /** * 通过CURL发送HTTP请求 * @param string $url //请求URL * @param array $postFields //请求参数 * @return mixed */ private function _curlPost($url,$postFields){ $postFields = http_build_query($postFields); $ch = curl_init (); curl_setopt ( $ch,CURLOPT_POST,1 ); curl_setopt ( $ch,CURLOPT_HEADER,0 ); curl_setopt ( $ch,CURLOPT_RETURNTRANSFER,CURLOPT_URL,$url ); curl_setopt ( $ch,CURLOPT_POSTFIELDS,$postFields ); $result = curl_exec ( $ch ); curl_close ( $ch ); return $result; } } $ob = new Ar_Sms(Ar_Sms::ALIDAYU);//通道1发送 $res = $ob->sendSms('xxxxx','xxxxxx'); var_dump($res); $ob = new Ar_Sms(Ar_Sms::LANCHUANG);//通道2发送 $res = $ob->sendSms('xxxxx','xxxxxx'); var_dump($res);

通过一个简单的分发实现多通道的自由切换,

由于只是简单的发送所以没有进一步的抽象~ 囧orz

钩子的实现方式,设想有点大,具体的实现还有带考究。。有时间我会研究研究的 这里就抛一个简单的demo吧 设想的是--》多途径 多方式 多通道支持 方便扩展

更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》及《》

希望本文所述对大家PHP程序设计有所帮助。

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读