LionHeart SD BLOG

株式会社ライオンハート システムデザインの技術ブログ

Phalcon Devtoolsを使ってみる

こんにちは、株式会社ライオンハートの鵜飼です。

FuelPHPCakePHPRuby on Rails等でも同じような機能がありますが、Phalconにもコマンドラインから雛形を生成するPhalcon Devtoolsが存在しています。

スクラッチで書こうとすると結構長い記述を書かないといけなかったり、タイピングミスが起きる危険性もあるので、自動化されている箇所はなるべく利用していったほうが効率よく正確に記述することができます。

ということで、Phalcon Devtoolsについて少し調べてみました。

Phalcon Devtoolsをインストール

composerからインストールすることができますので、composer.jsonに追記してインストールします。
GitHubのマニュアルどおりに、1.3.x系で止まりバージョンが跳ね上がらないようにしました。

"phalcon/devtools": "1.3.*@dev",

後は、インストールして、シンボリックリンクでパスを通します。

$ composer install
$ ln -s /path/to/vendor/phalcon/devtools/phalcon.php /usr/bin/phalcon

その他、GitHubからソースコードをダウンロードしてインストールすることも可能のようです。

Phalcon Devtoolsのコマンド

$ phalcon commands help

Phalcon DevTools (2.0.6)

Help:
  Lists the commands available in Phalcon devtools

Available commands:
  commands (alias of: list, enumerate)
  controller (alias of: create-controller)
  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)

phalcon commands helpと実行すると、コマンドの一覧が表示されます。
プロジェクトの作成から、スキャフォールド、マイグレーションと一通りのコマンドは存在していそうですね。

Scaffoldを試してみる

RailsのScaffoldだと、コマンドラインで追加するカラム名も指定しますが、Phalconの場合は逆で、予めDBを用意してテーブル名を指定すると、そこからカラム名を取得してくれるようです。

productsというテーブル名を用意して、scaffoldを実行してみました。

$ phalcon scaffold --table-name products

Phalcon DevTools (2.0.6)


  Success: Model "Products" was successfully created.

/path/to/app/controllers/ProductsController.php
/path/to/app/views/layouts/products.phtml
/path/to/app/views/products/index.phtml
/path/to/app/views/products/search.phtml
/path/to/app/views/products/new.phtml
/path/to/app/views/products/edit.phtml

コントローラ、モデルと、検索・検索結果・新規作成・編集のビューを一気に作ってくれました。
Autoincrementに指定したカラムは新規制作・編集の入力欄が現れなかったり、NOT NULLのカラムは必須項目にしてくれたりと、細かい所が嬉しいです。

後は体裁を整えれば簡単な更新処理を用意することが出来るのでかなり便利ですね。

雑感

今回はscaffoldだけ試してみましたが、途中途中での追加機能や仕様変更でも上手くDevtoolsを利用することで、効率的に開発を行うことが出来そうです。

migration辺りもDBの構造を共有することが簡単に出来るようになるので、Phalconに限らず用意されているFWでは積極的に使っていきたいですね。

参考