Phalcon Devtoolsを使ってみる
こんにちは、株式会社ライオンハートの鵜飼です。
FuelPHP、CakePHP、Ruby 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では積極的に使っていきたいですね。