Ethna: 2009年5月アーカイブ
半年ほどEthna(2.3.x系)を使ったショッピングサイトの構築に携わってわかったこと。
Ethnaでの開発をはじめると1画面につき、次の3点セットをバリバリ記述することが、主な作業になると思います。
私は当初、アクションフォームというのは、単に入力値をチェックするだけものだと思っていました。
アクションフォームクラス内で、入力値を定義しておいて、
しかし一方で、アクションフォームには、アクションクラスやアクションビューからSmartyに値を渡すという役割もあります。
このように見ていくと、アクションフォーム=入力チェックという認識は、アクションフォームの一側面しか見ていないと気づきました。
アクションフォームというのは、ユーザの入力、アクションクラス、ビュークラス、テンプレートファイルなどを含めた、Ethna全体に関わる何かなのです。
狭義には、「アクションクラス、ビュークラス、テンプレートファイルの3者間でデータを共有するための入れ物」です。
しかしもっと広い視点で見ると、「アクションフォームこそが、Ethnaの中心であり、Ethnaという太陽系の太陽なのだ。」とわかりました。
というわけで、アクションフォームを理解することが重要です。
アクションフォームとアクションエラーをきちんと理解すれば、頭の中のもやもやがかなりすっきりします。
公式ドキュメントを読んだだけでは、なかなかアクションフォームやアクションエラーの実体が見えてこないので、ぜひソースコード(Ethna_ActionForm.phpとEthna_ActionError.php)を読みましょう。
最初のうちは理解できないかもしれませんが、気にしないでください。
Ethnaにおいて、「プラグイン」「フィルタ」は、1つの言葉で2つの違う意味が(同音異義語みたいなもの)あり、初心者を混乱させます。
フィルタ:
1.アクションフォームで入力チェックの際に行われる「文字列変換機能」
2.Ethna本体の実行前や実行後、アクションの実行前や実行後に走らせる特別な処理 (実行時間計測、携帯電話の機種判別など)
プラグイン:
1.Ethna本体のプラグイン機構
2.Smartyのプラグイン機構
ソースコードを読んだり開発したりしてるうちに、いつかわかってきますので、最初は無理に理解しなくてよいと思います。
MovableTypeやPukiwkiもそうですが、プラグインを使わなくても充分便利ですし、いろんなことができます。
まずは基本機能を使いこなせることを目指しましょう。
余談ですが、「フィルタ」に関しては1を「フォームフィルタ/入力フィルタ」、2を「アクションフィルタ/アプリケーションフィルタ」など適と、適切な名前に変更した方がよいと思います。
上級プログラマやハッカーのやることだと思っていました。
ところがEthnaのソースコードは大変読みやすいです。
Ethnaがちょっと使えるようになってきたら、ソースコードを読むことをオススメします。
「すごいプログラマはすごいコードを書かない」と誰かが言っていましたが、まさにそのとおりです。
メソッドや変数の命名も大変シンプルでわかりやすいです。
(コードのコメントが日本語であることも心強いです。 )
PHPのコードを書く上でかなりお手本になります。
試しに、Ethna_ActionClass.phpを開いてみてください。
コードのあまりの短かさに唖然とするでしょう。
「え、アクションクラスって、たったのこれだけ?」
他にも、Ethna_ActionError.phpなんかもかなりシンプルです。
マニュアルよりソースコードの方が短いくらいです。
$this->ae->add()と$this->ae->addObject()の違いをすぐ忘れてしまう人は、一度アクションエラーのソースコードを覗いてみてください。
一発でモヤモヤがすっきりします。
私はPHPを初めてまた半年ほどですが、Ethnaのソースコードはゆっくり読めば理解できます。
「PHPを極めてからEthnaのコードを読もう」などと身構える必要はありません。
Ethnaの全体像を理解するには、Ethna_Controller.phpの_trigger_WWW()を見てみてください。
ここだけ見れば、Ethnaの全体の流れがよくわかります。
ここを見た後で、アクションフォームなり、アクションエラーなり、自分でトピックを決めて読み進んでいけばよいと思います。
私は主要なファイルのソースコードを印刷して、カバンに入れて持ち歩いています。
ソースコードが短いので、印刷してもほんとに薄いです。(A4一枚に両面2ページずつ印刷している)
混んでる電車の中で読むにも都合が良いです
知りたいことをGoogleで検索しまくっても全然見つからないとき、ソースコードを見ると数分でわかった、ということがよくあります。
みんなEthnaを使いましょう!
関連記事:
5分でまっさらなWindowsにEthnaをインストールしてHello Worldを表示する方法
EthnaSmarty - WindowsにEthna+Smartyを簡単にインストールするツール
- アクションフォームを制す者はEthnaを制す
- 「プラグイン」、「フィルタ」は最初は理解できなくても気にしない
- Ethna本体のソースコードを読もう
アクションフォームを制す者はEthnaを制す
アクションフォームを理解し使いこなすことが、Ethnaを使いこなすカギです。Ethnaでの開発をはじめると1画面につき、次の3点セットをバリバリ記述することが、主な作業になると思います。
- アクションクラス
- アクションビュー
- テンプレートファイル
私は当初、アクションフォームというのは、単に入力値をチェックするだけものだと思っていました。
アクションフォームクラス内で、入力値を定義しておいて、
var $form = array(
'id' => array(
'type' => VAR_TYPE_INT,
),
'name' => array(
'type' => VAR_TYPE_STRING,
),
);
同ファイルのアクションクラスのprepare()内で、入力チェックをし、判定結果によって遷移先を振り分ける。
function prepare()
{
if ($this->af->validate() > 0) {
// バリデーションエラーだったら、入力画面に戻す
return 'input';
}
...
}
しかし一方で、アクションフォームには、アクションクラスやアクションビューからSmartyに値を渡すという役割もあります。
//ビュークラスなどで
$this->af->setApp('name' => 'DQNEO');
//tplファイルで
{$app.name}さん、こんにちは
また、便利なフォームヘルパも、アクションフォームが密接に絡んでいます。
//tplファイルで
{form ethna_action="foo"}
{form_input name="mailaddress"}
{/form}
このように見ていくと、アクションフォーム=入力チェックという認識は、アクションフォームの一側面しか見ていないと気づきました。
アクションフォームというのは、ユーザの入力、アクションクラス、ビュークラス、テンプレートファイルなどを含めた、Ethna全体に関わる何かなのです。
狭義には、「アクションクラス、ビュークラス、テンプレートファイルの3者間でデータを共有するための入れ物」です。
しかしもっと広い視点で見ると、「アクションフォームこそが、Ethnaの中心であり、Ethnaという太陽系の太陽なのだ。」とわかりました。
というわけで、アクションフォームを理解することが重要です。
アクションエラーも重要
同じような理由で、アクションエラーも重要です。アクションフォームとアクションエラーをきちんと理解すれば、頭の中のもやもやがかなりすっきりします。
公式ドキュメントを読んだだけでは、なかなかアクションフォームやアクションエラーの実体が見えてこないので、ぜひソースコード(Ethna_ActionForm.phpとEthna_ActionError.php)を読みましょう。
プラグイン、フィルタは最初は理解できなくても気にしない
「プラグイン」「フィルタ」という用語が、Ethna本や公式ドキュメントによく登場します。最初のうちは理解できないかもしれませんが、気にしないでください。
Ethnaにおいて、「プラグイン」「フィルタ」は、1つの言葉で2つの違う意味が(同音異義語みたいなもの)あり、初心者を混乱させます。
フィルタ:
1.アクションフォームで入力チェックの際に行われる「文字列変換機能」
2.Ethna本体の実行前や実行後、アクションの実行前や実行後に走らせる特別な処理 (実行時間計測、携帯電話の機種判別など)
プラグイン:
1.Ethna本体のプラグイン機構
2.Smartyのプラグイン機構
ソースコードを読んだり開発したりしてるうちに、いつかわかってきますので、最初は無理に理解しなくてよいと思います。
MovableTypeやPukiwkiもそうですが、プラグインを使わなくても充分便利ですし、いろんなことができます。
まずは基本機能を使いこなせることを目指しましょう。
余談ですが、「フィルタ」に関しては1を「フォームフィルタ/入力フィルタ」、2を「アクションフィルタ/アプリケーションフィルタ」など適と、適切な名前に変更した方がよいと思います。
Ethna本体のソースコードを読もう
フレームワークのソースコードを読むなどという行為は、一見大変そうに見えます。上級プログラマやハッカーのやることだと思っていました。
ところがEthnaのソースコードは大変読みやすいです。
Ethnaがちょっと使えるようになってきたら、ソースコードを読むことをオススメします。
- 読みやすい。難しいコードが出てこない
- ファイル数が少ないので全体を理解しやすい
- マニュアルやEthna本を読むより、ソースコードを見たほうが早いことがある
読みやすい。難しいコードが出てこない
難しいコードや関数はほとんど出てきません。「すごいプログラマはすごいコードを書かない」と誰かが言っていましたが、まさにそのとおりです。
メソッドや変数の命名も大変シンプルでわかりやすいです。
(コードのコメントが日本語であることも心強いです。 )
PHPのコードを書く上でかなりお手本になります。
試しに、Ethna_ActionClass.phpを開いてみてください。
コードのあまりの短かさに唖然とするでしょう。
「え、アクションクラスって、たったのこれだけ?」
他にも、Ethna_ActionError.phpなんかもかなりシンプルです。
マニュアルよりソースコードの方が短いくらいです。
$this->ae->add()と$this->ae->addObject()の違いをすぐ忘れてしまう人は、一度アクションエラーのソースコードを覗いてみてください。
一発でモヤモヤがすっきりします。
私はPHPを初めてまた半年ほどですが、Ethnaのソースコードはゆっくり読めば理解できます。
「PHPを極めてからEthnaのコードを読もう」などと身構える必要はありません。
ファイル数が少ないので全体を理解しやすい
これもありがたいことです。Ethnaの全体像を理解するには、Ethna_Controller.phpの_trigger_WWW()を見てみてください。
ここだけ見れば、Ethnaの全体の流れがよくわかります。
ここを見た後で、アクションフォームなり、アクションエラーなり、自分でトピックを決めて読み進んでいけばよいと思います。
私は主要なファイルのソースコードを印刷して、カバンに入れて持ち歩いています。
ソースコードが短いので、印刷してもほんとに薄いです。(A4一枚に両面2ページずつ印刷している)
混んでる電車の中で読むにも都合が良いです
マニュアルやEthna本を読むより、ソースコードを見たほうが早いことがある
Ethnaはドキュメントが少ないですが、たいていのことはソースコードを見ればわかります。知りたいことをGoogleで検索しまくっても全然見つからないとき、ソースコードを見ると数分でわかった、ということがよくあります。
まとめ
Ethnaは初心者にやさしいフレームワークです。みんなEthnaを使いましょう!
関連記事:
5分でまっさらなWindowsにEthnaをインストールしてHello Worldを表示する方法
EthnaSmarty - WindowsにEthna+Smartyを簡単にインストールするツール
ApacheもPHPも入っていない状態のWindowsに、XAMPP + Smarty + Ethnaをインストールして"Hello World"と表示するまでを解説します。
上記URLにアクセスして、
ダウンロード > XAMPP Windows版 > EXE (7-zip) 自己解凍型7-ZIP アーカイブ
をダウンロードします。
ダウンロードした"xampp-win32-1.7.1.exe"をダブルクリックすると解凍できます。
ここではc:¥に解凍することにします。
c:¥xampp
というフォルダができたらインストールは完了です。
"XAMPP Control Panal"が立ち上がるので、ApacheとMySQLをスタートします。
XAMPPのロゴが出ればOKです。
あとは、このページの説明に従って作業すればOKです。
今回は、前回の記事「10分でWindowsにEthnaをインストールしてHello Worldを表示する方法 」の改良版です。
5分と書いてますが、熟練すればもう少し速くなります。私は3分40秒でできました。:)
この記事でインストールするのは下記ツールです。- XAMPP 1.7.1( Apache 2.2 + PHP 5.2.9 + MySQL 5.1.33 他 )
- Smarty 2.6.22
- Ethna 2.3.6
- WindowsXP Pro SP 2
- C:¥xampp
- C:¥xampp¥php¥PEAR¥Ethna
- C:¥xampp¥php¥PEAR¥Smarty
XAMPPをインストール
ダウンロードとインストール
XAMPPというのは、Apache・PHP・MySQLなどがセットになったパッケージソフトです。ダウンロード > XAMPP Windows版 > EXE (7-zip) 自己解凍型7-ZIP アーカイブ
をダウンロードします。
ダウンロードした"xampp-win32-1.7.1.exe"をダブルクリックすると解凍できます。
ここではc:¥に解凍することにします。
c:¥xampp
というフォルダができたらインストールは完了です。
起動する
解凍したxamppフォルダ内の、xampp-control.exeを起動します。"XAMPP Control Panal"が立ち上がるので、ApacheとMySQLをスタートします。
動作確認
ブラウザを立ち上げて、http://localhost/にアクセスします。XAMPPのロゴが出ればOKです。
EthnaSmartyをインストール
今回の記事のために、EthnaSmartyというのを作りました。あとは、このページの説明に従って作業すればOKです。
ApacheもPHPも入っていない状態のWindowsに、Ethnaをインストールして"Hello World"と表示するまでを解説します。
10分と書いてますが、熟練すれば5分でできますw
私の最短記録は5分30秒でした。
この記事でインストールするのは下記ツールです。
ファイル一式を所定の場所にコピーするだけなので、アンインストールしたい場合はフォルダごと削除すればきれいに削除できます。
つまり、OSのレジストリやらを汚さずに試すことができます。
それでは早速行きましょう!
上記URLにアクセスして、
ダウンロード > XAMPP Windows版 > EXE (7-zip) 自己解凍型7-ZIP アーカイブ
をダウンロードします。
ダウンロードした"xampp-win32-1.7.1.exe"をダブルクリックすると解凍できます。
ここではc:¥に解凍することにします。
c:¥xampp
というフォルダができたらインストールは完了です。
"XAMPP Control Panal"が立ち上がるので、ApacheとMySQLをスタートします。
XAMPPのロゴが出ればOKです。
これは1分でできますw
Smarty公式サイトのダウンロードページへ行きます。
http://www.smarty.net/download.php
Smarty 2.6.22 (.zip) をダウンロードします。
解凍したら、フォルダ名を"Smarty-2.6.22"→"Smarty"に変更します。
Smartyフォルダを、c:¥xampp¥php¥PEARの下に置きます。
これでSmartyは完了です。
Ethna公式サイトのダウンロードページへ行きます。
http://ethna.jp/ethna-download.html
2.3.6 zipをダウンロードします。
http://sourceforge.jp/projects/ethna/downloads/37491/Ethna-2.3.6.zip
zipファイルを解凍します。
の中のethna.batをコピーして、
c:¥windows
に置きます。 メモ帳で開いて、下記の箇所を変更します。
C:¥xampp¥php¥PEARにコピーします。
この結果、 C:¥xampp¥php¥PEAR¥Ethna¥Ethna.php
のようになっていればインストールOKです。
c:¥xampp¥htdocsの下に、"sample"プロジェクトができあがります。
http://localhost/sample/www/ にアクセスして、"hello world"が表示されたら完了です。
お疲れさまでした!
zip版でダウンロードできると、Windowsユーザには大変ありがたいのですが。。。
ご対応ありがとうございました。
10分と書いてますが、熟練すれば5分でできますw
私の最短記録は5分30秒でした。
この記事でインストールするのは下記ツールです。
- XAMPP 1.7.1( Apache 2.2 + PHP 5.2.9 + MySQL 5.1.33 他 )
- Smarty 2.6.22
- Ethna 2.3.6
- WindowsXP Pro SP 2
- C:¥xampp
- C:¥xampp¥php¥PEAR¥Ethna
- C:¥xampp¥php¥PEAR¥Smarty
ファイル一式を所定の場所にコピーするだけなので、アンインストールしたい場合はフォルダごと削除すればきれいに削除できます。
つまり、OSのレジストリやらを汚さずに試すことができます。
それでは早速行きましょう!
XAMPPをインストール
ダウンロードとインストール
XAMPPというのは、Apache・PHP・MySQLなどがセットになったパッケージソフトです。ダウンロード > XAMPP Windows版 > EXE (7-zip) 自己解凍型7-ZIP アーカイブ
をダウンロードします。
ダウンロードした"xampp-win32-1.7.1.exe"をダブルクリックすると解凍できます。
ここではc:¥に解凍することにします。
c:¥xampp
というフォルダができたらインストールは完了です。
起動する
解凍したxamppフォルダ内の、xampp-control.exeを起動します。"XAMPP Control Panal"が立ち上がるので、ApacheとMySQLをスタートします。
動作確認
ブラウザを立ち上げて、http://localhost/にアクセスします。XAMPPのロゴが出ればOKです。
Smartyをインストール
めちゃくちゃ簡単です。これは1分でできますw
Smarty公式サイトのダウンロードページへ行きます。
http://www.smarty.net/download.php
解凍したら、フォルダ名を"Smarty-2.6.22"→"Smarty"に変更します。
Smartyフォルダを、c:¥xampp¥php¥PEARの下に置きます。
これでSmartyは完了です。
Ethnaをインストール
Ethna公式サイトのダウンロードページへ行きます。
http://ethna.jp/ethna-download.html
2.3.6 zipをダウンロードします。
http://sourceforge.jp/projects/ethna/downloads/37491/Ethna-2.3.6.zip
zipファイルを解凍します。
ethna.batを設定する
Ethna-2.3.6¥bin¥の中のethna.batをコピーして、
c:¥windows
に置きます。 メモ帳で開いて、下記の箇所を変更します。
34行目と35行目
@PEAR-DIR@
↓
C:\xampp\php\PEAR
42行目
set PHP_COMMAND=php.exe
↓
set PHP_COMMAND=c:\xampp\php\php.exe
Smartyへのパスを設定する
Ethna-2.3.6¥class¥Rendererとうフォルダの、 Ethna_Renderer_Smarty.phpを開いて下記のように変更します。require_once 'Smarty/Smarty.class.php';
↓
require_once 'Smarty/libs/Smarty.class.php';
これでEthnaのインストールは完了です。Ethnaフォルダを移動する
"Ethna-2.3.6"フォルダを、"Ethna"に名前変更します。C:¥xampp¥php¥PEARにコピーします。
この結果、 C:¥xampp¥php¥PEAR¥Ethna¥Ethna.php
のようになっていればインストールOKです。
プロジェクトを作成する
コマンドプロンプトを開いて、> ethna add-project -b=c:\xampp\htdocs Sample
と入力します。
> creating directory (C:\xampp\htdocs/sample) [y/n]:
と聞かれるので"y"と入力します。c:¥xampp¥htdocsの下に、"sample"プロジェクトができあがります。
http://localhost/sample/www/ にアクセスして、"hello world"が表示されたら完了です。
Ethnaチームへのお願い
追記(2009.5.30)
Zip版ダウンロードが追加されたので、リンクを修正しました。ご対応ありがとうございました。