PHP基于CI框架開發(fā)APP接口

這是小弟發(fā)的第一篇文章,文筆略差望大家見諒,
若有錯誤或需補充的地方在評論下方回復(fù)即可

前端與服務(wù)器端之間的通訊

目前大多數(shù)前端與服務(wù)器端之間的接口都是基于http或者https協(xié)議進行實現(xiàn)苦蒿,而兩者之間大多數(shù)都是通過json或者xml格式進行encode和decode(當然,socket又是另外一回事)礼预。這里先講如何使用json格式來進行通信第步。
基本上解析json的情況包含4種:

  1. 解析Person單個對象類型的json數(shù)據(jù)
    {"Person":{"name":"zhangsan","age":"23"}}
  2. 解析list集合里的一堆對象list<Person>:
    {"Person":[{"name":"zhangsan","age":"23"},{"name":"lisi","age":"24"}]}
  3. 解析list集合里的多個字符串list<String>
    {"City":["Beijing","Shanghai","Guangzhou"]}
  4. 解析list和Map的嵌套使用,Map<list<Map<String,Object>>>
    {"Company":{"Market":[{"name":"zhangsan"},{"name","lisi"}],"IT":[{"name":"xiaohong"},{"name":"xiaoming"}]}}

在這里想推薦兩個工具:

  • json.cn:json字符串進行解析
  • postman:chrome上的一個插件,可以很方便地測試接口

接下來喻频,前端把服務(wù)器端發(fā)送過來的json字符串轉(zhuǎn)換成對應(yīng)的字典對象即可進行使用缩宜。

CI框架簡單介紹

CI框架是基于PHP的一個入門級框架,上手簡單半抱,基于MVC架構(gòu)脓恕,且擴展性比較強,CI有中文的官方網(wǎng)站和文檔窿侈,對于PHP新手想學(xué)習(xí)框架的話是個不錯的選擇炼幔。
在這里服務(wù)器的環(huán)境搭建之類的就不說了,百度有一大堆教程史简,XAMPP乃秀、LAMP或者WAMP可根據(jù)操作系統(tǒng)進行選擇。

廢話少說圆兵,能直接上代碼不跺讯?

