Phalconで高速開発

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のインストール

を参考にしてほしい。

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

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

にアクセスすると下の画面が表示される。

flying-phalconphp

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のファンもスムーズに高速開発のベースを構築することができる。

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Phalconで高速開発の記事にコメントを投稿