国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Rumah php教程 PHP源碼 接口調(diào)用模型

接口調(diào)用模型

Jul 06, 2016 pm 01:28 PM

跳至 [1] [全屏預(yù)覽]
<?php
/**
 * 項目api接口類文件
 */

class ApiModel extends Cola_Model
{
    /*
     * 表名
     * @var Cola_Model|null
     */
    protected $_table = '';

    /**
     * 是否開啟文件緩存[全局]
     *
     * @var bool
     */
    protected $_fileCache = false;

    /**
     *  baseUrl
     *
     * @var string
     */
    protected $baseUrl = '';

    //保留
    protected $appKey = '';

    protected $loginAppId = '';
    protected $accessToken = '';

    /**
     * 初始化
     *
     * @param string $baseUrl 請求接口地址
     */
    public function __construct($baseUrl = '')
    {
        if (!empty($baseUrl)) {
            $this->baseUrl = $baseUrl;
        } else {
            $this->baseUrl = Cola::config('_bigDataApiURL');
        }
        $u2Config = Cola::config('_OAuthU2Config');//從配置文件中獲取驗證信息
        $this->loginAppId = $u2Config['AppId'];//獲取登錄用戶的信息
        $this->accessToken = 'ef4e3a2b-ae21-4cad-ada8-86ec46a8a83g';//獲取登錄用戶信息
    }

    /**
     * 設(shè)置url
     *
     * @param string $url url地址
     */
    public function setBaseUrl($url)
    {
        $this->baseUrl = $url;
    }

    /**
     *  設(shè)置AccessToken
     *
     * @param void
     */
    public function setAccessToken($token)
    {
        $this->accessToken = $token;
    }

    /**
     * 開啟緩存
     *
     * @param bool $bool
     */
    public function openCache($bool = true)
    {
        $this->_fileCache = $bool;
    }

    /**
     * 獲取數(shù)據(jù)
     *
     * @param      $method 方法名
     * @param array $params 參數(shù)
     * @param int $isPost 0 GET,1 POST請求
     * @param bool $cache 緩存
     *
     * @return mixed
     */
    public function getData($method, $params = null, $isPost = 0, $cache = false)
    {
        if (!is_null($isPost)) {
            $params['accessToken'] = $this->accessToken;
            $params['appId'] = $this->loginAppId;
        }
        $url = $this->_getUrl($method, $params, $isPost);
        if (true == $cache || true == $this->_fileCache) {
            return $this->_getCache($url, $params, $isPost);
        }

        return $this->_curlRequest($url, $params, $isPost);
    }

    /**
     * 刪除緩存
     *
     * @param      $method 方法名
     * @param null $params 參數(shù)
     * @param int  $isPost 0 GET,1 POST請求
     *
     * @return bool
     */
    public function deleteCache($method, $params = null, $isPost = 0)
    {
        $url = $this->_getUrl($method, $params, $isPost);

        $key = $this->_cacheKey($url, $params, $isPost);

        $file = Cola_Com_Cache::factory(Cola::config('_fileCache'));

        return $file->delete($key);
    }

    /**
     * 獲取緩存key文件名
     *
     * @param      $method
     * @param null $params
     * @param int  $isPost
     *
     * @return mixed
     */
    public function getCacheFile($method, $params = null, $isPost = 0)
    {
        $url = $this->_getUrl($method, $params, $isPost);

        $file = Cola_Com_Cache::factory(Cola::config('_fileCache'));

        $key = $this->_cacheKey($url, $params, $isPost);

        return $file->getFile($key);
    }

    /**
     * 請求接口URL
     *
     * @param      $method
     * @param null $params
     * @param int  $isPost
     *
     * @return string
     */
    public function getUrl($method, $params = null, $isPost = 0)
    {
        if (!is_null($isPost)) {
            $params['accessToken'] = $this->accessToken;
            $params['appId'] = $this->loginAppId;
        }
        return $this->_getUrl($method, $params, $isPost);
    }

