成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導(dǎo)航首頁(yè) ? 技術(shù)教程 ? PHP鉤子與簡(jiǎn)單分發(fā)方式實(shí)例分析
全站頭部文字 我要出現(xiàn)在這里
PHP鉤子與簡(jiǎn)單分發(fā)方式實(shí)例分析 724 2023-12-08   

本文實(shí)例講述了PHP鉤子與簡(jiǎn)單分發(fā)方式。分享給大家供大家參考,具體如下:

//簡(jiǎn)單的鉤子實(shí)現(xiàn)例子
class tool{
  public static function main($class, $fun, $data = ''){
    //前置公共操作
    $con = new $class;
    $con->$fun($data);
    //后置公共操作
  }
}
class a{
  function b($data){
    echo '我是方法b';
  }
}
class c{
  function d($data){
    echo '我是方法d';
  }
}
//鉤子調(diào)用
tool::main('a','b','222');

在封裝短信通道的時(shí)候本打算用鉤子來(lái)實(shí)現(xiàn)的,

可以自動(dòng)發(fā)送短信(多通道)email,push等消息。。。

后來(lái)發(fā)現(xiàn)業(yè)務(wù)需求并沒(méi)有想象中那么復(fù)雜,開(kāi)發(fā)就擱置了。。。。

T_T 于是就采用了一種簡(jiǎn)單的分發(fā)方式來(lái)實(shí)現(xiàn)

class Ar_Sms{
  const LANCHUANG = 1;//通道1
  const ALIDAYU = 2; //通道2
  private $type;
  private $chuanglan_config = array(//通道1配置項(xiàng)
    'api_send_url'=>'xxxx',
    'api_balance_query_url'=> 'xxxxx',
    'api_account'=> 'xxxx',
    'api_password'=> 'xxxxx',
  );
  private $alidayu_config = array(//通道2配置項(xiàng)
    '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;
    }
  }
  //對(duì)外拋出的發(fā)送方法
  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發(fā)送方法
  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發(fā)送方法
  private function _sendAL($mobile, $msg){
    $postArr = array (
      'id' => $this->alidayu_config['api_id'],
      'key' => $this->alidayu_config['api_key'],
      'msg' => $msg,
      'mobile' => $mobile,
    );
    $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;
  }
  /**
   * 通過(guò)CURL發(fā)送HTTP請(qǐng)求
   * @param string $url //請(qǐng)求URL
   * @param array $postFields //請(qǐng)求參數(shù)
   * @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, 1 );
    curl_setopt ( $ch, 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發(fā)送
$res = $ob->sendSms('xxxxx','xxxxxx');
var_dump($res);
$ob = new Ar_Sms(Ar_Sms::LANCHUANG);//通道2發(fā)送
$res = $ob->sendSms('xxxxx','xxxxxx');
var_dump($res);

通過(guò)一個(gè)簡(jiǎn)單的分發(fā)實(shí)現(xiàn)多通道的自由切換,

由于只是簡(jiǎn)單的發(fā)送所以沒(méi)有進(jìn)一步的抽象~ ??rz

鉤子的實(shí)現(xiàn)方式,設(shè)想有點(diǎn)大,具體的實(shí)現(xiàn)還有帶考究。。有時(shí)間我會(huì)研究研究的 這里就拋一個(gè)簡(jiǎn)單的demo吧 設(shè)想的是--》多途徑 多方式 多通道支持 方便擴(kuò)展

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《PHP基本語(yǔ)法入門(mén)教程》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。


主站蜘蛛池模板: 爱奈| 格伦鲍威尔| 通天长老电影在线观看完整版| 日韩欧美电影网| 海豹w| 梦想建筑师泰国百合剧| 果戈里起点女的被劫走是多少分钟| 教育向美而生读书心得体会| 美女被吃| 兔子先生在线观看| 鬼迷心窍1994| 10000个常用人名| 牧笛| 川岛芳子电影| cgtn news| 视觉暂留现象原理| 天国遥遥| 凌靖| 林子祥电影| 免费看污视频| 东北一家人第一部| 香蜜演员表 全部演员表| 二年级aab词语| 敖丙手机壁纸| 金珠和陈诗雅主演的韩剧| 鲁迅电影| 1992年台湾叫冬梅的电影| 漂亮主妇| 变形金刚1普通话版| 郭馨钰| 金珊| 电视剧零下三十八度手机免费观看| 童女之舞| 小兰花现代诗| 玫瑰的故事万茜演的什么角色| 谈判专家 电影| 奶粉罐回收多少钱一个| 宋小莹| 速度与激情:特别行动 电影| 拼音表| spec结|

!!!站長(zhǎng)長(zhǎng)期在線(xiàn)接!!!

網(wǎng)站、小程序:定制開(kāi)發(fā)/二次開(kāi)發(fā)/仿制開(kāi)發(fā)等

各種疑難雜癥解決/定制接口/定制采集等

站長(zhǎng)微信:lxwl520520

站長(zhǎng)QQ:1737366103