>백엔드 개발 >PHP 튜토리얼 >Typecho 플러그인 작성 튜토리얼(6): 인터페이스_php 인스턴스 호출

Typecho 플러그인 작성 튜토리얼(6): 인터페이스_php 인스턴스 호출

WBOY
WBOY원래의
2016-05-16 20:14:411055검색

이 기사에서는 플러그인 클래스에 send_post라는 새 메소드를 정의합니다. 이 메소드에서는 시스템 구성을 통해 인터페이스 호출 주소를 얻습니다.

Baidu의 예제에서는 php의 CURL을 사용하여 더 고급 사용법을 알아보려면 PHP_cURL 초기화 및 실행 방법

을 참조하세요.

바이두 웹마스터가 제공한 코드를 조합해 보겠습니다.

/**
   * 发送数据
   * @param $url 准备发送的url
   * @param $options 系统配置
   */
  public static function send_post($url, $options){
    //获取API
    $api = $options->plugin('BaiduSubmitTest')->api;

    //准备数据
    if( is_array($url) ){
      $urls = $url;
    }else{
      $urls = array($url);
    }

    $ch = curl_init();
    $options = array(
      CURLOPT_URL => $api,
      CURLOPT_POST => true,
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_POSTFIELDS => implode("\n", $urls),
      CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
    );
    curl_setopt_array($ch, $options);
    $result = curl_exec($ch);

    //记录日志
    file_put_contents('/tmp/send_log', date('H:i:s') . $result . "\n");
  }

아직 로깅 시스템을 구축하지 않았기 때문에 로그를 파일에 먼저 쓰고 효과를 먼저 보도록 하겠습니다!

반환 값:

코드 복사 코드는 다음과 같습니다.

{"남아 있음":48,"성공":1}

좋아요! 문제 없는 것 같아요! 그러나 안전을 유지하기 위해 typecho와 함께 제공되는 http 클래스를 사용하여 이 메서드를 재정의했습니다.
public static function send_post($url, $options){
    //获取API
    $api = $options->plugin('BaiduSubmitTest')->api;

    //准备数据
    if( is_array($url) ){
      $urls = $url;
    }else{
      $urls = array($url);
    }

    //为了保证成功调用,老高先做了判断
    if (false == Typecho_Http_Client::get()) {
      throw new Typecho_Plugin_Exception(_t('对不起, 您的主机不支持 php-curl 扩展而且没有打开 allow_url_fopen 功能, 无法正常使用此功能'));
    }

    //发送请求
    $http = Typecho_Http_Client::get();
    $http->setData(implode("\n", $urls));
    $http->setHeader('Content-Type','text/plain');
    $result = $http->send($api);

    //记录日志
    file_put_contents('/tmp/send_log', date('H:i:s') . $result . "\n");
  }
}

이제 플러그인을 기본적으로 실행할 수 있지만 구조를 더욱 최적화할 수 있습니다!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.