トップページ⇒php
1001コメント326KB

【PHP】Phrameを使う【フレームワーク】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/08/23 14:15ID:???
PHP用フレームワーク「Phrame」について語るスレ

※関連リンク

Phrame本家
http://phrame.sourceforge.net/

PHPでMVC第1回:前編
https://www.stackasterisk.jp/tech/php/phpMvc01_01.jsp

開発談義/FrameWorkはどれがいい? - PukiWiki
http://w-project.org/pukiwiki/index.php?%B3%AB%C8%AF%C3%CC%B5%C1%2FFrameWork%A4%CF%A4%C9%A4%EC%A4%AC%A4%A4%A4%A4%A1%A9
0357nobodyさん05/02/19 21:01:15ID:???
良スレと思っていたら Mojavi や Maple の認知が上がるに従い質低下、挙げ句、自分以下探しで荒れる、と。
ここ最近は初期のスレ住民からの書き込みが絶えてるし。旬も終わったな。

>>356
釣り?
0358nobodyさん05/02/19 21:03:46ID:???
できてるよ。
コネクションしかサポートしてないけど
0359nobodyさん05/02/19 21:31:40ID:???
>>357
もっと具体的に言ってごらん?
0360nobodyさん05/02/19 21:50:49ID:???
Phramest
0361nobodyさん05/02/19 22:29:21ID:???
>>358
ごめん。コネクションまでは確認したんですよ。
その先の話。
0362nobodyさん05/02/19 22:36:42ID:???
>>357
そう思うのはかまわないけど、その連中にまじって一緒に質の低い書き込み
をするなよ。
0363nobodyさん05/02/19 22:38:10ID:???
フレームワークも知らずにWebプログラマを語るな。
0364nobodyさん05/02/19 22:40:38ID:???
>>363
誰がWebプログラマを語ってたの?
0365nobodyさん05/02/20 07:07:08ID:???
昨日突然錯乱した厨房!今日も期待してるぞww
0366nobodyさん05/02/20 08:03:19ID:???
夜を徹してprado使ってみたよ
phpmvcから乗り換えようと思ってて、とにかく開発スピードが異様に速かったこれが目に付いた
mojaviより魅力を感じたのはUIをコンポーネント化してる部分なんだが、先輩方にはおおむね不評w
マクロメディアの製品みたいなどと言われた。よく分からん

html自体データを抽象化するものだから冗長という気もするが、俺はこのコンセプトに惚れた
テンプレートにはあれこれ書かないんだから、HTMLをパースしてオブジェクトにマッピングしてくれても
いいように思ったが、、、つかそういうのもうあるかも

青果関係のシステムを仮想目標に弄ってるんだけど、そのままだとオモイ
とにかく膨大なオブジェクトがにあるのでアクセスごとに初期化するのが苦しいようだ
JavaやASPに近づけ過ぎるとこうなるという典型のよう
あと、pearの目的に特化したライブラリに比べると機能的にはかなり薄い、DAOとか。他のフレームワークも
似たようなもんだが、バージョン2ならもうちょっと充実しててもいいんではなかろうか

書きなぐりで悪いけど第一印象はそんな感じ

コンポーネントベースなので、各部分について順に学ぶことができる。フレームワークって
なんぞやと思ってる人や、mojaviのチュートリアルじゃ覚わらんつー人なんかにはバッチリ
とりあえずさわってみて感想きぼん
0367nobodyさん05/02/20 08:24:20ID:???
>>366
別にMacromediaの専売じゃあなく、XMLでUI定義するのは流行り。
Java/Servletのゴタゴタしたカスタムタグよりだいぶマシだと思うが。
0368nobodyさん05/02/20 09:13:52ID:???

おまえらフレームワーク使いたいなら素直にJavaやれ
0369nobodyさん05/02/20 09:20:37ID:???
PRADOが良く見えるのはフレームワークとしての輪郭がはっきりしているからだろう。
概念化のレベルでの完成度が高く全体を単一の仕様で固められるので魅力的。
しかしLLとしてはMojaviが正解だと信じたいね。どちらが抜けていくか知らないけれども。
0370nobodyさん05/02/20 10:10:39ID:???
俺はmojavi3使ってる
mojavi2と比較してモジュールの設計が更に洗練されてるよ。
2ではrenderer、session、auth周りがごちゃごちゃしてる印象を
受けたけど、それが改善されてフレームワークとしての統一感が
強くなったように思う。
それに今までcontroller、request、userインスタンスをメソッドの引数として
受け渡ししてたけど、それらをContextクラスで管理するようなったから
かなりスマートになってる。
例えば、Actionクラスのメソッド内で
$request = $this->getContext->getRequest();
こんな感じで参照できるようになった。
あとActionChainがなくなってそれに変わる新しい機能が加わった。
Decoratorパターンを使ったグローバルテンプレートを作成する機能で
例えばメニューとメインコンテンツを表示する2つのActionがあったとして
それらを同時に表示したい場合に効果を発揮する。

