####[上一章](/wikis/%5B1.1%5D-%E4%B8%8B%E8%BD%BD%E4%B8%8E%E5%AE%89%E8%A3%85.html) [文檔首頁](/wikis/) [下一章](/wikis/%5B1.3%5D-%E5%9C%A8%E7%BA%BF%E4%BD%93%E9%AA%8C.html)
***
_有夢想的人學習能力特別強,而且不拒絕任何新東西。 -- 《理想豐滿》_
##1.2.1 可視化安裝
將代碼上傳到服務器并解壓后,訪問: ./Public/install/ 下的安裝向導,如在瀏覽器打開:
```
http://dev.phalapi.com/install/
```
然后按照提示,一步步操作即可:
###(0)第零步:同意安裝

###(1)第一步:環境檢查

###(2)第二步:系統配置

###(3)第三步:接口請求

###(4)運行效果

##1.2.2 手動創建
在Windows系統下,可以手動創建一個新的項目。
假設目錄為: F:\xampp\htdocs\PhalApi
以下是簡單的創建操作:
###(1)新建項目目錄
在./PhalApi目錄下新建一個自己的項目目錄,通常以項目名稱命名,如項目MyApp對應:

然后,再分別在里面添加接口目錄Api、領域目錄Domain、數據源目錄Model和通用目錄Common,即:

###(2)準備一個接口
全部的接口類文件需要放置到./Api 目錄下,你可以嘗試編寫一個簡單的Default.Index接口,也可以直接將./Demo/Api/Default.php文件復制過來。
###(3)創建訪問入口
將./Public/demo目錄復制一份為對應項目名稱小寫的目錄,如這里的myapp:

注意!這里需要修改./Public/myapp/index.php和./Public/myapp/checkApiParams.php中的目錄:

###(4)瀏覽器訪問
在瀏覽器輸入以下鏈接:
```
http://localhost/phalapi/public/myapp/
```
應該可以看到:

##1.2.3 自動生成
在Linux系統下,我們可以使用腳本快速生成一個項目結構,此過程只需要1分鐘左右。
簡明操作如下:
###(1)使用phalapi-buildapp腳本
phalapi-buildapp腳本用于創建項目,進入 ./PhalApi/PhalApi/ 后,可以看到這個腳本。
不過,首先,需要為這個腳本添加執行權限:
```javascript
$ chmod +x ./phalapi-buildapp
```
然后,調用腳本創建一個MyApp的項目:
```javascript
$ ./phalapi-buildapp MyApp
OK!
```
###(2)查看生成的項目及訪問
回到 /path/to/PhalApi 目錄,你會發現生成了一個MyApp目錄,并且里面的文件如下:
```javascript
$ cd MyApp/
$ tree
.
├── Api
│?? └── Default.php
├── Common
├── Domain
├── Model
└── Tests
├── Api
│?? └── Api_Default_Test.php
├── Common
├── Domain
├── Model
├── phpunit.xml
└── test_env.php
9 directories, 4 files
```
在Public目錄下,則會有myapp的訪問入口:
```javascript
└── myapp
├── checkApiParams.php
└── index.php
```
在瀏覽器訪問:
```
#根目錄設置為./Public
http://dev.phalapi.com/myapp/
#或沒設置根目錄為./Public時訪問
http://dev.phalapi.com/Public/myapp/
```
可以看到接口結果輸出。
###(3)執行單元測試
如果安裝了PHPUnit,執行一下單元測試,也是通過的!
```javascript
$ phpunit ./Tests/
PHPUnit 4.3.4 by Sebastian Bergmann.
...
Time: 7 ms, Memory: 5.75Mb
OK (3 tests, 13 assertions)
```
##1.2.4 更多技巧
###(1)日志目錄需要0777權限
請確保日志目錄Runtime擁有寫入的權限,可以給0777 。
###(2)腳本加執行權限和軟鏈
對于腳本命令,需要添加執行權限和軟鏈,便于日后使用:
```javascript
$ cd /pah/to/PhalApi/PhalApi
$ chmod +x ./phalapi-buildapp
$ sudo ln -s /path/to/phalapi-buildapp /usr/bin/phalapi-buildapp
$ chmod +x ./phalapi-buildsqls
$ sudo ln -s /path/to/phalapi-buildsqls /usr/bin/phalapi-buildsqls
$ chmod +x ./phalapi-buildtest
$ sudo ln -s /path/to/phalapi-buildtest /usr/bin/phalapi-buildtest
```
###(3)No such file or directory的解決方案
####解決方案一:增加 /usr/bin/php軟鏈
可以將php的執行路徑追加到/usr/bin下,即類似:
```
ln -s /usr/local/php/bin/php /usr/bin/php
```
####解決方案二:使用alias起別名
或者通過使用別名 alias 的方式來注冊腳本命令:
```javascript
# vim /etc/bashrc
#PhalApi - 自動生成SQL語句
alias phalapi-buildsqls='/usr/local/php/bin/php /path/to/PhalApi/phalapi-buildsqls'
```
需要注意的是,保存后,需要source一下,即:
```javascript
# source /etc/bashrc
$ source /etc/bashrc
```
***
##1.2.5 三個腳本命令使用說明
###(1) 創建應用項目
如前文所述,可以通過```phalapi-buildapp```腳本來創建一個新的項目,其使用說明如下:

