把它玩起來

2018-11-21 21:28 更新

PHALAPI-入門篇1(把它玩起來)

前言

先在這里感謝phalapi框架創(chuàng)始人@dogstar,為我們提供了這樣一個優(yōu)秀的開源框架.

這一小節(jié)主要是在搭建好的環(huán)境下,先把這個框架運行起來,和數(shù)據(jù)庫交互起來(這里用的是mysql),對整個框架的結(jié)構(gòu)進行最簡單的一些介紹,以及點出一些新手長遇到的一些問題和一些小技巧.

附上:

喵了個咪的博客:w-blog.cn

官網(wǎng)地址:http://www.phalapi.net/

開源中國Git地址:http://git.oschina.net/dogstar/PhalApi/tree/release

1. 運行起來吧PhalApi

不用說首先當(dāng)然是下載項目文件咯.

推薦使用git工具(如果不會使用Git 可以直接去開源中國下載源碼):

使用git把https://git.oschina.net/dogstar/PhalApi.git克隆下來

然后切換到1.2.1分支上面(注:這里使用的是當(dāng)前最新版本)

現(xiàn)在我們能看到真正的源碼了 我們先來分析一下目錄結(jié)構(gòu)其實在項目里面有一個文件README.md里面已經(jīng)有介紹了(我在補充一點)

│
├── PhalApi         //PhalApi框架,后期可以整包升級(盡量小的改動,大改動會影響框架的迭代)
│
│
├── Public          //對外訪問目錄,建議隱藏PHP實現(xiàn)(增加安全性)
│   └── demo        //Demo服務(wù)訪問入口(我認為是所謂的項目名)
│
│
├── Config          //項目接口公共配置,主要有:app.php, sys.php, dbs.php(配置文件不多說)
├── Data            //項目接口公共數(shù)據(jù)(也就是從一開始的數(shù)據(jù)庫sql文件以及后面結(jié)構(gòu)有任何變化的sql文件都存放這里,方便自己查找,好習(xí)慣之一)
├── Language        //項目接口公共翻譯(需要國際化的話很有用,讓返回更優(yōu)雅高可用)
├── Runtime         //項目接口運行文件目錄,用于存放日志,可軟鏈到別的區(qū)(主要是日志,一定要有寫的權(quán)限不然會報錯)
│
│
└── Demo            //應(yīng)用接口服務(wù),名稱自取,可多組(項目文件所謂真正實現(xiàn)業(yè)務(wù)的地方)
    ├── Api             //接口響應(yīng)層(主要用于接收請求,返回結(jié)果,把一塊大的業(yè)務(wù)分發(fā)成一塊塊小的業(yè)務(wù))
    ├── Domain          //接口領(lǐng)域?qū)?我覺得可以叫做邏輯層容易理解一點,分成的各個小的業(yè)務(wù)在這里進行處理)
    ├── Model           //接口持久層(實現(xiàn)最簡單的數(shù)據(jù)庫操作,不要有任何邏輯因為是高可用)
    └── Tests           //接口單元測試(不用多說)

然后我們把項目文件放到網(wǎng)站的根目錄然后我們運行http://localhost/Public/(localhost請自行替換)我們可以獲得以下結(jié)果:

強烈推薦使用json解析工具(這里使用的chorme插件json-handle附上下載地址json-handle)

這樣第一步運行PhalApi就已經(jīng)完成了

注:有些童鞋可能運行起來是一片白(這點請大家特別注意,有很多人問我怎么自己寫了一個模塊調(diào)用一直是一片白,其實是php報錯了只是你沒有打開php報錯)解決方法是修改php.ini文件中的兩個參數(shù)

error_reporting=E_ALL
display_errors=ON

2. 他是如何運行起來的

先說說為什么會有上面這一串返回,有php基礎(chǔ)的人都知道訪問了Public目錄默認是訪問到了Index.php這個文件我們來看看它的代碼

<?php
/**
 * $APP_NAME 統(tǒng)一入口
 */
