-PHPフレームワークの所感
#contents
*Ethna [#z812b3b7]
日本で開発されているフレームワーク。GREEで使われているので実績もある。なによりインストールや実践的な利用方法などの日本語ドキュメントがありがたい。
**インストール [#hc1747fe]
-pear使ってインストールしましょ
pear channel-discover pear.ethna.jp
pear install ethna/ethna
*Symfony [#addc0a9e]
まだ1.0が出たばかり
**インストール [#k04ecaed]
-即効で使いたければアーカイブを解凍するだけのsandboxを利用せよ(この場合Updateを考えてはいけない)。とりあえずApacheのDocumentRoot以下で作業する。
-pearコマンドでインストールするのが一番楽。
pear channel-discover pear.symfony-project.com
pear install symfony/symfony-beta
-インストールが終ったらジェネレータを動かす。projectの作成でディレクトリなどを作成し、appの追加でアプリケーションの雛形追加
-以下で使うの定数の定義
|PRJ_NAME|プロジェクト名|
|APP_NAME|アプリ名プロジェクト内でいくつか分ける場合につける(管理者向けユーザー向けetc)|
|MODULE_NAME|アプリの下に属する。最低ひとつは必要なのだが分け方の基準が不明|
-プロジェクトディレクトリの作成
mkdir PRJ_NAME
cd PRJ_NAME
-以下のsymfonyコマンドはすべてこのディレクトリで行うこと。
symfony init-project PRJ_NAME
symfony init-app APP_NAME
symfony init-module APP_NAME MODULE_NAME
**httpd.confを設定 [#r362df7f]
しないと画像がうまく表示されない
環境情報
|symfonyインストールディレクトリ|/var/www/html/symfory|
|PEARインストールディレクトリ|/usr/share/php5-pear|
-上記の環境はVine4のデフォルトなのでそれ以外の場合は読み替えること
Alias /symfony/sf "/usr/share/php5-pear/data/symfony/web/sf"
Alias /symfony "/var/www/html/symfony/web"
**動作確認 [#pfc74d38]
デバッグモードも備えられている。下がデバッグモード
http://192.168.22.131/symfony/index.php
http://192.168.22.131/symfony/frontend_dev.php
**モジュールの追加 [#a85930fb]
Project→App→moduleの階層構造ができているらしい。というわけでモジュールを追加してみる。
-モジュール追加
symfony init-module アプリ名 モジュール名
-動作確認(モジュール名をmymoduleとした場合)
http://192.168.22.131/symfony/index.php/mymodule
このままではデフォルトモジュールに転送されるだけなので独自の出力は一切できない。というわけで変更
**DB [#gebfc5a0]
-databases.ymlに以下のように記述
pdocon:
class: sfPDODatabase
param:
dsn: mysql:host=localhost;dbname=codezine
phptype: mysql
database: codezine
username: root
password:
#for Postgres PDO connection
pdocon:
class: sfPDODatabase
param:
dsn: pgsql:host=localhost;dbname=homedb
phptype: pgsql
username: ユーザー名
password: パスワード
-呼び出しはこうだ
$con = $this->getContext()->getDatabaseConnection('pdocon');
**テンプレートの切り替え [#l3074636]
actionの戻り値によりテンプレートを切り替えることができる。省略した場合は「アクション名Success.php」が呼ばれる。単なる名前との一致でファイルを探してきているだけ。VIEWが存在しないActionは以下のようにすればよい。
return sfView::NONE;
*Smartyの組み込み [#gd688033]
*Mojavi [#q0cea06f]
開発中止になってもうた。もはやこれから選択する余地はないが、後のフレームワークの土台にもなっていたりする。JavaのStruts利用経験があるならすんなり入れそう。
#counter