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

前端之家收集整理的这篇文章主要介绍了PHP钩子与简单分发方式实例分析前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本文实例讲述了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]; } //-------------一些公共方法 /** * 处理返回值\r\n 分割 * */ private function _execResult($result){ $result=preg_split("/[,\r\n]/",$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程序设计有所帮助。

原文链接:https://www.f2er.com/php/16839.html

猜你在找的PHP相关文章