サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
夏の料理
ethna.jp
属性設定例 以下に、幾つかの設定例を挙げますので、ご参考にして下さい。 sampleというテキストボックス(表示名「サンプル」)に16〜32文字の英字のみ許可(必須): $form = array( 'sample' => array( 'name' => 'サンプル', 'required' => true, 'min' => 16, 'max' => 32, 'regexp' => '/^[a-zA-Z]+$/', 'form_type' => FORM_TYPE_TEXT, 'type' => VAR_TYPE_STRING, ), ); foobar というテキストボックスに、全角ひらがなのみを入力することを許可する場合(必須) regexp 属性と異なり、正規表現にスラッシュを付ける必要がないことに注意して下さい。*6 $form = array( 'foobar' => a
はじめに ここでは、以下のコマンドで sample プロジェクトと sample アクションを作ったものとして説明します。 $ ethna add-project sample $ ethna add-action sample アプリケーションマネージャ の作成 まず最初にAppManagerを作成します。例として、アプリケーションマネージャー名を 「hoge」としてみましょう。以下のように実行することで、app/Sample_HogeManager.php が自動生成されます。 中身は以下のようになるでしょう。 $ ethna add-app-manager hoge と実行することで <?php /** * Sample_HogeManager.php * * @author {$author} * @package Sample * @version $Id: skel.app
書いた人: いちい フォーム値の自動検証を行う(プラグイン編) Ethna_Plugin_Validatorを使ったフォーム値の検証について説明します。主に,プラグインが導入される以前の方式に慣れている方のための説明です。 概要 Ethna_ActionForm::validate()に,プラグインを使ったフォーム値の検証処理が追加されました。 できるかぎり後方互換性を維持しつつ,プラグインを使ってフォーム値の検証処理が簡単に拡張できるようになりました。これまでcustomメソッドを使っていた処理も,プラグイン化することで取り扱いが簡単になるでしょう。 具体例 Fileプラグインは,アップロードされたファイルの検証に特化した,新たに追加されたプラグインです。 アクションフォームで var $use_validator_plugin = true; var $form = array(
システム固有の値 dsn $config = array( 'dsn' => 'mysql://user:pass@unix+localhost/dbname', ); のようにdsnというkeyにDSNを記述することでBackendからgetDBによってDBオブジェクトが 呼び出されてコネクトするときのDSNを指定することができます。 log log関係の値は以下のような感じ。詳細はまだわかっていないのでくわしい人書いてください。 'log_facility' => 'file', 'log_level' => 'warning', 'log_option' => 'pid,function,pos', 'log_alert_level' => 'crit', 'log_alert_mailaddress' => '', 'log_filter_do' => '', 'log_fi
Ethna > ドキュメント > 開発マニュアル 開発マニュアル 実際の開発に必要になりそうなドキュメントがまとめてあります。ドキュメントがない部分については順次追加予定です(ユーザの方々によるドキュメントもお待ちしています:)。 基本編 アクション定義 フォーム定義・入力の自動検証 遷移先定義 エラー処理 応用編 セッションを利用する データベースアクセス 実践編 言語とエンコーディングの設定(2.5.0 preview1以降) Ethna 2.5.0 preview1以降で追加された言語設定に関する説明です。 複数のエントリポイントを作成する /index.phpに加えて、/user/index.phpや/admin/index.phpのように複数のエントリポイントを簡単に作ることができます エントリポイント毎に実行可能なアクションを制限する 「/admin/index
ログをファイルに出力する ログレベルに応じてアラートメールを送信させる 概要 EthnaではEthna_Loggerクラスを使ってアプリケーションのログを管理しています。 どういうときにログが出力されるか ログが出力されるタイミングは loggerにログ出力が指示されたとき $logger =& $backend->getLogger(); $logger->log(LOG_NOTICE, "メッセージ"); Ethna::raiseError()などが実行されたとき $errobj =& Ethna::raiseError("エラーだよ[%s]", E_USER_ERROR, $err_submsg); trigger_error()やfatal errorなどが発生したとき trigger_error("大変だ!エラーだよ!"); の合計3通りがあります。エラー関連についてはエラー
Ethna > ethna-yakiniku > ethna-yakiniku-meeting > Ethna 焼肉会議 議事録 Ethna 焼肉会議 議事録 2009年1月25日に、焼肉をつつきながらEthna について話す会が開かれました。非常に中身が濃く、有意義なものでした。 その議事録を以下にアップします。こうした議論を元に、これからのEthnaの進化にご期待下さい。 DBレイヤの抽象化 何がなくとも最優先。2.5.0 preview4 に。 これを実現し、様々なライブラリやインターフェイスをプラガブルにする -> 最優先 AppObject 捨てでいいと思う 捨てるとして、既存のORMを取り込むか、ライブラリを使うかを決める ActionForm との連携をとりやすくするのが何よりも重要 プラグインどうする? DB の次に優先度が高い 名前空間が複数(master, lo
Ethna > ドキュメント > 開発マニュアル > ethnaコマンドリファレンス ethnaコマンドリファレンス アプリケーション構築手順(1) のページにあるように、Ethna では、プロジェクトの作成から、作成されたプロジェクトに関わる様々な操作を ethna コマンドと呼ばれるコマンドラインから行えるようになっています。 ethna コマンドには様々なサブコマンドが用意されており、プロジェクトに対する様々な操作が行えます。このページでは、ethnaコマンドで出来ることをリファレンスとして紹介します。 プロジェクトの作成 add-project コマンド (使い方) $ ethna add-project [-b|--basedir=dir] [-s|--skeldir] [-l|--locale] [-e|--encoding] [Application id] プロジェク
Ethna > ドキュメント > 開発マニュアル > 変更点一覧 > Ethna 2.3.0 から 2.5.0 への移行ガイド Ethna 2.3.0 から 2.5.0 への移行ガイド Ethna 2.3.x で作った古いプロジェクトを新しいバージョン 2.5.x 系に対応させるためのガイドラインです。(これに従えばうまくいく、というわけではありません。必ずバックアップを用意した上で、確認しながら作業するようにしてください。) ※ Ethna 2.1.0 から 2.3.0 への移行については、こちら を御覧下さい。 タグの説明 2.3.x から 2.5.x に移行する際の考慮点として、 「必ずチェックし、対応すべき点」([必須]) 「移行の際に注意すべき点」([注意]) の2つのレベルがあります。[必須]は、以前のバージョンとの互換性がない変更であり、移行する人が必ずチェックする必要
注意! : この機能を利用するためには、Ethna 2.3.2 以降が必要です。 個々のEthnaプロジェクト毎にPEARパッケージを管理する 複数の Ethna のプロジェクトを作ると、 それらでひとつの PHP のインス トールを共有する状況が往々にして起こります。こういう場合、PEAR のイン ストール設定は共有されてしまい、特定のパッケージを特定の Ethna プロジ ェクト用にアップグレード/削除/追加 したいといった要求に応えることが難 しくなります。 また、レンタルサーバに代表されるように、PEAR パッケージを簡単にインス トールするのに管理者権限(root)が必要とされる場合も少なくありません。 この場合は、パッケージを手動でダウンロードしてきて include_path が通 った場所に展開(Ethna プロジェクトでは多くの場合 [APP_DIR]/lib)するわ
書いた人: いちい 概要 EthnaでSmartyを使う場合に利用できる、組込みの便利なプラグイン(modfier, function, block)についての説明です。 基本的に Ethna_ViewClass で提供されているヘルパ関数や、 php の組込み関数、 Ethna_Util の関数などを呼び出すラッパーになっています。 modifier {...|number_format} number_format()関数のラッパーです。 入力 {"12345"|number_format} 出力 12,345 {...|strftime} strftime()関数のラッパーです。 入力 {"2004/01/01 01:01:01"|strftime:"%Y年%m月%d日"} 出力 2004年01月01日 {...|count} (配列にたいする) count() 関数のラッ
書いた人:key ネタ元:ethna-users:0615〜 フォーム定義を動的に変更する ActionFormに記述するフォーム名や定義は固定なので、 データベースに保存された情報を元にフォームを作成した場合に うまく処理することができません。 動的な定義も含めてActionFormの中で完結させたいところですが、 ActionForm内にはロジックが書けないため、 データベースのインスタンスを拾うなどして フォーム定義を動的に変更することができません。 次のような方法で逃げることができます(内部的にはフォーム定義の処理が2回走ると思うので、あまりイケてる方法とはいえません)。 どこに書くか? prepare()もしくはperform()に処理を記述すればよいですが、 バリデーションのタイミングを考えるとprepare()に処理を 書いたほうがスマートです。 というわけでprepar
フォーム値の自動検証を行う(カスタムチェック編) 当然ですが、値の最小値や最大値、正規表現だけで全ての入力をチェックできるケースばかりとは限りません。アプリケーションによって、数々のパターンの入力チェックが必要になることと思います。 カスタムチェックの利用方法 この場合、アプリケーション固有のメソッドでチェックを行うことも可能で、具体的な手順は以下のようになります。 フォーム値の'custom'属性にメソッド名を記述する 1.で指定したメソッドをアクションフォームクラスに定義する 1.については簡単で: /** * @access private * @var array フォーム値定義 */ var $form = array( 'sample' => array( 'name' => 'サンプル', 'required' => true, 'custom' => 'checkSam
Ethna で コマンドラインから利用するスクリプトを書く。 はじめに Webアプリケーション を書いていると、コマンドラインから利用するスクリプトを書きたくなるときがあるかもしれません。たとえばバッチ処理や、データベースのテストデータ生成等、Webアプリケーションのメインの処理からは外れた、細々とした処理が考えられます。 たとえば、「データベースのデータを集計して集計用のテーブルに書き込む」という一定時間毎に実行する単純なバッチ処理を考えてみましょう。新たに接続処理やクエリを流す処理を 独自に書きたくない なぁと思いませんか? こうした場合は、既にあるフレームワークの枠組みを使い回せると便利な場合があります。 Ethna は、こうした場合もきちんと考慮して設計されています。 以下では、Ethnaの枠組みを利用しつつ、コマンドラインスクリプトを書く方法を説明します。 コマンドライン用
Ethna > ドキュメント ドキュメント デモ Ethnaを用いたデモを紹介します チュートリアル Ethnaでアプリケーションを作るための基本的な流れについて説明しています。初めてEthnaを使う方はお読み下さい 開発マニュアル 大まかな動きがつかめた後は、こちらのガイドをご参考ください クラスリファレンス クラスリファレンスはこちらを参照してください FAQ FAQ一覧へのリンクはこちらです 変更点一覧 Ethnaの変更履歴はこちらです ロードマップ 開発ロードマップはこちらをご覧ください バージョンルール 一応バージョニングの規則について書いてみました
ページャを作成する 書いた人:shoma 概要 検索結果やリストの一覧などのページにGoogle風のページリンクを作成します。 Ethna_Util::getDirectLinkList()を使用してページャを作成します。 Ethna_Util::getDirectLinkList(全データ数, 表示オフセット, 1ページあたりに表示する件数)となっています。以下の例ではstartが指定されるオフセットになっています。 Pagerを作成する例 function perform() { $this->total = 100; $this->offset = $this->af->get('start') == null ? 0 : $this->af->get('start'); $this->count = 10; $this->getPager(); return 'index';
クロスサイトリクエストフォージェリの対策コードについて 概要 EthnaはPOSTとGETを区別しないため、クロスサイトリクエストフォージェリ(以下CSRF)については一般的なリンクによる攻撃でもCSRFが成立します。 例として、 認証が必要なDeleteアクションを外部の人間がCSRFを利用して実行する場合を考えてみます。 DeleteアクションはidをPOSTされるとそのidを持つカラムを削除する機能をもっていたとします。だいたい以下のような実装です。 DeleteActionForm -- 中略 -- 'id' => array( 'name' => 'id', 'type' => VAR_TYPE_INT, 'form_type' => FORM_TYPE_TEXT, 'required' => true, ), 'submit' => array( 'name' => 'su
フォームへルパの概要 フォームヘルパは、Smartyのテンプレートでフォーム(<form>, <input>タグなど)を書くときに、アクションフォームであらかじめ定義された情報から適切なタグを自動的に生成し、フォームを簡単に記述することができるSmartyプラグインです。 その実装の大部分はEthna_Renderer_SmartyではなくEthna_ViewClassが持っているため、本当はSmartyに限らずさまざまなレンダラで利用可能なはずですが、現時点ではSmartyしかレンダラが用意されていないのでまとめて書いてあります。 具体例 簡単なフォーム ActionFormのメンバ変数$formに書いたデータを $form = array( 'foo' => array( 'type' => VAR_TYPE_STRING, 'form_type' => FORM_TYPE_TE
Ethna > ドキュメント > 開発マニュアル > PATH_INFOを使ったRequest-URIからのパラメータの取得 PATH_INFOを使ったRequest-URIからのパラメータの取得 書いた人: いちい 概要 Request-URIからパラメータを取得したいときは、Ethna_UrlHandlerクラスを使うと便利です。 Ethna_UrlHandlerは次の2つの機能を持っています。 PATH_INFOからaction, リクエストパラメータへの変換 エントリポイントとPATH_INFOからactionを決定する PATH_INFOから$_REQUESTなどにパラメータをインポートする コントローラに組込み済み action, パラメータからPATH_INFO(に相当するパス文字列)への変換 actionからエントリポイントを決定 その他のパラメータからPATH_IN
Ethna > ドキュメント > チュートリアル > 動作概要 動作概要 Ethnaは(当初)Strutsの構造を模倣して作られました。そのため、基本的な動作はStrutsに類似しています。また代表的なPHPフレームワークの一つである、Mojaviにも良く似ています。 (1) 非常に大雑把な動作イメージ とても大雑把には、Ethnaの動作イメージは以下の図のようになっています。 クライアントはControllerクラスにアクセスします Controllerクラスは、クライアントのリクエストに対応する処理が定義されているAction Class(という名前の)オブジェクトを生成し、実行します Action Classオブジェクトは処理(例えば、ログインやデータベースの更新等)を実行し、結果をControllerオブジェクトに返します ControllerオブジェクトはAction C
Ethnaでアプリを作ってみましょう。 書いた人:itoh@http://www.itt-web.net/bwiki/index.html サンプルダウンロード 私がEthnaで実際にアプリを作る時にこうやるなーって現時点での感じです。サンプルもダウンロードで来ます。表示はWindows風味になっていますがもちろんUnix系でも問題ないです。 今回は、ニュース更新スクリプトを書きます。要件は 表画面から新着順にニュースが表示される 管理画面からニュースの編集が出来る 公開日時と掲載終了日時を設定できて、その期間のみ表示 プロジェクトを作る 適当なところに作ります。 C:\...\Ethna\bin>php generate_project_skelton.php ittsample sample1 最初、適当なところに作ってしまっても移動させる際には、あとでエントリポイント(index
ここではEthnaを利用したアプリケーションの構築手順について簡単にご説明します。 (0) アプリケーション情報の決定 アプリケーションを構築する前に、少なくとも以下の2点を決定しておく必要があります。 アプリケーションID(英字のみ) 例: Sample アプリケーション配置ディレクトリ(どこでも構いません) 例: /home/example/codes/とかC:\codes\php\とか適当に (1) スケルトンの作成 インストール時に配置した ethna スクリプトを利用してアプリケーションのスケルトンをコマンドプロンプトを使って生成します。 具体的には、アプリケーションIDが「sample」、アプリケーション配置ディレクトリが/tmpだとすると以下のようになります(CGI版もしくはCLI版のphpが必要です)。 $ ethna add-project error occur
はてな認証を使う 株式会社はてなが提供しているはてな認証APIをEthnaの上で使ってみます。 はてなのアカウントを持っている人だけがアクセスできるようにする。 はてなアカウントをとる。APIの設定を行う。 http://auth.hatena.ne.jp/help/apiを参考にしてAPI_KEYと秘密鍵を発行してください。APIキーと秘密鍵はAuth_Hatenaクラスで必要になります。コールバックURLはアプリケーションのLoginアクションを呼ぶようにしてください。今回の場合 http://example.com/hoge/huga/index.php?act=login のような感じです。 必要なライブラリのインストール はてな認証を利用するには、Auth_HatenaとAuth_Hatenaの上で利用されるJsphonが必要です。libフォルダの下など、include_
フィルタチェインを使用する まずフィルタチェインとは何か、からご説明させていただきます。なんだか大層な名前が付いていますが、「フィルタ」がやることは簡単で: アクションの処理の前と後に呼び出されて任意の処理(入力や出力変換等)を行う というものです。そして、この「フィルタ」はN重にネストさせることができるので「フィルタチェイン」と呼ばれているわけです*1。図にすると以下のような感じです。 概念も簡単なら実装も簡単で、以下のようになります。 コントローラの$filterメンバにフィルタクラス名を追加します フィルタディレクトリ(デフォルトではapp/filter)に"1.で追加したクラス名" + ".php"というファイル名でEthna_Filterを継承したクラスを記述します prefilterメソッドとpostfilterメソッドを実装します 以上で終了です。 これだけでは分かりにくい
Ethna > 概要 > フレームワーク比較 > フレームワーク一覧 フレームワーク一覧 koyhogeさんの日記もご参照ください。 Mojavi 最近では、PHPのフレームワークと言えばこれ、というくらい広がってきています。フィルタチェインや、割と徹底したモジュールデザインが特長です。 symfonyやagaviなどの多くのPHPフレームワークがMojaviを参考にしています。 EthnaもMojaviのフィルタチェインなどを少しだけ参考にしています。 MojaviはMojavi2がPHP4,PHP5両方で使えるフレームワークだったのに対し、 バージョンアップしたMojavi3がPHP5でしか使えない事、また、その後の 開発速度が遅くなった為に現在では最盛期ほどの活気はなくなっています。 Phrame 昔はフレームワークと言えばコレでした。Strutsの移植版、といった趣ですがあ
概要 SimpleTest を使った Ethna でのユニットテストの方法です。 Simpletest は、様々なユニットテストの実行、レポートの出力形式に対応したPHP向けのテスティングフレームワークです。 テスト実行環境の作成 SimpleTestのインストール まずはSimpletestをインストールする必要があります。インストールには以下の二つの方法があります。 PEARコマンドを使ってインストールする # pear channel-discover pear.ethna.jp # pear update-channels # pear install ethna/simpletest 直接ダウンロードしてインストールする http://sourceforge.net/projects/simpletest debugフラグの設定(必須!) 設定ファイル(etc/{a
Ethna > ドキュメント > 開発マニュアル > ethna-document-dev_guide-app > EthnaでShift_JISなサイトを作る EthnaでShift_JISなサイトを作る 書いた人:cocoiti 概要 Ethnaは、内部コードがEUC-JPでできています。(変換かければ、どうにでもなりますが)。 基本的に問題はないのですが、携帯サイトなどを作る時に、やむえず、出力をShift_JISにしたくなるときがあります。 その方法について記述していきます。 なお、以下のポリシーで記述しています。 内部コードはEUC-JP 入力コードはShift_JIS(自動判別のフィルタを書く方法は別途記述) 出力コードはShift_JIS(sjis-win) 内部コードはEUC-JPで書く 各種テンプレート(HTML、メール)も含め通常通り、EUC-JPで記述します
次のページ
このページを最初にブックマークしてみませんか?
『Ethna - PHPウェブアプリケーションフレームワーク』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く