require_once dirname(__FILE__) . '/init.php';                     //引入初始化文件我們以后再講
//裝載你的接口                        
DI()->loader->addDirs('Demo');                                    //這個就是定義了你接口所在的目錄
/** ---------------- 響應(yīng)接口請求 ---------------- **/
$api = new PhalApi();                                             
$rs = $api->response();                                           //執(zhí)行你的接口
$rs->output();                                                    //返回結(jié)果

大家要是進入到$api->response();里面就會發(fā)現(xiàn)有這樣一條語句

$service = DI()->request->get('service', 'Default.Index');

也就是當(dāng)你沒有定義訪問某個接口的時候,它會指向到Default模塊下的Index接口

所以http://localhost/Public/等同于http://localhost/Public/?service=Default.Index試一試會得到一樣的結(jié)果

機智的小伙伴一定發(fā)現(xiàn)了在項目中的Demo/Api里面有Default.php這樣一個文件而恰巧里面有一個index方法,沒錯就是通過service=Default.Index找到了Default模塊中的index方法

實現(xiàn)這一機制的語句是:

$rs->setData(call_user_func(array($api, $action)));

有興趣的童鞋可以研究研究

3. 數(shù)據(jù)庫操作

Demo下面的Api文件除了上面所調(diào)用的Default.php還有一個User.php沒錯就是User模塊里面分別有兩個接口可供調(diào)用 getBaseInfo,getMultiBaseInfo那我們直接調(diào)用getBaseInfo看看結(jié)果http://localhost/Public/?service=User.getBaseInfo

相信大家一眼就能看出來是缺少了傳參我們在試試帶上參數(shù)會怎么樣http://localhost/Public/?service=User.getBaseInfo&user_id=1

當(dāng)然這個是因為沒有配置數(shù)據(jù)庫引起的如何配置?當(dāng)然是在配置文件里面配置,大家打開Config目錄下的 dbs文件key看到以下類容

'db_demo' => array(                             //服務(wù)器標(biāo)記
        'host'      => 'localhost',             //數(shù)據(jù)庫域名
        'name'      => 'phalapi',               //數(shù)據(jù)庫名字
        'user'      => 'root',                  //數(shù)據(jù)庫用戶名
        'password'  => '',                      //數(shù)據(jù)庫密碼
        'port'      => '3306',                  //數(shù)據(jù)庫端口
        'charset'   => 'UTF8',                  //數(shù)據(jù)庫字符集
    ),

我們把它配置好然后再運行,可能有些人還是看到的和上面的情況是一樣的,要不就是數(shù)據(jù)庫不通要不就是沒有創(chuàng)建phalapi數(shù)據(jù)庫(自行創(chuàng)建)

當(dāng)我們保證數(shù)據(jù)庫能夠聯(lián)通,phalapi數(shù)據(jù)庫也存在的情況下再去鏈接可能會出現(xiàn)類似于Warning: mkdir(): Permission denied in PhalApi/PhalApi/Logger/File.php on line 45這類錯誤,這是應(yīng)為沒有創(chuàng)建文件權(quán)限造成的,windows下面基本不會應(yīng)為讀寫權(quán)限出問題,liunx下面要注意這點

當(dāng)我們給目錄賦予權(quán)限之后在運行可能會出現(xiàn)一個很長的報錯PDOException大概的意思就是找不到tbl_user表

其實sql文件已經(jīng)在Data文件夾里面了phalapi_test.sql

我們把sql文件運行一下創(chuàng)建好的效果是這樣的(phalapi_test庫名改成phalapi)

讓我們再次運行那么結(jié)果就出來了

這樣我們就已經(jīng)把框架自帶的例子跑了起來

4. 總結(jié)

這一小節(jié)主要是把phalapi的一些基本的機制做了一些簡單的介紹,以及把框架自帶的實例運行了起來,下一小節(jié)會著重介紹一下框架自帶的請求驗證,返回結(jié)果和自動生成的接口文檔!

注:筆者能力有限有說的不對的地方希望大家能夠指出,也希望多多交流!

官網(wǎng)QQ交流群:421032344 歡迎大家的加入!

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號