W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
先在這里感謝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
不用說首先當(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
先說說為什么會有上面這一串返回,有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)));
有興趣的童鞋可以研究研究
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)把框架自帶的例子跑了起來
這一小節(jié)主要是把phalapi的一些基本的機制做了一些簡單的介紹,以及把框架自帶的實例運行了起來,下一小節(jié)會著重介紹一下框架自帶的請求驗證,返回結(jié)果和自動生成的接口文檔!
注:筆者能力有限有說的不對的地方希望大家能夠指出,也希望多多交流!
官網(wǎng)QQ交流群:421032344 歡迎大家的加入!
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: