はじめに
前回記事ではPhalconの開発環境を構成しましたが、今回はこの環境とPhalcon Devtoolsを使って、MVCプロジェクトの作成・MVCプロジェクトの起動・簡単なコントローラーの作成を行い、これらを使ってHelloWorldの出力を行います。
対象となる読者
- PHPの一般的な知識をお持ちの方
- CakePHPなど、他のPHPフレームワークを用いた開発の経験をお持ちの方
前提となる環境
- PHP 5.4以降の環境でPHPをコマンドライン実行可能であること
- MySQLやMariaDBで事前に接続情報とデーターベースを作成してあること
DevTools WebToolsの準備
前回でも簡単に触れましたが、Phalcon Devtoolsはプロジェクトの雛形やコントローラー・データーベースのテーブルからのモデル生成・スカッフォールド・DB構造のマイグレーションなどを行ってくれる便利なコマンドラインツールです。開発が積極的に進んでいますので、以下に挙げる更新機能を持つ各種ツールを利用することを推奨します。
Phalcon DevtoolsはPHP CLIが動作を前提に開発されています、コマンドラインからphpが実行可能か事前に確認してください。
【参考】Phalcon Devtools
Composerを使ってインストール
composer.jsonを使って、Phalcon Devtoolsをインストールすることができます。Composerは予めインストールしておき、ccomposerコマンドが使えるように、予め環境変数PATHにComposerのインストール先を登録してください。
【参考】Composer
適当なフォルダを作成し、以下の内容のcomposer.jsonを作成します。
3 | "phalcon/devtools" : "dev-master" |
composer.jsonを作成したフォルダで以下のコマンドを実行します。
1 | php composer.phar install |
PEARを使ってインストール
PHPのよく使われているPEARを使ってインストールすることもできます。
beta版のconfig-setとチャンネルの登録を忘れずに行ってください。
1 | pear config-set preferred_state beta |
2 | pear channel-discover pear.phalconphp.com |
3 | pear install phalcon/Devtools |
Git cloneでのインストール
分散リポジトリ管理ツールのGitを使ってのインストールも可能です。既にGitをインストールされている方はこの方法が一番楽でしょう。
いずれのインストール方法の場合でも、phalcon-devtoolsフォルダを環境変数PATHに登録してください。登録後にコマンドラインから実行して、PATHが通っていることを確認してください。
MVCプロジェクトの作成
Phalcon Devtoolsからプロジェクトを作成します。
以下はWindows環境での例です。ここではHelloWorldという名前のプロジェクトを作成しています。
1 | C:\Users\kazumi\Documents\NetBeansProjects>phalcon create-project HelloWorld --enable-webtools |
3 | Phalcon DevTools (1.3.2 ALPHA 1) |
4 | Success: Controller "index" was successfully created. |
6 | Success: Project 'HelloWorld' was successfully created. |
開発用Webサーバーの起動と表示の確認
生成したプロジェクトを早速起動してみましょう。
その前にドキュメントルートに設定する環境に合わせて、生成されたプロジェクトのconfig.phpを修正します。
config.phpの変更
HelloWorld/app/config.phpをエディタなどで開き、以下を参考に修正してください。
修正する箇所はdatabaseの接続文字列と、baseUrlの箇所です。
02 | return new \Phalcon\Config(array( |
05 | 'host' => 'localhost' , |
06 | 'username' => 'dbユーザー名' , |
07 | 'password' => 'dbパスワード' , |
10 | 'application' => array( |
11 | 'controllersDir' => __DIR__ . '/../../app/controllers/' , |
12 | 'modelsDir' => __DIR__ . '/../../app/models/' , |
13 | 'viewsDir' => __DIR__ . '/../../app/views/' , |
14 | 'pluginsDir' => __DIR__ . '/../../app/plugins/' , |
15 | 'libraryDir' => __DIR__ . '/../../app/library/' , |
16 | 'cacheDir' => __DIR__ . '/../../app/cache/' , |
PHPビルドインサーバー機能での起動
(クリックで拡大)
PHP5.4以後から機能として追加された、「ビルドインWEBサーバー」を用いてプロジェクトを起動します。ファイルHelloworld/public/.htrouter.phpを作成してください。
01 | Helloworld/public/.htrouter.php |
04 | if (!file_exists(__DIR__ . '/' . $_SERVER[ 'REQUEST_URI' ])) { |
05 | list($url, $querys) = explode( '?' , $_SERVER[ 'REQUEST_URI' ]); |
08 | $params = explode( '&' , $querys); |
09 | foreach ($params as $param) { |
10 | list($key, $value) = explode( '=' , $param); |
生成したプロジェクトルートに移動し、以下のコマンドを入力してプロジェクト起動してください。
1 | C:\Users\kazumi\Documents\NetBeansProjects\HelloWorld>php -S localhost:8000 -t public .htrouter.php |
2 | PHP 5.5.8 Development Server started at Thu Jun 26 07:42:41 2014 |
4 | Document root is C:\Users\kazumi\Documents\NetBeansProjects\HelloWorld\public |
ブラウザを起動して、http://localhost:8000/にアクセスしてください。
(クリックで拡大)
Phalcon WebToolsの確認
Phalcon Devtoolsdを使ったプロジェクト生成の際に コマンドラインオプションとして--enable-webtoolsを指定しましたが、このオプションによりPhacon WebToolsをブラウザから操作が可能になります。
ブラウザを起動して、http://localhost:8000/webtools.phpにアクセスしてください。
(クリックで拡大)
コントローラーの作成
HelloWorldの出力を行うための、コントローラーを生成します。WebTools上のControllersをクリックしてください。
(クリックで拡大)
Create Controllerが表示されたら、NameにController Nameを入力してGenerateボタンを押してください。
「The controller "HelloController.php" was created successfully」と表示されていれば、コントローラーの生成に成功しています。
(クリックで拡大)
Phalconのコントローラー
生成されたコントローラーを確認します。
Helloworld/app/controllers/HelloController.phpを編集します。
- \Phalcon\Mvc\Controllerクラスを継承している。
- クラス名はHelloController
- メソッドにはActionというsuffixが付与されている
Ruby on RailsやCake PHPなどの経験がある方は、すぐに理解できると思いますが、Phalconでも命名規則があります。
コントローラーのクラスは、いくつかのActionというメソッドで構成されており、実際にリクエストのハンドリングを行います。
例として、下のURLにアクセスした場合
http://localhost/posts/show/2012/the-post-title
Phalconのデフォルトでは、以下の表として解釈されます。
URIの階層 |
値 |
コントローラー |
posts |
アクション |
show |
引数1 |
2012 |
引数2 |
the-post-title |
03 | class PostsController extends \Phalcon\Mvc\Controller |
06 | public function indexAction() |
11 | public function showAction($year, $postTitle) |
Phalconのコントローラーは、以下のルールを守る必要があります。
- クラス名にはControllerとSuffixを付与 (HelloならHelloController)
- メソッド名にはActionとSuffixを付与、メソッドのアクセス権限はpublic ()
- コントローラー名のみのアクセスケースのために、indexActionがデフォルト
- \Phalcon\Mvc\Controllerクラスを継承
- app/controllers配下にクラス名.phpのファイル名で配置(HelloならHelloController.php)
indexAction()メソッドの中にecho "Hello World";として、HelloWorldを出力するコードを記述してください。
03 | class HelloController extends \Phalcon\Mvc\Controller |
06 | public function indexAction() |
コントローラーの表示
ブラウザを起動して、http://localhost:8000/helloにアクセスしてください。また、http://localhost:8000/hello/indexにもアクセスしてください。
(クリックで拡大)