App接口開發(fā)

  • 單例模式連接數(shù)據(jù)庫
單例模式三大原則:
  1. 構造函數(shù)需要標記為非public(防止外部使用new操作符創(chuàng)建對象)听皿,單例類不能在其他類中實例化选侨,  
只能被其自身實例化
  2. 擁有一個保存類的實例的靜態(tài)成員變量 $_instance
  3. 擁有一個訪問這個實例的公共的靜態(tài)方法
例:
<?php
  class Db {
        static private $_instance;
        static private $_connectSource;
        private $_dbConfig = array{
            'host' => '127.0.0.1',
            'user' => 'root',
            'password' => ' ',
            'database' => 'video',
        }
        private function _construct() {
        }
        static public function getInstance() {
              //先判斷這個實例是否存在牵舱,不存在才創(chuàng)建
              if(!(self::$_instance instanceof self)){
                     self::$_instance = new self();
              }
              return self::$_instance;
        }
        public function connect() {
            //如果資源不存在再創(chuàng)建
            if(!self::$_connectSource){
                self::$_connectSource = mysql_connect($this->_dbConfig['host'],
                $this->_dbConfig['user'], $this->_dbConfig['password']);
                if(!self::$_connectSource) {
                    //直接這樣如果連接失敗易給客戶端造成崩潰,所以最好這里拋出異常
                    //die('mysql connect error' . mysql_error());
                    throw new Exception('mysql connect error' . mysql_error());
                 }
                mysql_select_db($this->_dbConfig['database'], self::$_connectSource);
                mysql_query("set names UTF8", self::$_connectSource);
            }
            
            return self::$_connectSource;
        }
  }

//調用方法
$connect = Db::getInstance()->connect();
$sql = "select * from video";
$result = mysql_query($sql,$connect);
echo mysql_num_rows($result);//輸出結果集中的個數(shù)
var_dump($result);
?>
  • 開發(fā)首頁接口方式
方案一:讀取數(shù)據(jù)庫方式開發(fā)首頁接口
  從數(shù)據(jù)庫獲取信息 -> 封裝 -> 生成數(shù)據(jù)接口
  應用場景:數(shù)據(jù)時效性比較高的系統(tǒng)
方案二:讀取緩存方式開發(fā)首頁接口
  從數(shù)據(jù)庫獲取信息 -> 封裝 -> 返回數(shù)據(jù)
                        -> 緩存
  再次請求 -> 緩存 -> 封裝 -> 返回數(shù)據(jù)
方案三:定時讀取緩存方式開發(fā)首頁接口
  數(shù)據(jù)庫 -> crontab -> 緩存
  http請求 -> 緩存 -> 封裝并返回數(shù)據(jù)

方案一流程:
  http請求 -> 服務器 -> 查詢數(shù)據(jù) -> 返回數(shù)據(jù) 
例:
<?php
//接口示例:http://app.com/list.php?page=1&pagesize=12
require_once('./response.php');//引入類文件
require_once('./Db.php');
$page = isset($_GET['page']) ? $_GET['page'] : 1; //isset判斷是否存在
$pageSize = isset($_GET['pagesize']) ? $_GET['pagesize'] : 1;
//如果不是數(shù)字眯漩,則返回自定義錯誤信息
if(!is_numeric($page) || !is_numeric($pageSize)) {
    return Response::show(401,'數(shù)據(jù)不合法');//自定義狀態(tài)碼
}
$offset = ($page - 1) * $pageSize;//起始頁
//數(shù)據(jù)庫中字段status=1,orderby倒序的片仿,limit 0,6設置起始頁0中的6條數(shù)據(jù)
$sql = "select * from video where status = 1 order by orderby desc limit ". $offset ."," .$pageSize;

//接收異常
try {
    $connect = Db::getInstance()->connect();
}catch(Exception $e) {
    return Response::show(403,'數(shù)據(jù)庫連接失敗');
}
$result = mysql_query($sql, $connect);//是一個結果集
$videos = array();
//遍歷結果集
while($video = mysql_fetch_assoc($result)) {
    $videos[] = $video;
}
if($videos) {
    //直接調用生成接口數(shù)據(jù)方法返回給客戶端
    return Response::show(200,'首頁數(shù)據(jù)獲取成功',$videos);
}else {
    return Response::show(400,'首頁數(shù)據(jù)獲取失敗',$videos);
}
?>
  • 開發(fā)版本升級接口
基本參數(shù)傳遞方式和獲取方法:
方式            獲取
get            $_GET
post           $_POST
header頭        $_SERVER
注:$_SERVER 是一個包含了諸如頭信息(header)统锤、路徑(path)、以及腳本位置(script locations)等信息的數(shù)組
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末幅恋,一起剝皮案震驚了整個濱河市杏死,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌捆交,老刑警劉巖淑翼,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異品追,居然都是意外死亡玄括,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門肉瓦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來遭京,“玉大人胃惜,你說我怎么就攤上這事∧牡瘢” “怎么了船殉?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長斯嚎。 經常有香客問我利虫,道長,這世上最難降的妖魔是什么堡僻? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任糠惫,我火速辦了婚禮,結果婚禮上苦始,老公的妹妹穿的比我還像新娘寞钥。我一直安慰自己,他們只是感情好陌选,可當我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布理郑。 她就那樣靜靜地躺著,像睡著了一般咨油。 火紅的嫁衣襯著肌膚如雪您炉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天役电,我揣著相機與錄音赚爵,去河邊找鬼。 笑死法瑟,一個胖子當著我的面吹牛冀膝,可吹牛的內容都是我干的。 我是一名探鬼主播霎挟,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼窝剖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了酥夭?” 一聲冷哼從身側響起赐纱,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎熬北,沒想到半個月后疙描,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡讶隐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年起胰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片整份。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡待错,死狀恐怖籽孙,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情火俄,我是刑警寧澤犯建,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站瓜客,受9級特大地震影響适瓦,放射性物質發(fā)生泄漏。R本人自食惡果不足惜谱仪,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一玻熙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧疯攒,春花似錦嗦随、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至砂吞,卻和暖如春署恍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蜻直。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工盯质, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人概而。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓呼巷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親赎瑰。 傳聞我的和親對象是個殘疾皇子朵逝,可洞房花燭夜當晚...
    茶點故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,302評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)乡范,斷路器,智...
    卡卡羅2017閱讀 134,704評論 18 139
  • 在全班第十八屆三次班干部工作會議上的講話 ----有感于"一批到底"的會風 各位班干部...
    泉口閱讀 419評論 0 1
  • 大家好啤咽,按題目要求做下自我介紹:我是孫云玲晋辆,筆名墨宣,來自東莞市茶山醫(yī)院眼科宇整,是一名光明使者瓶佳,年齡52歲(在群里可...
    墨宣閱讀 820評論 0 1
  • 八大處有八剎 松柏熟了 年輪扭曲著樹干 脫落的何止時光…… 世俗永遠那樣 纏繞螺旋 舍利子 娑婆世界的吉祥 一只鴿...
    fengtele閱讀 165評論 0 1