まあmojaviのソースを追ってる人にとっては何を今さらと思うだろうけど。
pradoやmapleは使ったことないので、比較できないけど出来る人がいたら
レビューキボン
0371nobodyさん05/02/20 15:08:26ID:???
>>370
mapleはPradoやMojavi3と比較できるもんじゃないな。
Mojavi3はまだデブなんでなんとも
0372nobodyさん05/02/20 15:15:33ID:???
久しぶりに公式見たらMojaviに曲まで付いててワロタ
こりゃMapleも対抗しないとダメだね勝てないね

・・・魔法少女リリカルめいぷる?
0373nobodyさん05/02/20 15:23:11ID:???
>>369
Javaユーザでプリミティブなものが好きな人間もいると思うが
0374nobodyさん05/02/20 15:33:30ID:???
>>370
じぶんで使ってみた方が早くない?
0375nobodyさん05/02/20 15:37:40ID:???
モハビって言いにくいよね。
モジャビでいいじゃん。
0376nobodyさん05/02/20 16:15:25ID:???
Mojavi3のマニュアルの
http://wiki.mojavi.org/143.html
このページで
$this->getContext()->databaseManager()->getDatabase($name)->getConnection()
$this->getContext()->databaseManager()->getDatabase($name)->getResource()
↑こう書いてあるけど

$this->getContext()->getDatabaseManager()->getDatabase($name)->getConnection()
$this->getContext()->getDatabaseManager()->getDatabase($name)->getResource()
↑
これの間違いじゃない?
0377nobodyさん05/02/21 00:25:07ID:???
>>365
結局お前が最後の錯乱厨だったみたいだな…
0378nobodyさん05/02/23 03:34:18ID:BVhjzCDD
 Call to a member function on a non-object in /var/www/php/mojavi/mojavi/mojavi-all-classes.php on line 413
というエラーが出る。何でだろう?
一応、viewの方でvar_dump($request)してみたらDBからデータは来てたケド、
漏れは何か変な事してるんですかね?
コードは、
TestAction.class.php
<?php
class TestAction extends Action
{
    function execute (&$controller, &$request, &$user)
    {
        //DBからデータを取得
        require_once('adodb/adodb.inc.php');
        $db = &ADONewConnection('postgres');
        $server = 'localhost';
        $user = 'hoge';
        $password = 'password';
        $database = 'test';
        $db->PConnect($server, $user, $password, $database);
        $table = 'test';
        $res = $db->Execute("select * from $table order by id");
        $request->setAttribute('message',$res->GetRows());

        $res->free();
        return VIEW_SUCCESS;
    }
}
?>
037937805/02/23 03:35:04ID:???
続き
TestView_success.class.php
<?php
class TestView extends View
{
    function &execute (&$controller, &$request, &$user)
    {
        $renderer =& $request->getAttribute('SmartyRenderer');
        $renderer->setTemplate('Result2.html');

        $renderer->setAttribute('title','簡単なテスト');
        return $renderer;
    }
}
?>

長すぎと言われたので二回に分けました。
0380nobodyさん05/02/23 04:41:27ID:???
Actionのexecuteで$userに'hoge'を入れてる
$userにはMojaviのUserオブジェクトが入ってるから変数として使っちゃダメよ
0381nobodyさん05/02/23 12:02:50ID:???
>>380
ありがとう。とりあえず、一つ解決しました。
0382nobodyさん05/02/23 23:18:01ID:???
誰かMojaviの日本語マニュアル書けよ。
0383nobodyさん05/02/24 00:42:56ID:???
>>382
ガンガレ

