# Phalcon 開發工具(Phalcon Developer Tools)
Phalcon提供的這個開發工具主要是用來輔助開發,比如生成一些程序的基本框架,生成控制器模型等。使用這個工具我們只需要一個簡單的命令即可生成應用的基本框架。
> 如果你喜歡使用web版而非console版本的程序,那么在這里[blog post](https://blog.phalconphp.com/post/dont-like-command-line-and-consoles-no-problem)可以看到更多的內容。
## 下載(Download)
我們可以從[Github](https://github.com/phalcon/phalcon-devtools)上下載或克隆下來這個跨平臺的開發輔助工具。
### 安裝(Installation)
下面詳盡的說明了如何在不同的操作系統平臺上安裝這個輔助開發工具:
* [Windows 系統下使用 Phalcon 開發工具(Phalcon Developer Tools on Windows)](http://docs.iphalcon.cn/reference/wintools.html)
* [Mac OS X 系統下使用 Phalcon 開發工具(Phalcon Developer Tools on Mac OS X)](http://docs.iphalcon.cn/reference/mactools.html)
* [Linux 系統下使用 Phalcon 開發工具(Phalcon Developer Tools on Linux)](http://docs.iphalcon.cn/reference/linuxtools.html)
## 獲取可用的命令(Getting Available Commands)
我們可以在虛擬控制臺上輸入如下命令:`phalconcommands`
~~~
$ phalcon commands
Phalcon DevTools (3.0.0)
Available commands:可用命令
commands (alias of: list, enumerate)
controller (alias of: create-controller)
module (alias of: create-module)
model (alias of: create-model)
all-models (alias of: create-all-models)
project (alias of: create-project)
scaffold (alias of: create-scaffold)
migration (alias of: create-migration)
webtools (alias of: create-webtools)
~~~
## 生成項目框架(Generating a Project Skeleton)
我們可以使用Phalcon開發輔助工具生成預先定義的項目架構。 默認情況下,phalcon開發輔助工具會使用apache的mod\_rewrite來生成程序的骨架. 要創建項目我們只需要在我們的 web服務器根目錄下輸入如下命令:
~~~
$ pwd
/Applications/MAMP/htdocs
$ phalcon create-project store
~~~
執行命令后會生成如下的文檔結構的項目:

我們可以在命令上加*–help*以顯示幫助信息(下面的幫助中的中文是翻譯時加上去的):
~~~
$ phalcon project --help
Phalcon DevTools (3.0.0)
Help:幫助
Creates a project 創建項目
Usage:用法
project [name] [type] [directory] [enable-webtools]
Arguments: 參數
help Shows this help text 顯示此幫助信息
Example 例子
phalcon project store simple
Options: 選項
--name Name of the new project 新項目的名字
--enable-webtools Determines if webtools should be enabled [optional] 此選項決定了新的項目中是否使用webtools開發輔助組件
--directory=s Base path on which project will be created [optional] 在何外創建項目
--type=s Type of the application to be generated (cli, micro, simple, modules) 應用的種類(微型,簡單,多模塊,console等)
--template-path=s Specify a template path [optional] 指定模板路徑
--use-config-ini Use a ini file as configuration file [optional] 使用ini文件作為配置保存文件
--trace Shows the trace of the framework in case of exception. [optional] 出錯時是否顯示框架的trace信息
--help Shows this help 顯示幫助
~~~
我們訪問新生成項目的地址顯示如下:

## 生成控制器(Generating Controllers)
我們可以使用phalcon create-controller –name test或phalcon controller –name test來生成名為test的控制器. 當然要使用此命令當前的執行命令目錄必須為已存在的phalcon項目內.
~~~
$ phalcon create-controller --name test
~~~
上面的命令會生成如下代碼:
~~~
<?php
use Phalcon\Mvc\Controller;
class TestController extends Controller
{
public function indexAction()
{
}
}
~~~
## 數據庫配置(Preparing Database Settings)
當我們使用phalcon的輔助開發工具生成項目時,則生成的配置信息會被放在*app/config/config.ini*文件內。 我們必須要正確的配置連接信息才可生成模型或基本的CRUD操作。
可以在config.ini中進行修改配置信息:
~~~
[database]
adapter = Mysql
host = "127.0.0.1"
username = "root"
password = "secret"
dbname = "store_db"
[phalcon]
controllersDir = "../app/controllers/"
modelsDir = "../app/models/"
viewsDir = "../app/views/"
baseUri = "/store/"
~~~
## 生成模型(Generating Models)
使用phalcon開發輔助工具我們可以有若干種方式來生成模型。 我人可以有選擇的生成若干個模型或是全部生成。 亦可以指定生成公有屬性或是生成setter和getter方法。
Options:
--name=sTable name 表名--schema=sName of the schema. [optional] schema名--namespace=sModel’s namespace [optional] 模型命名空間--get-setAttributes will be protected and have setters/getters. [optional] 設置字段訪問屬性為私有 并添加setters/getters方法--extends=sModel extends the class name supplied [optional] 指定擴展類名--excludefields=l Excludes fields defined in a comma separated list [optional]--docHelps to improve code completion on IDEs [optional] 輔助IDE的自動完成功能--directory=sBase path on which project will be created [optional] 項目的根目錄--forceRewrite the model. [optional] 重寫模型--traceShows the trace of the framework in case of exception. [optional] 出錯時顯示框架trace信息--mapcolumnGet some code for map columns. [optional] 生成字映射的代碼--abstractAbstract Model [optional] 抽象模型
最簡單的生成模型的方式:
~~~
$ phalcon model products
~~~
~~~
$ phalcon model --name tablename
~~~
所有的字段設置為公有:
~~~
<?php
use Phalcon\Mvc\Model;
class Products extends Model
{
/**
* @var integer
*/
public $id;
/**
* @var integer
*/
public $typesId;
/**
* @var string
*/
public $name;
/**
* @var string
*/
public $price;
/**
* @var integer
*/
public $quantity;
/**
* @var string
*/
public $status;
}
~~~
我們可以在生成模型時指定*–get-set*參數以實現對字面的保護, 這樣我們可以在setter/getter方法里執行一些業務邏輯。
~~~
<?php
use Phalcon\Mvc\Model;
class Products extends Model
{
/**
* @var integer
*/
protected $id;
/**
* @var integer
*/
protected $typesId;
/**
* @var string
*/
protected $name;
/**
* @var string
*/
protected $price;
/**
* @var integer
*/
protected $quantity;
/**
* @var string
*/
protected $status;
/**
* 設置字段 id 值的方法
*
* @param integer $id
*/
public function setId($id)
{
$this->id = $id;
}
/**
* 設置字段 typsId 值的方法
*
* @param integer $typesId
*/
public function setTypesId($typesId)
{
$this->typesId = $typesId;
}
// ...
/**
* 返回字段 status 值
*
* @return string
*/
public function getStatus()
{
return $this->status;
}
}
~~~
另一個非常好的特性即是在我們多次生成模型時,原有的對模型的更改依然會存在。 這樣我們就可以不用擔心對模型的屬性進行修會被后來再次執模型的生成命令所覆蓋。下面的截圖顯示了這是如何工作的:
## 生成基本的 CRUD(Scaffold a CRUD)
使用phalcon開發輔助工具我們可以直接快速的生成一個模型的CRUD操作。 如果我們想快速的生成模型的CRUD操作只需要使用phalcon輔助開發工具的中scaffold命令即可。
代碼生成后,你可以根據自己的需要修改生成的代碼。很多開發者可能不會去使用這個功能,其實這東西有時不是太好用,很多時候開發者往往會手動的書寫相關代碼。使用scaffold產生的代碼可以 幫助我們理解框架是如何工作的當然也可以幫助我們制作出快速原型來。 下面的截圖展示了基于products表的scaffold:
~~~
$ phalcon scaffold --table-name products
~~~
scaffold生成器會在相關的文件夾中生成若干個文檔。 下面是所生成文件的概覽:
在生成的Products控制器中,我們可以看到一個搜索表單和一個生成新product的鏈接:

在創建頁面我們可以生成經過驗證的Products記錄。 Phalcon會自動的驗證數據庫中的非空字段。

執行搜索后,分頁組件會顯示頒后的結果。 我們在結果列表的前面放置Edit或Delete鏈接,以實現相應的操作。

## 工具的 Web 界面(Web Interface to Tools)
另外,如果你喜歡我們還可以在生成項目時通過添加參數以實現在項目中使用Phalcon開發工具的web接口。 下面的視頻中展示了如何工作的:
## 集成工具到 PhpStorm(Integrating Tools with PhpStorm IDE)
下面的視頻中展示了如何在[PhpStorm IDE](http://www.jetbrains.com/phpstorm/)中集成輔助開發工具。 這個配置步驟也適用于其它的PHP IDE.
## 結束語(Conclusion)
Phalcon開發輔助工具為我們提供了一種簡易的產生應用代碼的方法, 這可以減少開發時間及潛在的錯誤。
- 簡介
- 安裝
- 安裝(installlation)
- XAMPP下的安裝
- WAMP下安裝
- Nginx安裝說明
- Apache安裝說明
- Cherokee 安裝說明
- 使用 PHP 內置 web 服務器
- Phalcon 開發工具
- Linux 系統下使用 Phalcon 開發工具
- Mac OS X 系統下使用 Phalcon 開發工具
- Windows 系統下使用 Phalcon 開發工具
- 教程
- 教程 1:讓我們通過例子來學習
- 教程 2:INVO簡介
- 教程 3: 保護INVO
- 教程4: 使用CRUD
- 教程5: 定制INVO
- 教程 6: V?kuró
- 教程 7:創建簡單的 REST API
- 組件
- 依賴注入與服務定位器
- MVC架構
- 使用控制器
- 使用模型
- 模型關系
- 事件與事件管理器
- Behaviors
- 模型元數據
- 事務管理
- 驗證數據完整性
- Workingwith Models
- Phalcon查詢語言
- 緩存對象關系映射
- 對象文檔映射 ODM
- 使用視圖
- 視圖助手
- 資源文件管理
- Volt 模版引擎
- MVC 應用
- 路由
- 調度控制器
- Micro Applications
- 使用命名空間
- 事件管理器
- Request Environmen
- 返回響應
- Cookie 管理
- 生成 URL 和 路徑
- 閃存消息
- 使用 Session 存儲數據
- 過濾與清理
- 上下文編碼
- 驗證Validation
- 表單_Forms
- 讀取配置
- 分頁 Pagination
- 使用緩存提高性能
- 安全
- 加密與解密 Encryption/Decryption
- 訪問控制列表
- 多語言支持
- 類加載器 Class Autoloader
- 日志記錄_Logging
- 注釋解析器 Annotations Parser
- 命令行應用 Command Line Applications
- Images
- 隊列 Queueing
- 數據庫抽象層
- 國際化
- 數據庫遷移
- 調試應用程序
- 單元測試
- 進階技巧與延伸閱讀
- 提高性能:下一步該做什么?
- Dependency Injection Explained
- Understanding How Phalcon Applications Work
- Api
- Abstract class Phalcon\Acl