###(2)生成單元測試骨架代碼
當需要對某個類進行單元測試時,可使用```phalapi-buildtest```腳本生成對應的單元測試代碼,其使用如下:

其中,
+ 第一個參數file_path:是待測試的源文件相對/絕對路徑
+ 第二個參數class_name:是待測試的類名
+ 第三個參數bootstrap:是測試啟動文件,通常是./test_env.php文件
+ 第四個參數author:你的名字,默認是dogstar
通常,可以先寫好類名以及相應的接口,然后再使用此腳本生成單元測試骨架代碼。
以Default.Index默認接口服務為例,需要為此生成測試骨架代碼,可以依次這樣操作:
```
$ cd /path/to/PhalApi
$ cd ./Demo/Tests
$ ../../PhalApi/phalapi-buildtest ../Api/Default.php Api_Default ./test_env.php > ./Api/Api_Default_Test.php
```
最后,需要將生成好的代碼,重定向保存到你要保存的位置。通常與產品代碼對齊,并以“{類名} + _Test.php”方式命名。
###(3)生成數據庫建表SQL
當需要創建數據庫表時,可以使用```phalapi-buildsqls```腳本結合配置文件dbs.php生成建表SQL,這個工具在創建分表時尤其有用,其使用如下:

其中,
+ 第一個參數dbs_config:是指向數據庫配置文件./Config/dbs.php的路徑,可以使用相對路徑
+ 第二個參數table:是需要創建sql的表名,每次生成只支持一個
+ 第三個參數engine:(可選)是指數據庫表的引擎,可以是:Innodb或者MyISAM
> 溫馨提示:需要提前先將建表的SQL語句(除主鍵id和ext_data字段外)放置到./Data/目錄下,文件名為:{表名}.sql。
如,我們需要生成10用戶user_session表的的建表語句,那么需要添加數據文件./Data/user_session.sql(除主鍵id和ext_data字段外):
```
`user_id` bigint(20) DEFAULT '0' COMMENT '用戶id',
`token` varchar(64) DEFAULT '' COMMENT '登錄token',
`client` varchar(32) DEFAULT '' COMMENT '客戶端來源',
`times` int(6) DEFAULT '0' COMMENT '登錄次數',
`login_time` int(11) DEFAULT '0' COMMENT '登錄時間',
`expires_time` int(11) DEFAULT '0' COMMENT '過期時間',
```
然后,進入到項目根目錄,執行命令:
```
$ php ./PhalApi/phalapi-buildsqls ./Config/dbs.php user_session
```
就會看到生成好的SQL語句了,類似:
```
CREATE TABLE `phalapi_user_session_0` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
... ...
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `phalapi_user_session_1` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
... ...
`ext_data` text COMMENT 'json data here',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `phalapi_user_session_2` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
... ...
`ext_data` text COMMENT 'json data here',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `phalapi_user_session_3` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
... ...
`ext_data` text COMMENT 'json data here',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `phalapi_user_session_4` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
... ...
`ext_data` text COMMENT 'json data here',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `phalapi_user_session_5` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
... ...
`ext_data` text COMMENT 'json data here',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `phalapi_user_session_6` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
... ...
`ext_data` text COMMENT 'json data here',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `phalapi_user_session_7` (
... ...
`ext_data` text COMMENT 'json data here',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `phalapi_user_session_8` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
... ...
`ext_data` text COMMENT 'json data here',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `phalapi_user_session_9` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
... ...
`ext_data` text COMMENT 'json data here',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
最后,便可把生成好的SQL語句,導入到數據庫,進行建表操作。
####[上一章](/wikis/%5B1.1%5D-%E4%B8%8B%E8%BD%BD%E4%B8%8E%E5%AE%89%E8%A3%85.html) [文檔首頁](/wikis/) [下一章](/wikis/%5B1.3%5D-%E5%9C%A8%E7%BA%BF%E4%BD%93%E9%AA%8C.html)
- 歡迎使用PhalApi!
- 接口,從簡單開始!
- [1.1]-下載與安裝
- [1.2]-創建一個自己的項目
- [1.3]-在線體驗
- [1.4]-文檔、幫助和官網
- [1.10]-對PhalApi框架的抉擇
- [1.11]-快速入門(backup)
- [1.12]-參數規則:接口參數規則配置
- [1.13]-統一的接口請求方式:_sevice=XXX.XXX
- [1.14]-統一的返回格式和結構:ret-data-msg
- [1.15]-數據庫操作:基于NotORM的使用及優化
- [1.16]-配置讀取:內外網環境配置的完美切換
- [1.17]-日記紀錄:簡化版的日記接口
- [1.18]-快速函數:人性化的關懷
- [1.19]-DI服務速查:各資源服務一覽表
- [1.20]-DB操作:數據庫基本操作速查
- [1.21]-類的自動加載:遵循PEAR包的命名規范
- [1.22]-簽名驗證:自定義簽名規則
- [1.23]-請求和響應:GET和POST兩者皆可得及超越JSON格式返回
- [1.24]-緩存策略:更靈活地可配置化的多級緩存
- [1.25]-國際化翻譯:為走向國際化提前做好翻譯準備
- [1.26]-數據安全:數據對稱加密方案
- [1.27]-精益開發:更富表現力的Model層和重量級數據獲取的應對方案
- [1.28]-COOKIE:對COOKIE原生態的支持及記憶加密升級版
- [1.29]-開放與封閉:多入口和統一初始化
- [1.30]-保持的力量:接口開發最佳實踐
- [1.31]-新型計劃任務:以接口形式實現的計劃任務
- [2.11]-核心思想:DI依賴注入-讓資源更可控
- [2.12]-海量數據:可配置的分庫分表
- [2.13]-接口調試:在線SQL語句查看與性能優化
- [2.14]-測試驅動開發:意圖導向編程下的接口開發
- [2.15]-演進:新型計劃任務續篇
- [2.16]-領域驅動設計:應對復雜領域業務的Domain層
- [2.17]-微服務:Api接口服務層
- [2.18]-定制化:資源服務的再實現
- [2.19]-擴展庫:可重用的擴展類庫
- [2.20]-約定編程:架構明顯的編程風格
- [2.21]-服務器統一部署方案簡明版:CentOs---Nginx---php-fpm---MySql-[--Memcached]
- [2.22]-更多工具:精益項目和團隊建設
- [3.1]-擴展類庫:微信開發
- [3.2]-擴展類庫:代理模式下phprpc協議的輕松支持
- [3.3]-擴展類庫:基于PHPMailer的郵件發送
- [3.4]-擴展類庫:優酷開放平臺接口調用
- [3.5]-擴展類庫:七牛云存儲接口調用
- [3.6]-擴展類庫:新型計劃任務
- [3.8]-擴展類庫:用戶、會話和第三方登錄集成
- [3.9]-擴展類庫:swoole支持下的長鏈接和異步任務實現
- [3.11]-擴展類庫:基于FastRoute的快速路由
- [4.2]-開發實戰2:模擬優酷開放平臺接口項目開發
- [4.3]-開發實戰3:一個簡單的小型項目開發(奔跑吧兄弟投票活動)
- [5.1]-架構與思想:PhalApi核心設計和思想解讀
- [5.2]-雜談:扯一些PhalApi的前世和今生
- [5.3]-框架總結:術語表和PHP開發建議
- [5.4]-許可
- [5.5]-聯系和加入我們
- [5.6]-更新日記
- [5.8]-致框架貢獻者:加入PhalApi開源指南
- [6.1]-基于接口查詢語言的SDK包
- [6.2]-SDK包(JAVA版)
- [6.3]-SDK包(PHP版)
- [6.4]-SDK包(Objective-C版)
- [6.5]-SDK包(javascript版)
- [6.6]-SDK包(Ruby版)
- [8.1]-PhalApi視頻教程
- 附錄1:接口文檔參考模板