期待してるぞ。
0384nobodyさん05/02/24 03:29:15ID:???
http://ozaki.kyoichi.jp/mojavi3/index.html
ここの人のPEARの組み込み方ってかなり変じゃない?
0385nobodyさん05/02/24 12:17:26ID:???
>>384
具体的にどう変かね。DAO経由でアクセスしようとしていると思うのだけれど、
それは好みでしょ。変とかじゃないと思うが。
0386nobodyさん05/02/24 23:39:58ID:???
おいお前等こんな貧乏臭いシェアなんか使うなよ。馬鹿にされんぞ?
プログラマなら秀丸なんかより便利で高機能なプラグインが充実してる
Eclipse使うべきだし、物書きならワープロソフト買えよ。
秀丸と言う選択はねーだろ。マジで。
0387nobodyさん05/02/24 23:49:17ID:???
>>386
誤爆?
0388nobodyさん05/02/25 00:01:07ID:???
>>386
多くの職業物書きがエディタで書いてることを知らない誤爆クン。
まあ秀丸を使ってるかは別だが。
0389nobodyさん05/02/25 00:50:04ID:???
emacsのキーバインドが使えれば何でもええよ。
>>382 期待してるぞ
0390nobodyさん05/02/25 01:19:42ID:???
>>382は超がんがれ。
0391nobodyさん05/02/25 04:30:05ID:???
>>385
作者さんがそう思われるなら…もうなにもいうまい
0392nobodyさん05/02/25 05:18:31ID:???
>>391
おはよーございます。
ところで、作者さんじゃないんですが…。
コード見ても「ふーん」くらいにしか思わないんですけど
どこが変なの?
0393nobodyさん05/02/26 00:06:03ID:???
mojavi使おうと思ってるんだけど、template engineって何が良いだろうか?
smarty?、flexy?その他?

smartyスレで聞いたほうが良いかなぁ?
0394nobodyさん05/02/26 03:42:18ID:???
>>392
コードが変なんじゃなくて組み込み方が変なんです。
database.iniがあるのにconfig.phpにdefineしてる時点で
おかしいと思いませんか?
個人の好みでこんな書き方しちゃうなら、フレームワーク
使う必要ないと思うんですが。
0395nobodyさん05/02/26 09:12:37ID:???
>>394
それはmojavi3の新機能なの?
mojavi2しか使ってないからdatabase.iniなんて知らなかったよ。
0396nobodyさん05/02/26 10:35:21ID:???
mojavi3、もちっとドキュメントを・・・・・・・
天才mojaviマスターの方、日本語解説を・・・・・
0397nobodyさん05/03/04 17:48:15ID:???
フジモトセンセ、Ethna Power"e"dだと思うのですが・・・
0398nobodyさん05/03/04 17:53:26ID:???
おっとすごいとこでツッコミをいただきましたね。ありがとうございます。
なおしときますー。

や、あのロゴとページつくったの僕じゃないんですょ...(一応いいわけ)
0399nobodyさん05/03/04 18:08:41ID:???
こんな過疎スレに即レスがあってビビってる漏れガイル
ちなみに前者のほうが好きな色合いなだ
0400nobodyさん05/03/04 18:50:57ID:???
ちょうどEthnaの時間だったので。だいぶ偶然ですねー。
0401nobodyさん05/03/12 21:30:50ID:???
mojaviであるアクションを別のアクションに遷移させるとき以下のようなコードを書きますよね?
//----HogeListAction.class.php-------
//前略
if($request->hasParameter('hoge')){
$controller->forward('Fuga','HogeAdd');
return VIEW_NONE;
}
//後略
で、何故かうまく遷移してくれません。上記コードのreturnの前にvar_dump($request);を仕込んだら
ちゃんと$requestの内容が表示されました。
やりたいことは、Index → HogeList → HogeAddのように遷移させることです。
なにか、「ここはチェックしろ」等あったら、教えてください。
0402nobodyさん05/03/12 22:13:44ID:???
>>401
GET | POSTがそのままforward先のActionに伝わるのを見落としてるとか
0403nobodyさん05/03/12 22:40:25ID:???
mojaviのすれはPhrameだったのか・・・
040440105/03/12 22:44:23ID:???
>>402
即レス感謝です。
それは、別の所で散々はまったので、ちゃんと
$request->removeAttribute()
$request->removeParameter()
しています。

