澳门太阳娱乐集团官网-太阳集团太阳娱乐登录

php API接口入门
分类:脚本专栏

1.简述:

<?php
class Express {

    private $expressname =array(); //封装了快递名称

    function __construct(){
        $this->expressname = $this->expressname();
    }

    /*
     * 采集网页内容的方法
     */
    private function getcontent($url){
        if(function_exists("file_get_contents")){
            $file_contents = file_get_contents($url);
        }else{
            $ch = curl_init();
            $timeout = 5;
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
            $file_contents = curl_exec($ch);
            curl_close($ch);
        }
        return $file_contents;
    }
    /*
     * 获取对应名称和对应传值的方法
     */
    private function expressname(){
        $result = $this->getcontent("http://www.kuaidi100.com/");
        preg_match_all("/data\-code\=\"(?P<name>\w+)\"\>\(?P<title>.*)\<\/span>/iU",$result,$data);
        $name = array();
        foreach($data['title'] as $k=>$v){
            $name[$v] =$data['name'][$k];
        }
        return $name;
    }

    /*
     * 解析object成数组的方法
     * @param $json 输入的object数组
     * return $data 数组
     */
    private function json_array($json){
        if($json){
            foreach ((array)$json as $k=>$v){
                $data[$k] = !is_string($v)?$this->json_array($v):$v;
            }
            return $data;
        }
    }

    /*
     * 返回$data array      快递数组
     * @param $name         快递名称
     * 支持输入的快递名称如下
     * (申通-EMS-顺丰-圆通-中通-如风达-韵达-天天-汇通-全峰-德邦-宅急送-安信达-包裹平邮-邦送物流
     * DHL快递-大田物流-德邦物流-EMS国内-EMS国际-E邮宝-凡客配送-国通快递-挂号信-共速达-国际小包
     * 汇通快递-华宇物流-汇强快递-佳吉快运-佳怡物流-加拿大邮政-快捷速递-龙邦速递-联邦快递-联昊通
     * 能达速递-如风达-瑞典邮政-全一快递-全峰快递-全日通-申通快递-顺丰快递-速尔快递-TNT快递-天天快递
     * 天地华宇-UPS快递-新邦物流-新蛋物流-香港邮政-圆通快递-韵达快递-邮政包裹-优速快递-中通快递)
     * 中铁快运-宅急送-中邮物流
     * @param $order        快递的单号
     * $data['ischeck'] ==1   已经签收
     * $data['data']        快递实时查询的状态 array
     */
    public  function getorder($name,$order){
        $keywords = $this->expressname[$name];
        $result = $this->getcontent("http://www.kuaidi100.com/query?type={$keywords}&postid={$order}");
        $result = json_decode($result);
        $data = $this->json_array($result);
        return $data;
    }
}
$a = new Express();
$result = $a->getorder("全一快递","111309582915");
var_dump($result);
?>
//该片段来自于http://outofmemory.cn

api接口开发,其实和平时开发逻辑差不多;但是也有略微差异;

平时使用mvc开发网站的思路一般是都 由控制器 去 调用模型,模型返回数据,再由控制器把数据放到视图中,展现给用户;

api开发是:使用控制器 去调用模型,模型返回数据,在有控制器 输出 json格式字符串 或者 XML 字符串;

2.逻辑代码:

微型mvc结构 :controller 控制器,modal 模型,view 视图,db类

 1 <?php 2  3 class TestController{ 4     private $db = null; 5  6     function __construct(){ 7         require './db.class.php'; 8         $this -> db = new db(); 9     }10 11     /**12      * @desc 返回数据13      * @author wzh14      * @date 2017-02-1915      * @qq 64694306716      */17     private function jsonReturn($data){18         $return = array(19             'status' => 200,    /* 返回状态,200 成功,500失败 */20             'data' => $data,21             'message' => '获取成功',22         );23         echo json_encode($return);die;24     }25 26     /**27      * @desc 返回数据28      * @author wzh29      * @date 2017-02-1930      * @qq 64694306731      */32     private function success($message){33         $return = array(34             'status' => 200,    /* 返回状态,200 成功,500失败 */35             'message' => $message,36         );37         echo json_encode($return);die;38     }39 40 41     /**42      * @desc 返回数据43      * @author wzh44      * @date 2017-02-1945      * @qq 64694306746      */47     private function error($message){48         $return = array(49             'status' => 500,    /* 返回状态,200 成功,500失败 */50             'message' => $message,51         );52         echo json_encode($return);die;53     }54 55 56     /**57      * @desc 测试api接口 根据 班级id获取该班级下的所有学员58      * @author wzh59      * @version 1.060      * @date 2017-02-1961      */62     public function getList(){63         $class_id =  $_GET['class_id'];64         $sql = " select student_id,student_name,gander from student where class_id = '$class_id' and is_delete = 0 ";65         $list = $this -> db -> getAll($sql);66         if(empty($list)){67             $this -> error('暂无数据');68         }69         $data['list'] = $list;70         $this -> jsonReturn($data);71     }72 73     /**74      * @desc 测试api接口 获取该学员 是否 已经打卡75      * @author wzh76      * @version 1.077      * @date 2017-02-1978      * @qq 64694306779      */80     public function getSignStatus(){81         $student_id =  $_GET['student_id'];82         $time = time();83         $start_time = strtotime(date('Y-m-d',$time) . ' 00:00:00');84         $end_time = $start_time = 3600 * 24;85         $sql = " select status from student_status where student_id = '$student_id' ";86         $status = $this -> db -> getOne($sql);87         if($status == 1){88             $this -> success('已打卡');89         }else{90             $this -> error('未打卡');91         }92     }93 94 }

总结:通过以上代码可以看出 和平时写代码的逻辑是相同的

本文由澳门太阳娱乐集团官网发布于脚本专栏,转载请注明出处:php API接口入门

上一篇:【太阳集团太阳娱乐登录】php将数组输出为.csv文 下一篇:php 三大特色:封装,承继,多态
猜你喜欢
热门排行
精彩图文