初めてのPhalcon

今日から、PHPフレームワークのPhalconに触れていきたいと思います。公式サイトのチュートリアル1を読む限りでは、phalconは、デフォルトのファイル構造を持たず、自由に作成できるとのことですが、ファイル構造から考えて作成していくのは、いくら何でも面倒なので、Phalconが提供しているDeveloper Toolsで自動生成されたファイル構造で勉強していくことにします。※開発環境は、XAMPPで行うことにします。

まず、コマンドプロンプトから下記のコマンドを入力して、新規プロジェクトを作成します。

cd C:\xampp\htdocs
phalcon project phalcon --enable-webtools

作成したプロジェクトをNetBeansのプロジェクトとして取り込みます。※ここまでは、前回行いました。

Developer Toolsのファイル構造

それでは、実際に生成されたフィル構造の中身を見てみたいと思います。

まずphalcon直下には、2つのフォルダ(app、public)と、2つのファイル(.htaccess、index.html)があります。

2015-04-01 16-27-12

index.htmlはダミーファイルです。これは、.htaccessファイルが有効でない場合に表示するために作成されています。

この.htaccessファイルは、下記のようにphalconプロジェクトへ来たリクエストを全てphalcon/publicフォルダへリライト(誘導)するように作成されています。

2015-04-01 16-31-58

publicフォルダ

それでは、次にpublicフォルダの中を見てみましょう。名前のごとく、ここが公開フォルダになります。5つのフォルダ(css、files、img、js、temp)と4つのファイル(.htccess、index.php、webtools.config.php、webtools.php)が生成されています。

2015-04-01 16-34-33

webtools.config.phpとwettools.phpは、ブラウザ上でWeb開発ができるツールです。localhost/phalcon/webtools.phpで開発ツールのトップページが表示されます。後日使い方を調べてご報告したいと思います。

.htaccessファイルは、リクエストされたファイルが存在するかチェックし、ファイルが存在した場合はWebサーバーモジュールによるリライトは行われません。

index.phpは、全てのリクエストを処理します。中身を見てみましょう。

<?php
error_reporting(E_ALL);
try {
/**
* 環境ファイルの読み込み
*/
$config = include __DIR__ . "/../app/config/config.php";
/**
* オートローダーの読み込み
*/
include __DIR__ . "/../app/config/loader.php";
/**
* サービスの読み込み
*/
include __DIR__ . "/../app/config/services.php";
/**
* リクエストの操作
*/
$application = new \Phalcon\Mvc\Application($di);
echo $application->handle()->getContent();
} catch (\Exception $e) {
echo $e->getMessage();
}

環境ファイル、オートローダー、サービスを読み込み、リクエストに応じた操作を行うように命令しています。

appフォルダ

それでは、次にappフォルダを見てみましょう。ここがアプリケーション用のフォルダになります。5つのフォルダ(cache、config、controllers、models、views)が生成されています。

2015-04-01 17-03-12

configフォルダ

app/configフォルダの中を見てみましょう。ここは、環境設定用のフォルダになります。3つのファイル(config.php、loader.php、service.php)があります。

app/config/config.phpは、環境設定用のファイルです。データベースの環境設定とアプリケーションのフォルダ構造が設定されています。

2015-04-01 17-09-54

データベースの項目にユーザー名とパスワード、データベース名を入力します。

database' => array(
 'adapter' => 'Mysql',
 'host' => 'localhost',
 'username' => 'root',
 'password' => 'secret',
 'dbname' => 'phalcon',
 'charset' => 'utf8',
 ),

これで、データベースが使用できるはずです。

localhost/phalcon/webtools.phpで、下記のように表示されたら設定OKです。

2015-04-01 17-19-39

尚、この段階では、まだ、Migrationsがエラーになります。

contrllersフォルダ

次に、controllersフォルダ内を見てみましょう。ControllerBase.phpとIndexController.phpの2つのファイルがあります。

2015-04-01 17-31-56

ControllerBase.phpは、Phalcon\Mvc\Controllerクラスを継承していますが、中身は何もありません。

2015-04-01 17-33-16

IndexController.phpは、上記のControllerBase.phpを継承していて、indexAction()がありますが、IndexAction()の中には、何も記述されていません。

2015-04-01 17-34-56

ControllerBase.phpには、共通のロジックを記述して、たとえば、認証関連や、共通のフィルターを記述して、それを継承したコントローラーを使って下さい。というような考えでしょうか。

尚、indexAction()は、中身は何も記述しなくても、自動的にapp/views/index/index.voltを読み込むようになっているみたいです。※正確には、app/views/index.voltファイルを表示し、そのファイルの中の{{ content() }} 部分に、app/views/index/index.volt を読み込んで表示していました。詳しくは、後日調べてみます。

また、indexAction()にロジックを記述しても無視されました。この辺も併せて後日調べてみます。

modelsフォルダ

app/modelsの中身は空っぽでした。まだ、データベーステーブルを作成していないので、当たり前ですが。

viewsフォルダ

app/viewsフォルダの中には、2つのフォルダ(index、layouts)とindex.voltファイルがあり、indexフォルダ内に、index.voltファイルがありました。※公式サイトでは、index.phtmlと記述されていましたが、index.voltに変更されているのは、Phalconのテンプレートエンジンが変わったのでしょうか。?この辺も後日併せて調べてみたいと思います。

本日は、PhalconのDeveloper Toolsで自動生成されたファイル構造について調べてみました。なんとなくPhalconの外観が見えてきた気がします。気のせいですが(*^▽^*)

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

トラックバック&コメント

この投稿のトラックバックURL:

コメントをどうぞ

このページの先頭へ