PhalconPHPはCakePHPと異なりインストールしても開発のベースは提供されない
Phalcon StarterKitで開発の土台をセットアップする
PhalconPHPをインストールしただけではフォルダもファイルも構成されていない状態となっている。
CakePHPの場合には、ベースとなるファイルやディレクトリ構成が同時に提供されるので、その点は分かりやすいと言える。逆にPhalconの場合は、開発者が自由に開発のベースを選択できる状態になっている。そのため開発するアプリケーションに最低限必要な構成の上にアプリを構築していくという手法を採ることができる。
Phalconに馴染みがなくCakePHPに詳しい人には、
Phalcon StarterKit
がおすすめで、Phalcon StarterKitでCakePHPに似た環境を素早く導入することができる。Phalcon StarterKitにより、
- Viewのlayout
- テンプレート
- dbの設定
- URLルーティング
- 404エラーページ
- bootstrap
- デフォルトコントローラ
- ベースコントローラ
などのCakePHPに親しんだ方には必須の要素が提供される。
Phalconがインストールされていることを想定しているので、セットアップが済んでいない場合は、
を参考にしてほしい。
Phalcon StarterKitは以下のページからダウンロードできる。
https://github.com/GesJeremie/Phalcon-starterkit
上のページのDownload ZIPからダウンロードしたPhalcon StarterKitのフォルダを
Phalcon-starterkit
として
C:\xampp\htdocs\vhost
にコピーした。
C:\xampp\htdocs\vhost\Phalcon-starterkit
の中身は画像の状態となった。
Phalcon StarterKitを展開したので、VertualHostの設定を行う。
<VirtualHost *:80> ServerName phalcon-starterkit.local DocumentRoot "C:/xampp/htdocs/vhost/Phalcon-starterkit" DirectoryIndex index.php <Directory "C:/xampp/htdocs/vhost/Phalcon-starterkit"> AllowOverride all Require all granted </Directory> </VirtualHost>
ここまでの設定でPhalcon StarterKitのセットアップが完了した。
phalcon-starterkit.local
にアクセスすると下の画面が表示される。
PhalconをCakePHPのように利用する
画像のランディングページには、
- layoutファイル
- コンテンツView
- URLに該当するコントローラ
それぞれの保存先パスが記載されている。サーバサイドMVCに慣れた方なら直感的に理解できる説明がされている。
URLルーティングの設定
ルーティングの設定をしてページを増やすには
routes.php
を調整する。ファイルの場所は、
app\config\routes.php
になる。そして、新規のルーティング設定を行う。
$router->add('/phalcon', 'hello::phalcon');
HelloControllerにphalconアクションを追加して/phalconでアクセス可能な状態にした。RailsやCakePHPと同じ考え方になる。
HelloControllerのphalconアクションを作成する。
public function phalconAction() { }
アクションの中身を書かなくても同じ名前のViewが呼ばれるようになっている。そのため
app\views\hello\phalcon.volt
を作成しないといけない。
<div class="container"> <p>Phalcon starter kit</p> </div>
ここまで作成して
/phalcon
にアクセスすると作成したViewが表示される。
Modelの利用
データベースと連携した処理をやってみたい。まずdb設定を行う。
app\config\config.php
でデータベース接続設定を行うことが可能。
'database' => [ 'adapter' => 'Mysql', 'host' => 'localhost', 'username' => 'admin', 'password' => 'pass', 'dbname' => 'db', 'charset' => 'utf8' ],
Modelの作成を行う。
app\models\Hellos.php
というファイル名で下のコードを記述
class Hellos extends \Phalcon\Mvc\Model { public function initialize(){ $this->setSource('hellos'); } }
Modelを設定したらControllerのActionを変更する。
public function phalconAction() { $data = Hellos::findFirst(); $this->view->setVar('hello', $data); }
データベースにfindを実行して、Viewに$dataを渡している。View側では下のようにしてデータにアクセスする。
<div class="container"> <p>Phalcon starter kit</p> <?php echo $hello->name ?> </div>
Voltテンプレート
PhalconではVoltというテンプレートエンジンを利用して公式サイトで説明が行われている。そして、Phalcon StarterKitではVoltが利用可能な状態になっている。
データベースから複数の行をfindしてみる。
public function phalconAction() { $data = Hellos::find(); $this->view->setVar('hello', $data); }
findはfindFirstと異なり、テーブルのすべての行を読み込む。複数の配列でもViewにデータを渡すことができる。
View側でVoltを利用して繰り返し表示を行う例が下の状態
<div class="container"> <p>Phalcon starter kit</p> <ul> {% for e in hello %} <li>Name: {{ e.name }}</li> {% endfor %} </ul> </div>
Voltを利用すればView内の繰り返し処理も可能。
Phalcon StarterKitを活用すれば、CakePHPのファンもスムーズに高速開発のベースを構築することができる。