#phalapi-入門篇1(把它玩起來)#php
##前言## 先在這裏感謝phalapi框架創始人@dogstar,爲咱們提供了這樣一個優秀的開源框架.html
這一小節主要是在搭建好的環境下,先把這個框架運行起來,和數據庫交互起來(這裏用的是mysql),對整個框架的結構進行最簡單的一些介紹,以及點出一些新手長遇到的一些問題和一些小技巧.mysql
附上:git
官網地址:http://www.phalapi.net/sql
開源中國Git地址:http://git.oschina.net/dogstar/PhalApi/tree/releasechrome
##1. 運行起來吧PhalApi##數據庫
不用說首先固然是下載項目文件咯.json
推薦使用git工具(若是不會使用Git 能夠直接去開源中國下載源碼):windows
使用git把https://git.oschina.net/dogstar/PhalApi.git克隆下來api
而後切換到1.2.1分支上面(注:這裏使用的是當前最新版本)
如今咱們能看到真正的源碼了 咱們先來分析一下目錄結構其實在項目裏面有一個文件README.md裏面已經有介紹了(我在補充一點)
│ ├── PhalApi //PhalApi框架,後期能夠整包升級(儘可能小的改動,大改動會影響框架的迭代) │ │ ├── Public //對外訪問目錄,建議隱藏PHP實現(增長安全性) │ └── demo //Demo服務訪問入口(我認爲是所謂的項目名) │ │ ├── Config //項目接口公共配置,主要有:app.php, sys.php, dbs.php(配置文件很少說) ├── Data //項目接口公共數據(也就是從一開始的數據庫sql文件以及後面結構有任何變化的sql文件都存放這裏,方便本身查找,好習慣之一) ├── Language //項目接口公共翻譯(須要國際化的話頗有用,讓返回更優雅高可用) ├── Runtime //項目接口運行文件目錄,用於存放日記,可軟鏈到別的區(主要是日誌,必定要有寫的權限否則會報錯) │ │ └── Demo //應用接口服務,名稱自取,可多組(項目文件所謂真正實現業務的地方) ├── Api //接口響應層(主要用於接收請求,返回結果,把一塊大的業務分發成一塊塊小的業務) ├── Domain //接口領域層(我以爲能夠叫作邏輯層容易理解一點,分紅的各個小的業務在這裏進行處理) ├── Model //接口持久層(實現最簡單的數據庫操做,不要有任何邏輯由於是高可用) └── Tests //接口單元測試(不用多說)
而後咱們把項目文件放到網站的根目錄而後咱們運行http://localhost/Public/(localhost請自行替換)咱們能夠得到如下結果:
強烈推薦使用json解析工具(這裏使用的chorme插件json-handle附上下載地址json-handle)
這樣第一步運行PhalApi就已經完成了
注:有些童鞋可能運行起來是一片白(這點請你們特別注意,有不少人問我怎麼本身寫了一個模塊調用一直是一片白,實際上是php報錯了只是你沒有打開php報錯)解決方法是修改php.ini文件中的兩個參數
error_reporting=E_ALL display_errors=ON
##2. 他是如何運行起來的##
先說說爲何會有上面這一串返回,有php基礎的人都知道訪問了Public目錄默認是訪問到了Index.php這個文件咱們來看看它的代碼
<?php /** * $APP_NAME 統一入口 */ require_once dirname(__FILE__) . '/init.php'; //引入初始化文件咱們之後再講 //裝載你的接口 DI()->loader->addDirs('Demo'); //這個就是定義了你接口所在的目錄 /** ---------------- 響應接口請求 ---------------- **/ $api = new PhalApi(); $rs = $api->response(); //執行你的接口 $rs->output(); //返回結果
你們要是進入到$api->response();裏面就會發現有這樣一條語句
$service = DI()->request->get('service', 'Default.Index');
也就是當你沒有定義訪問莫個接口的時候,它會指向到Default模塊下的Index接口
因此http://localhost/Public/等同於http://localhost/Public/?service=Default.Index試一試會獲得同樣的結果
機智的小夥伴必定發現了在項目中的Demo/Api裏面有Default.php這樣一個文件而恰巧裏面有一個index方法,沒錯就是經過service=Default.Index找到了Default模塊中的index方法
實現這一機制的語句是:
$rs->setData(call_user_func(array($api, $action)));
有興趣的童鞋能夠研究研究
##3. 數據庫操做##
Demo下面的Api文件除了上面所調用的Default.php還有一個User.php沒錯就是User模塊裏面分別有兩個接口可供調用 getBaseInfo,getMultiBaseInfo那咱們直接調用getBaseInfo看看結果http://localhost/Public/?service=User.getBaseInfo
相信你們一眼就能看出來是缺乏了傳參咱們在試試帶上參數會怎麼樣http://localhost/Public/?service=User.getBaseInfo&user_id=1
固然這個是由於沒有配置數據庫引發的如何配置?固然是在配置文件裏面配置,你們打開Config目錄下的 dbs文件key看到如下類容
'db_demo' => array( //服務器標記 'host' => 'localhost', //數據庫域名 'name' => 'phalapi', //數據庫名字 'user' => 'root', //數據庫用戶名 'password' => '', //數據庫密碼 'port' => '3306', //數據庫端口 'charset' => 'UTF8', //數據庫字符集 ),
咱們把它配置好而後再運行,可能有些人仍是看到的和上面的狀況是同樣的,要不就是數據庫不通要不就是沒有建立phalapi數據庫(自行建立)
當咱們保證數據庫可以聯通,phalapi數據庫也存在的狀況下再去連接可能會出現相似於Warning: mkdir(): Permission denied in PhalApi/PhalApi/Logger/File.php on line 45這類錯誤,這是應爲沒有建立文件權限形成的,windows下面基本不會應爲讀寫權限出問題,liunx下面要注意這點
當咱們給目錄賦予權限以後在運行可能會出現一個很長的報錯PDOException大概的意思就是找不到tbl_user表
其實sql文件已經在Data文件夾裏面了phalapi_test.sql
咱們把sql文件運行一下建立好的效果是這樣的(phalapi_test庫名改爲phalapi)
讓咱們再次運行那麼結果就出來了
這樣咱們就已經把框架自帶的例子跑了起來
##4. 總結##
這一小節主要是把phalapi的一些基本的機制作了一些簡單的介紹,以及把框架自帶的實例運行了起來,下一小節會着重介紹一下框架自帶的請求驗證,返回結果和自動生成的接口文檔!
注:筆者能力有限有說的不對的地方但願你們可以指出,也但願多多交流!
官網QQ交流羣:421032344 歡迎你們的加入!