実際は以下のように、いくつかの条件分岐があります。
if($request->hasParameter('hoge')){
$controller->forward('Fuga','HogeAdd');
return VIEW_NONE;
}elseif("別の条件"){
$controller->forward('Fuga','HogeEdit');
return VIEW_NONE;
}
ここで、念のためにHogeEditに飛べるかどうか試してみたところ、画面が切り替わり意図した表示となりました。

それで解決のためにログを取りたいのですが、遷移の様子を全てログに記録するには、どのようにすればいいのでしょうか?
0405nobodyさん05/03/12 23:41:07ID:???
>>404
んー、debug_backtrace()で取れるもんなのかね?使ったことないからよくわからん
ていうか処理は多分HogeAddに移ってると思うから、
HogeAdd内の処理を見直したほうがいいんじゃないだろうか
040640105/03/13 00:00:16ID:???
>>405
別のアクションを作りながら、色んな所にecho突っ込んでみたら、
HogeAddのinitialize()の中までは来てました。
同じようにexecuteとgetDefaultViewにもecho入れてみたら、
そいつらは表示されませんでした。

んー、HogeAdd内の処理ですか。特に何もしてないんですけどね。
長いと言われたので一旦切ります。
040740105/03/13 00:00:50ID:???
コードはこんな感じ。
class HogeAddAction extends Action
{
    function initialize (&$controller, &$request, &$user)
    {
        $form = new HTML_QuickForm('HogeAdd', 'post');
        //色々$form->addElement()とか$form->addRule()とかしてるけど長いので略
        $request->setAttribute("form", $form);
        echo 'これは表示された';
        return TRUE;
    }
    function validate(&$controller, &$request, &$user)
    {
        $form =& $request->getAttribute("form");
        return $form->validate();
    }
    function execute (&$controller, &$request, &$user)
    {
        echo 'これは表示されなかった';
        return VIEW_INDEX;
    }
    function getDefaultView (&$controller, &$request, &$user) {
        return VIEW_INDEX;
    }
    function getRequestMethods () {
        return REQ_POST;
    }
}
0408nobodyさん05/03/13 00:02:38ID:???
$request->hasParameter('hoge')はちゃんとtrueを返してる?
040940105/03/13 00:04:34ID:???
連投スマソ。

今、試しにvalidate()の返り値をtrueにしてみたら、ちゃんと表示したいモノが表示されました。
てことは、validate()の中で、場合分けしてやればいいんですね。
もしかしてコレが、>>402の
> GET | POSTがそのままforward先のActionに伝わるのを見落としてるとか
に関わってくるんでしょうか?

うーん、謎だ。
041040105/03/13 00:06:58ID:???
>>408
それは、何度もvar_dump()で確認しているので大丈夫です。
>>401の後半にも確認した方法が書いてありますです。
0411nobodyさん05/03/13 00:08:27ID:???
おおっと、これは失礼した
041240105/03/13 00:18:36ID:???
なんとか解決しました。
>>405のレスをヒントに内容を見直しました。
>>407で$form->addRule()してたヤツを全部Viewに移したら、
ちゃんと望み通りの動作になりました。

つまり、HogeList → HogeAddに遷移したときにinitializeに書いてある$form->addRule()に
反応して、validate()が意図しないところで働いてくれたため、というのが真相のようです。

>レスしてくれた方々
どうもありがとうございました。
041340105/03/13 02:21:19ID:???
>412はちょっと嘘です。
Viewに鯖側の$form->addRule()を書いても利きませんです。
なので、>409の通りにvalidate()の中で、場合分けするのがいいみたいです。

一応、訂正だけ。
0414nobodyさん05/03/13 04:14:53ID:???
それもMojaviのActionFowardで陥りやすいミスだわな
リクエストがそのまま渡るから、getRequestMethods()で返されてるメソッドがきた場合に
Validatorが動作しちゃって、前のActionに渡したつもりのパラメータが検証されてしまう

そういうこともあってどうしてもController::redirect()を多用することになっちゃうんだよなー
何かうまい解決法はあるんだろうか
0415nobodyさん05/03/13 05:35:05ID:???
と思ってコード見てたらRequest::setMethod()があるのか
これ使えるんかな、でもActionForwardで呼びたいのは大抵execute()だろうしなぁ
0416nobodyさん05/03/13 14:59:06ID:???
>>414
漏れはQF使っているので<form>のhiddenでmoduleとactionを、変化させながら持ち回ろうとしたら、
上手くいかなくて困っています。$request->removeAttribute()とか$request->removeParameter()とかしても
moduleとaction(正確にはhiddenで廻してきた値)はうまく消えてくれない(遷移先のViewの<form>で復活してる)。
var_dump($reqest)してみたらなんか_submit=array()の中にhiddenで廻した値が入ってて、
$request->removeAttribute()とか$request->removeParameter()とかでmoduleやactionを消しても
そこに残っているのが廻ってくるらしい。