好,我們來實現(xiàn)個最簡單的注冊功能

  1. 先連接數(shù)據(jù)庫殉农,僅需簡單配置一下即可
    打開您的CI工程 -> application -> config -> database.php
    配置如下:
    <code>
    $db['default']['hostname'] = '您的數(shù)據(jù)庫地址';//本地數(shù)據(jù)庫則為localhost
    $db['default']['port'] = 3306;//數(shù)據(jù)庫的端口刀脏,一般為3306
    $db['default']['username'] = 'root';//用戶名
    $db['default']['password'] = 'root';//密碼
    $db['default']['database'] = 'test';//數(shù)據(jù)庫名稱
    $db['default']['dbdriver'] = 'mysqli';
    $db['default']['dbprefix'] = '';
    $db['default']['pconnect'] = TRUE;
    $db['default']['db_debug'] = TRUE;
    $db['default']['cache_on'] = FALSE;
    $db['default']['cachedir'] = '';
    $db['default']['char_set'] = 'utf8';
    $db['default']['dbcollat'] = 'utf8_general_ci';//排序規(guī)則
    $db['default']['swap_pre'] = '';
    $db['default']['autoinit'] = TRUE;
    $db['default']['stricton'] = FALSE;
    </code>
  2. 創(chuàng)建一個控制器
    打開localhost/phpadmin -> 創(chuàng)建數(shù)據(jù)庫名為test -> 創(chuàng)建一個user表 -> 分別創(chuàng)建id(primary主鍵,auto_increment自動增加超凳,unsigned int)愈污、username(varchar50耀态,unique唯一)、password(varchar50) -> 打開您的CI工程 -> application -> controllers -> 創(chuàng)建一個文件Test.php
    這里就不敘述如何使用phpadmin來設(shè)置信息暂雹,百度就有
    Test.php代碼如下:
    <code>
    <?php
    class Test extends CI_Controller {
    public function register() {
    //isset表示這個變量是否存在
    if (isset($_POST['username'])&&isset($_POST['password'])) {
    $this->load->database();//加載數(shù)據(jù)庫類
    $username = $_POST['usernam'];//獲取傳上來的username
    $password = $_POST['password'];//獲取傳上來的password
    $sql = "SELECT username FROM user where username = ?";
    $user = $this->db->query($sql,array($username));//執(zhí)行sql語句
    $user = $user->result_array();//轉(zhuǎn)換成數(shù)組
    if (count($user) == 0) { //數(shù)量為0首装,即表示用戶不存在
    $sql1 = "INSERT INTO user(username,password) VALUES(?,?)";
    $this->db->query($sql1,array($username,$password));//插入
    $id = $this->db->insert_id();//獲取插入的行號,即id
    $user = $this->db->query($sql,array($username));
    $user = $user->result_array();//再查詢一次數(shù)據(jù)庫
    if (count($user) != 0) {//如果有數(shù)據(jù)杭跪,即表明插入成功
    $viewArray = array("jsonArray" => $user[0]);//獲取數(shù)組第一個對象仙逻,即插入成功的用戶信息
    ob_start();//開啟緩存
    $this->load->view('json',$viewArray);//輸出信息到j(luò)son.php視圖
    ob_end_flush();//關(guān)閉緩存
    exit();//退出
    }
    }else{
    $viewArray = array("errorMsg" => "user exist");//打印錯誤信息
    $this->load->view("jsonerror", $viewArray);
    return;
    }
    }
    }
    }
    ?>
    </code>
  3. 因為是MVC架構(gòu),輸出則由View來負責(zé)涧尿,創(chuàng)建一個View視圖
    打開您的CI工程 -> application -> views -> 創(chuàng)建一個文件json.php
    json.php代碼如下:
    <code>
    <?php
    header('Content-type: application/json');//通信頭設(shè)置
    $outputarray = array('status' => 'OK', 'data' => $jsonArray);
    echo json_encode($outputarray);//數(shù)組轉(zhuǎn)json系奉,然后echo輸出
    </code>
    但為了打印輸出錯誤信息,同時需要另一個View視圖
    打開您的CI工程 -> application -> views -> 創(chuàng)建一個文件jsonerror.php
    jsonerror.php代碼如下:
    <code>
    <?php
    header('Content-type: application/json');
    $outputarray = array('status' => 'error', 'msg' => $errorMsg);
    echo json_encode($outputarray);
    </code>

輸出結(jié)果

若正確輸出现斋,則結(jié)果為:
<code>
{"status":"OK",
"data":{
"id":1,
"username":"zhangsan",
"password":"123"
}}
</code>
若用戶已存在喜最,則結(jié)果為
<code>
{"status":"error",
"msg":"user exist"}
</code>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市庄蹋,隨后出現(xiàn)的幾起案子瞬内,更是在濱河造成了極大的恐慌,老刑警劉巖限书,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件虫蝶,死亡現(xiàn)場離奇詭異,居然都是意外死亡倦西,警方通過查閱死者的電腦和手機能真,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扰柠,“玉大人粉铐,你說我怎么就攤上這事÷钡担” “怎么了蝙泼?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長劝枣。 經(jīng)常有香客問我汤踏,道長,這世上最難降的妖魔是什么舔腾? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任溪胶,我火速辦了婚禮,結(jié)果婚禮上稳诚,老公的妹妹穿的比我還像新娘哗脖。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布懒熙。 她就那樣靜靜地躺著丘损,像睡著了一般。 火紅的嫁衣襯著肌膚如雪工扎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天衔蹲,我揣著相機與錄音肢娘,去河邊找鬼。 笑死舆驶,一個胖子當著我的面吹牛橱健,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播沙廉,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拘荡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了撬陵?” 一聲冷哼從身側(cè)響起珊皿,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎巨税,沒想到半個月后蟋定,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡草添,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年驶兜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片远寸。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡抄淑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出驰后,到底是詐尸還是另有隱情肆资,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布倡怎,位于F島的核電站迅耘,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏监署。R本人自食惡果不足惜颤专,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望钠乏。 院中可真熱鬧栖秕,春花似錦、人聲如沸晓避。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至暑塑,卻和暖如春吼句,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背事格。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工惕艳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人驹愚。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓远搪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親逢捺。 傳聞我的和親對象是個殘疾皇子谁鳍,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容