    /**
     * 獲取拼接后的請求地址【緩存的key】
     *
     * @param $method 方法名
     * @param $params 參數(shù)
     * @param $isPost 0 GET,1 POST請求
     *
     * @return string
     */
    private function _getUrl($method, $params, $isPost)
    {
        $url = $this->baseUrl . $method;
        if ($isPost == 0) {
            if (is_array($params) && !empty($params)) {
                strpos($url, '?') === false ? $tmpParams = "?" : $tmpParams = "&";
                foreach ($params as $key => $value) {
                    $tmpParams .= $key . "=" . urlencode($value) . "&";
                }

                $url .= rtrim($tmpParams, '&');
            }
        }
        return $url;
    }

    /**
     * 獲取緩存數(shù)據(jù)
     *
     * @param string $url    url
     * @param array  $params 參數(shù)
     * @param int    $isPost 0 GET,1 POST請求
     *
     * @return mixed
     */
    private function _getCache($url, $params, $isPost)
    {
        $file = Cola_Com_Cache::factory(Cola::config('_fileCache'));

        //緩存的key
        $sKey = $this->_cacheKey($url, $params, $isPost);
        $res = $file->get($sKey);
        if (!$res) {
            $res = $this->_curlRequest($url, $params, $isPost);
            if (false !== $res) {
                $file->set($sKey, $res);
            }
        }

        return $res;
    }

    /**
     * 設(shè)置緩存key
     *
     * @param $url
     * @param $params
     * @param $isPost
     *
     * @return string
     */
    private function _cacheKey($url, $params, $isPost)
    {
        return $url . @json_encode($params) . $isPost;
    }

    /**
     * json轉(zhuǎn)換為數(shù)組
     *
     * @param string $string
     *
     * @return mixed
     */
    private function _json2array($string)
    {
        if (@$json = @json_decode($string, true)) {
            return $json;
        } else {
            return $string;
        }
    }

    /**
     * curl 請求
     *
     * @param string $url    請求地址
     * @param array  $params 參數(shù)【?。H當(dāng)POST時有用】
     * @param int    $isPost 0 GET,1 POST請求
     *
     * @return mixed
     */
    private function _curlRequest($url, $params = array(), $isPost = 0)
    {
        header("Content-type: text/html; charset=utf-8");
        set_time_limit(0);
        // echo $url ; echo "<br>";
        $curl = curl_init($url);
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
        curl_setopt ($curl ,  CURLOPT_TIMEOUT ,  0 );
        curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36SE 2.X MetaSr 1.0');
        if ($isPost == 1) {
            curl_setopt($curl, CURLOPT_POST, true);
             
            curl_setopt($curl, CURLOPT_POSTFIELDS, $params);//所需傳的數(shù)組用http_bulid_query()函數(shù)處理一下,就ok了
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        }
        $result = curl_exec($curl);
        $result = $this->_json2array($result);
        return $this->_checkRequestStatus($result, $url, $params);
    }


    /**
     * 檢查請求狀態(tài)
     *
     * 參考地址:http://scmgit.staff.xdf.cn/bigdata/mdm/wikis/error_code
     *
     * @param $result
     * @param $url
     * @param $params
     *
     * @return bool
     */
    private function _checkRequestStatus($result, $url, $params)
    {
        //錯誤驗證
        if (empty($result) || in_array(@$result['status'], array(400, 404, 500))) {

            //寫入日志
            $logFile = WEB_ROOT . '../app/' . 'log/api' . DS . date('Y') . DS . date('m') . DS . date('d') . '-error.log';
            $log = Cola_Com::log(array('adapter' => 'File', 'params' => array('file' => $logFile, 'mode' => 0755)));
            $log->log("請求地址:" . $url . " 參數(shù):" . json_encode($params) . " 錯誤信息:" . json_encode($result));

            return false;
        }
        else{
        	//寫入日志
        	$arr  = explode('/', $url);
        	if(in_array('rule', $arr)){
        	$logFile = WEB_ROOT . '../app/' . 'log/api' . DS . date('Y') . DS . date('m') . DS . date('d') . '-su.log';
        	$log = Cola_Com::log(array('adapter' => 'File', 'params' => array('file' => $logFile, 'mode' => 0755)));
        	$log->log("請求地址:" . $url . " 參數(shù):" . json_encode($params) . " 錯誤信息:" . json_encode($result));
        	}
        }
        return $result;
    }

}
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1502
276