仕方がないので、$controller->forward()で
Index → HogeList → HogeAddという遷移の場合はexecute()内で
Indexに来たときに変数fugaを持ってたら、HogeListへ
HogeListで変数fugafugaを持っていたらHogeAddへという風なことをやって
見た目には動いているように出来たんですが、どこでsubmitしても、
必ずIndex経由で行こうとするので、処理を追っかけるのがしんどいです。

#チラシの裏逝きかな?

>>415
Request::setMethod()ってGET使うかPOST使うか設定するものじゃないんですか?
0417nobodyさん05/03/13 17:21:40ID:???
>>416
なんか似たような事ではまったような記憶があるな
とりあえず遷移ステップを中継するhiddenの値は遷移後に
HTML_QuickFormのsetConstantsメソッドで指定し直すようにしてる
なんか全然違う事言ってたら申し訳

それはそうと入力の検証ってやっぱみんな
HTML_QuickFormのヴァリデータ機構でやってるんだろうか
mojaviのヴァリデータ機構もいい感じだと思うんだけど
0418nobodyさん05/03/13 19:04:44ID:???
>>417
例えばこんな感じですかね?
$form->setConstants(array('module' => 'Hoge', 'action' => 'HogeFuga'));

漏れは
$form = new HTML_QuickForm('HogeFuga', 'post', 'index.php?module=Hoge&action=HogeFuga');
でやってた。この方法の欠点は、アドレスバーに表示されるActionと遷移先のActionが一致しないこと
(場合によってはmoduleも一致しない)
>>417のやり方は良さそうなのであとで試してみます。

入力値の検証は今のところ、QFのを使ってる。
まあ、必要になったらmojaviのヤツも併用できそうな気がするので併用するつもりではあります。
041941805/03/13 22:52:13ID:???
>>417
結局、調べてみた結果こうするのが一番漏れのやりたいことに近かったもより。
$form->updateElementAttr('module', array('value'=>'Hoge));
$form->updateElementAttr('action', array('value'=>'HogeList'));
これで、hiddenでmoduleとactionを持ち回るのは完璧っぽいです。

結局mojaviとはあまり関係なくてQFの使い方って方向になってしまいました。
#QFマニュアルの翻訳早く進まないかなー。
0420nobodyさん05/03/14 17:03:16ID:???
Linux上でMojavi2を使おうとしています。
最初の環境設定(のテスト?)でindex.phpのdie(...)行をコメントアウトすると
PHP4.3.3だと動作するのですが、PHP4.2.3だと
Notice: Array to string conversion in /path/to/mojavi/lib/mojavi-all-classes.php on line 355
となってしまいます。
ディストリの都合で4.2.3で使用したいのですが
対策をどなたかご存じないでしょうか。
0421nobodyさん05/03/14 17:20:18ID:???
>>420
355行目付近は次のようになっていて、
$logger =& LogManager::getLogger();
set_error_handler(array(&$logger, 'standard'));

set_error_handler()は
> 注意: 関数名の代わりにオブジェクトへのリファレンスとメソッド名を含む配列
> を指定することもできます。(PHP 4.3.0以降)

なので、コールバック関数名で呼び出すように書き換えるしか無いかと。
面倒なので 初っ端のerror_reporting()を E_ALLから変更するつーのもありですが。
042242005/03/14 23:34:17ID:???
>>421
E_ALLをE_WARNINGとかにしてもエラーが発生するとおかしくなるので
コールバック関数もどきを作ってみたところ、なんとか動いているようです。
ありがとうございました。
0423nobodyさん05/03/16 10:35:22ID:pIL2c+VL
あの、ActionとかViewクラスのテストってどうしてます?
mojaviの掲示板に、testControllerとかあったけど、よくわからんかった。
0424nobodyさん05/03/16 10:47:23ID:???
mojaviの掲示板ってどこですかぁ
0425nobodyさん05/03/16 13:03:55ID:???
>>424
本家のフォーラムのことでしょう。
それ位汲んであげてもいいんジャマイカ?
0426nobodyさん05/03/16 13:04:36ID:???
多分これ。
ttp://forum.mojavi.org/lofiversion/index.php/t355.html
0427nobodyさん05/03/18 05:02:19ID:???
mojavi のテンプレートエンジンを
HTML_Template_Flexyにしようと思っています。

smartyを参考に作ったのですが、
ここの箇所が必要なのかわかりません。

// assign smarty variables
$this->setAttributeByRef('controller', $controller);
$this->setAttributeByRef('mojavi', $controller->getMojavi());
$this->setAttributeByRef('request', $request);
$this->setAttributeByRef('user', $user);

function setAttributeByRef ($name, &$value)
{
$this->engine->assign_by_ref($name, $value);
}
当然のことながらFlexyのソメッドにassign_by_refはなく、
controller,mojavi,request,userのオブジェクトを渡しても意味がない気がします。
0428nobodyさん05/03/18 07:01:15ID:???
FlexyにもSmartyのassign, assign_by_refに当たるメソッドがある。
Flexy.php見れ。
0429nobodyさん05/03/18 21:29:25ID:???
ttp://mojavi.try-angle.biz/wiki/index.php?Mojavi%A5%C1%A5%E5%A1%BC%A5%C8%A5%EA%A5%A2%A5%EB1#content_1_10
ttp://www.stackasterisk.jp/tech/php/mojavi04_01.jsp#2

これ両方とも間違ってるなぁ(情報が古いのかな?)

>function validate (&$controller, &$request, &$user)
>{
>return TRUE;
>}
>これは「入力の検証を有効にする」というスイッチです。(もしvalidateメソッドを省略した場合はActionからFALSEで継承されます)

Actionクラスのメソッドは素で、TRUEを返すだけ(つまり、上の関数のまんま)
validateをオーバーライドするのは、カスタムでヴァリデータを書くときだなぁ。

ここで、TRUEが帰るのは、カスタムヴァリデータでのヴァリデーションに成功した。
FALSEは、同、失敗した。
だなぁ。
0430nobodyさん05/03/18 23:20:16ID:???
>>429
よくわかんないけど、自分がmojavi+Smarty+HTML_QuickForm+adodbでやってるヤツでは
こうなってるよ。
function validate(&$controller, &$request, &$user) {
    $form =& $request->getAttribute("form");
        return $form->validate();
}

だから、あなたの言ってることが正しいと思う。
#ちなみに、一時的にvalidateをスルーさせたいときはreturn trueさせてまつ。

0431nobodyさん05/03/19 00:18:49ID:???
mojavi2で、あるモジュールから別のモジュールに$controller->foward()で飛ばすときに
元のアクションと、先のアクションが同じ名前だと、クラスを再定義した!errorをphpが吐いて
アボートするけど、仕様?
0432nobodyさん05/03/19 01:28:25ID:???
>>429
ほんとだ、変なこと書いてるね
正しくは「validate()でtrueを返すとexecute()、falseを返すとhandleError()を実行」

>>430
残念ながら仕様と思われ
上でも書いたがforward()ってば微妙に使えん
PHPにネームスペースがあればなぁ・・・
0433nobodyさん05/03/19 15:09:09ID:???
>>429
原文見てみたらその部分の記述がないね。
・原文は間違いに気づいて該当部分を削除したが、意訳はそのまま。
・単なる原文の意訳(著作権違反?)ではアレなので
 独自の見解を加筆して大失敗。
さて、どっちだろ。
0434nobodyさん05/03/19 16:18:18ID:???
>>432
>正しくは「validate()でtrueを返すとexecute()、falseを返すとhandleError()を実行」
それもちょっと書き足らないかも。

ヴァリデータは2つある。
1つは、action::validate()
もう1つは、ValidatorManager(こっちが、action::registerValidators()で定義される奴)
でもって、両方ともTRUEを返したときにaction::execute()、以外はaction::handleError()

>>433
Mojavi2の古いヴァージョンじゃ、そういう仕組みだったんじゃなかろか。って思ったんだけどね。

昔は、実際にスイッチとして使ってた。
今は、常にヴァリデートしてる(ただし、デフォのヴァリデートルールが、なんでもOKになってる)

って感じかと思って書いたんだけどね。
0435nobodyさん05/03/19 22:35:24ID:???
>>434
書き手の方ですか。
2つあったとして、そのどちらも
>これは「入力の検証を有効にする」というスイッチです。(もしvalidateメソッドを省略した場合はActionからFALSEで継承されます)
というのは間違ってませんか。
また、
>Mojavi2の古いヴァージョンじゃ、そういう仕組みだったんじゃなかろか。って思ったんだけどね。
って想像で書いてどうすんの。

著作権に対する意見をお聴きしたのですがいかが。
0436nobodyさん05/03/19 22:50:03ID:???
PRADO 2.0出てるね
TContentPlaceHolderとTContentの組み合わせがかなり使いやすい

使える独自コンポーネントもいくつか出てきてて、コンポーネント指向の設計が
上手く生きてるなぁと思いますた
043742905/03/19 22:53:57ID:???
>>435
えーと、なんか勘違いされてます?
>>429 = >>434 です。

私が、推測したのは
mojavi2の仕様変更でもあったのではないか?
それに伴い、チュートリアルも書き直された。
が、日本語訳は変更前を元にしていた為昔のままの記述になった。(日本語訳の後に元が変更された)

みたいな事でもあったか?という程度の話です。

実際、今のmojavi2の実装とは、合わない記述なので、参考までに誤りを指摘しただけで、
別段、糾弾だのする気は毛頭ないですし(というか両サイトとも大いに参考にさせていただいてますし)

あと、wikiの方は、きちんと原作者に許可を得ている旨、書かれていたように思いますけど。
0438nobodyさん05/03/20 10:32:00ID:???
>>436
PRADOって重過ぎない?
0439nobodyさん2005/03/23(水) 03:40:33ID:???
Creole初めていぢった。
気に入った。
日本語解説してるとこ無いみたいなんで、つくります。
是非みんなもMojavi3 + Propel + Creole = Pure Heavenを体験してくれ
0440nobodyさん2005/03/23(水) 13:16:25ID:???
>>439
ADOdb+Smartyでよくね?
っていうかPHP5だと仕事で使えないからションボリなだけですが。
0441nobodyさん2005/03/23(水) 13:31:45ID:???
スマソ。超適当な事言ってた。
モデリングツールなのか。
0442nobodyさん2005/03/24(木) 01:27:52ID:???
>>440
ADOdbだとわざわざ新しく作らなきゃいかんでしょ?
creoleはデフォで対応してる。
そしてPHP5が使える職場へ移動することをオススメします。
0443nobodyさん2005/03/25(金) 00:05:10ID:???
mojavi-all-classes.php
ってどこにいれてる?
漏れは/usr/local/lib/php/mojaviなんだが、
webappと同階層でもいい気がしてまつ。
0444nobodyさん2005/03/25(金) 15:52:15ID:???
>>443
好きにすればいい
0445nobodyさん2005/03/26(土) 11:32:53ID:???
別スレから誘導されました。マルチですみません。
php4.2.3,mojavi2を使ってデータ加工をするプログラムを作っているのですが、インスタンスの受け渡しが上手くいきません。
推移は A(aaction)->B(aview)->C(caction)->D(cview)
インスタンスをAからDまで持ち回したいのですが、B->Cへデータが渡りません。
状況は以下のとおりです。
A
$request->setAttribute('datalist', $datalist);
B
Bでは受け渡しは何もしていません。
print_r($request->getAttribute('datalist'));
は出力されます。
インスタンスのメソッドも実行可能でした。
C
$datalist = $request->getAttribute('datalist');
print_r($datalist);
出力されません。

何か、怪しいところ、解決のヒントをいただけないでしょうか。
よろしくお願いいたします。
(別スレで質問文をアドバイスいただいた方には感謝します。)
0446nobodyさん2005/03/26(土) 12:26:09ID:???
>>445
向こうでもレスしたが、頼むから最小限のコードを晒してくれ。
B(aview)->C(caction)に直接 $request の内容を渡すのは不可能(だったと思う)。

普通は(というか漏れのやり方では)、
A->B->A->C->D
という風にしてる。

とりあえず、BとCでそれぞれ別々にvar_dump($request)してみ。
04474452005/03/26(土) 13:11:17ID:ZLYZLtNY
>>446
レスありがとう。推移はB->Cですが、Bではこのデータについて何もしてません。
最小限のコードといわれてもどこまで書けばいいのか…改行が多すぎるといわれて蹴られたので
分けてアップします。
A.
class AAction extends Action {
//execute()が実行される動作は略
 function execute(&$controller, &$request, &$user)
 {
  $datalist = new DataList()//クラス宣言等は省略
  $request->setAttribute('datalist', $datalist);
  return SUCCESS;
 }
}
B.
class AView extends View {
//特にdatalistについては何もしない
//Aの結果表示「完了しました」等の表示と次の処理をする「ボタン」の表示
//ボタンクリックでCへ
}
04484452005/03/26(土) 13:11:57ID:ZLYZLtNY
続きです。
C.
class CAction extends Action {
//execute()が実行される動作は略
 function execute(&$controller, &$request, &$user)
 {
  $datalist = $request->getAttribute('datalist');
  //$datalist は空。NGが表示される。
  if (empty($datalist))
   print 'NG';
  } else {
   print 'OK';
  }
  //念のため…
  print_r($datalist);
  //何も表示されない
 }
}
Aのデータ処理->Bで結果表示と次への進行確認->Cで次のデータ処理->Dで結果表示
という流れでなんですがね。
04494452005/03/26(土) 14:00:46ID:???
var_dump($request)してみました。オブジェクトはBでは存在しますが
Cでは存在しません。
A->Cというのは、$controller->foword()でいいんでしょうか。
それだと$requestの内容を引き渡せるのでしょうか。
0450nobodyさん2005/03/26(土) 14:22:16ID:???
>>447-449
まず
× SUCCESS
○ VIEW_SUCCESS

> var_dump($request)してみました。オブジェクトはBでは存在しますが
> Cでは存在しません。
当たり前。

> A->Cというのは、$controller->foword()でいいんでしょうか。
その通り。

> それだと$requestの内容を引き渡せるのでしょうか。
多分いける。
漏れの場合、オブジェクトじゃなくて単なる数字とか文字列とかでやってたけど、確かいけた。
$datalistとやらが変化しないのであればいける。変化するのであれば無理。$_SESSION使え。

自信はないけどこんな感じでいいか?
04514502005/03/26(土) 14:24:52ID:???
自己レス。
最後のは嘘。
漏れの場合はformでhiddenしてRequest::getParameter()してた。

でも、$SESSION使うといけるのはホント。
04524452005/03/26(土) 15:11:46ID:???
>>451
A.
class AAction extends Action {
 function execute(&$controller, &$request, &$user)
 {
  $datalist = new DataList()//クラス宣言等は省略
  $_SESSION['datalist'] = $datalist;
  return VIEW_SUCCESS;
 }
}
C.
class CAction extends Action {
//execute()が実行される動作は略
 function execute(&$controller, &$request, &$user)
 {
  $datalist = $_SESSION['datalist'];
  var_dump($datalist);
 }
}
で、
object(__PHP_Incomplete_Class)(2) { ["__PHP_Incomplete_Class_Name"]=>…
となってしまうのですが、session_start等はmojaviにやってもらってるので
どうしましょうか。
0453nobodyさん2005/03/26(土) 15:38:43ID:???
物ログって知ってる?
ブログ、ソーシャルネットワーキングに続く
次世代コミュニティーサービスのこと。
YOUTYでは無料でWEB上に自分のバーチャルな部屋を持って
書籍,CD,DVD,ゲーム等,趣味,生活に関する情報を
WEB上で公開する事ができるコミュニティーサービスのこと。
http://youty.jp/
0454nobodyさん2005/03/26(土) 17:16:42ID:???
>>452
session_start()の前にクラス定義を読み込んでおかないと
セッションでそのクラスをうまく渡せない
Mojaviのsession_start()はSessionContainerがload()されるタイミング(Controller::dispatch()内)
なので、その前にクラス定義を読み込むか、
インスタンスではなく必要なメンバ変数の中身をセッションに乗せるかすればいい
漏れは後者でやってるな
0455nobodyさん2005/03/26(土) 18:25:53ID:???
>>453
代表取締役の百田浩志さんは相当アホですねw
0456nobodyさん2005/03/27(日) 09:59:43ID:IW5S1bKC
>>452

//AAction::execute()内
$datalist = new DataList()
$user->setAttribute( 'datalist', $datalist );


//CAction::execute()内
$datalist = $user->getAttribute( 'datealist' )

じゃダメ?
■ このスレッドは過去ログ倉庫に格納されています