【PHP】Phrameを使う【フレームワーク】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/08/23 14:15ID:???※関連リンク
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:???ここ最近は初期のスレ住民からの書き込みが絶えてるし。旬も終わったな。
>>356
釣り?
0358nobodyさん
05/02/19 21:03:46ID:???コネクションしかサポートしてないけど
0360nobodyさん
05/02/19 21:50:49ID:???0363nobodyさん
05/02/19 22:38:10ID:???0365nobodyさん
05/02/20 07:07:08ID:???0366nobodyさん
05/02/20 08:03:19ID:???phpmvcから乗り換えようと思ってて、とにかく開発スピードが異様に速かったこれが目に付いた
mojaviより魅力を感じたのはUIをコンポーネント化してる部分なんだが、先輩方にはおおむね不評w
マクロメディアの製品みたいなどと言われた。よく分からん
html自体データを抽象化するものだから冗長という気もするが、俺はこのコンセプトに惚れた
テンプレートにはあれこれ書かないんだから、HTMLをパースしてオブジェクトにマッピングしてくれても
いいように思ったが、、、つかそういうのもうあるかも
青果関係のシステムを仮想目標に弄ってるんだけど、そのままだとオモイ
とにかく膨大なオブジェクトがにあるのでアクセスごとに初期化するのが苦しいようだ
JavaやASPに近づけ過ぎるとこうなるという典型のよう
あと、pearの目的に特化したライブラリに比べると機能的にはかなり薄い、DAOとか。他のフレームワークも
似たようなもんだが、バージョン2ならもうちょっと充実しててもいいんではなかろうか
書きなぐりで悪いけど第一印象はそんな感じ
コンポーネントベースなので、各部分について順に学ぶことができる。フレームワークって
なんぞやと思ってる人や、mojaviのチュートリアルじゃ覚わらんつー人なんかにはバッチリ
とりあえずさわってみて感想きぼん
0367nobodyさん
05/02/20 08:24:20ID:???別にMacromediaの専売じゃあなく、XMLでUI定義するのは流行り。
Java/Servletのゴタゴタしたカスタムタグよりだいぶマシだと思うが。
0368nobodyさん
05/02/20 09:13:52ID:???おまえらフレームワーク使いたいなら素直にJavaやれ
0369nobodyさん
05/02/20 09:20:37ID:???概念化のレベルでの完成度が高く全体を単一の仕様で固められるので魅力的。
しかしLLとしてはMojaviが正解だと信じたいね。どちらが抜けていくか知らないけれども。
0370nobodyさん
05/02/20 10:10:39ID:???mojavi2と比較してモジュールの設計が更に洗練されてるよ。
2ではrenderer、session、auth周りがごちゃごちゃしてる印象を
受けたけど、それが改善されてフレームワークとしての統一感が
強くなったように思う。
それに今までcontroller、request、userインスタンスをメソッドの引数として
受け渡ししてたけど、それらをContextクラスで管理するようなったから
かなりスマートになってる。
例えば、Actionクラスのメソッド内で
$request = $this->getContext->getRequest();
こんな感じで参照できるようになった。
あとActionChainがなくなってそれに変わる新しい機能が加わった。
Decoratorパターンを使ったグローバルテンプレートを作成する機能で
例えばメニューとメインコンテンツを表示する2つのActionがあったとして
それらを同時に表示したい場合に効果を発揮する。
まあmojaviのソースを追ってる人にとっては何を今さらと思うだろうけど。
pradoやmapleは使ったことないので、比較できないけど出来る人がいたら
レビューキボン
0372nobodyさん
05/02/20 15:15:33ID:???こりゃMapleも対抗しないとダメだね勝てないね
・・・魔法少女リリカルめいぷる?
0375nobodyさん
05/02/20 15:37:40ID:???モジャビでいいじゃん。
0376nobodyさん
05/02/20 16:15:25ID:???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()
↑
これの間違いじゃない?
0378nobodyさん
05/02/23 03:34:18ID:BVhjzCDDというエラーが出る。何でだろう?
一応、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;
}
}
?>
0379378
05/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:???$userにはMojaviのUserオブジェクトが入ってるから変数として使っちゃダメよ
0382nobodyさん
05/02/23 23:18:01ID:???0384nobodyさん
05/02/24 03:29:15ID:???ここの人のPEARの組み込み方ってかなり変じゃない?
0385nobodyさん
05/02/24 12:17:26ID:???具体的にどう変かね。DAO経由でアクセスしようとしていると思うのだけれど、
それは好みでしょ。変とかじゃないと思うが。
0386nobodyさん
05/02/24 23:39:58ID:???プログラマなら秀丸なんかより便利で高機能なプラグインが充実してる
Eclipse使うべきだし、物書きならワープロソフト買えよ。
秀丸と言う選択はねーだろ。マジで。
0392nobodyさん
05/02/25 05:18:31ID:???おはよーございます。
ところで、作者さんじゃないんですが…。
コード見ても「ふーん」くらいにしか思わないんですけど
どこが変なの?
0393nobodyさん
05/02/26 00:06:03ID:???smarty?、flexy?その他?
smartyスレで聞いたほうが良いかなぁ?
0394nobodyさん
05/02/26 03:42:18ID:???コードが変なんじゃなくて組み込み方が変なんです。
database.iniがあるのにconfig.phpにdefineしてる時点で
おかしいと思いませんか?
個人の好みでこんな書き方しちゃうなら、フレームワーク
使う必要ないと思うんですが。
0396nobodyさん
05/02/26 10:35:21ID:???天才mojaviマスターの方、日本語解説を・・・・・
0397nobodyさん
05/03/04 17:48:15ID:???0398nobodyさん
05/03/04 17:53:26ID:???なおしときますー。
や、あのロゴとページつくったの僕じゃないんですょ...(一応いいわけ)
0399nobodyさん
05/03/04 18:08:41ID:???ちなみに前者のほうが好きな色合いなだ
0400nobodyさん
05/03/04 18:50:57ID:???0401nobodyさん
05/03/12 21:30:50ID:???//----HogeListAction.class.php-------
//前略
if($request->hasParameter('hoge')){
$controller->forward('Fuga','HogeAdd');
return VIEW_NONE;
}
//後略
で、何故かうまく遷移してくれません。上記コードのreturnの前にvar_dump($request);を仕込んだら
ちゃんと$requestの内容が表示されました。
やりたいことは、Index → HogeList → HogeAddのように遷移させることです。
なにか、「ここはチェックしろ」等あったら、教えてください。
0403nobodyさん
05/03/12 22:40:25ID:???0404401
05/03/12 22:44:23ID:???即レス感謝です。
それは、別の所で散々はまったので、ちゃんと
$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:???んー、debug_backtrace()で取れるもんなのかね?使ったことないからよくわからん
ていうか処理は多分HogeAddに移ってると思うから、
HogeAdd内の処理を見直したほうがいいんじゃないだろうか
0406401
05/03/13 00:00:16ID:???別のアクションを作りながら、色んな所にecho突っ込んでみたら、
HogeAddのinitialize()の中までは来てました。
同じようにexecuteとgetDefaultViewにもecho入れてみたら、
そいつらは表示されませんでした。
んー、HogeAdd内の処理ですか。特に何もしてないんですけどね。
長いと言われたので一旦切ります。
0407401
05/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:???0409401
05/03/13 00:04:34ID:???今、試しにvalidate()の返り値をtrueにしてみたら、ちゃんと表示したいモノが表示されました。
てことは、validate()の中で、場合分けしてやればいいんですね。
もしかしてコレが、>>402の
> GET | POSTがそのままforward先のActionに伝わるのを見落としてるとか
に関わってくるんでしょうか?
うーん、謎だ。
0411nobodyさん
05/03/13 00:08:27ID:???0412401
05/03/13 00:18:36ID:???>>405のレスをヒントに内容を見直しました。
>>407で$form->addRule()してたヤツを全部Viewに移したら、
ちゃんと望み通りの動作になりました。
つまり、HogeList → HogeAddに遷移したときにinitializeに書いてある$form->addRule()に
反応して、validate()が意図しないところで働いてくれたため、というのが真相のようです。
>レスしてくれた方々
どうもありがとうございました。
0413401
05/03/13 02:21:19ID:???Viewに鯖側の$form->addRule()を書いても利きませんです。
なので、>409の通りにvalidate()の中で、場合分けするのがいいみたいです。
一応、訂正だけ。
0414nobodyさん
05/03/13 04:14:53ID:???リクエストがそのまま渡るから、getRequestMethods()で返されてるメソッドがきた場合に
Validatorが動作しちゃって、前のActionに渡したつもりのパラメータが検証されてしまう
そういうこともあってどうしてもController::redirect()を多用することになっちゃうんだよなー
何かうまい解決法はあるんだろうか
0415nobodyさん
05/03/13 05:35:05ID:???これ使えるんかな、でもActionForwardで呼びたいのは大抵execute()だろうしなぁ
0416nobodyさん
05/03/13 14:59:06ID:???漏れは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:???なんか似たような事ではまったような記憶があるな
とりあえず遷移ステップを中継するhiddenの値は遷移後に
HTML_QuickFormのsetConstantsメソッドで指定し直すようにしてる
なんか全然違う事言ってたら申し訳
それはそうと入力の検証ってやっぱみんな
HTML_QuickFormのヴァリデータ機構でやってるんだろうか
mojaviのヴァリデータ機構もいい感じだと思うんだけど
0418nobodyさん
05/03/13 19:04:44ID:???例えばこんな感じですかね?
$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のヤツも併用できそうな気がするので併用するつもりではあります。
0419418
05/03/13 22:52:13ID:???結局、調べてみた結果こうするのが一番漏れのやりたいことに近かったもより。
$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:???最初の環境設定(のテスト?)で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:???355行目付近は次のようになっていて、
$logger =& LogManager::getLogger();
set_error_handler(array(&$logger, 'standard'));
set_error_handler()は
> 注意: 関数名の代わりにオブジェクトへのリファレンスとメソッド名を含む配列
> を指定することもできます。(PHP 4.3.0以降)
なので、コールバック関数名で呼び出すように書き換えるしか無いかと。
面倒なので 初っ端のerror_reporting()を E_ALLから変更するつーのもありですが。
0422420
05/03/14 23:34:17ID:???E_ALLをE_WARNINGとかにしてもエラーが発生するとおかしくなるので
コールバック関数もどきを作ってみたところ、なんとか動いているようです。
ありがとうございました。
0423nobodyさん
05/03/16 10:35:22ID:pIL2c+VLmojaviの掲示板に、testControllerとかあったけど、よくわからんかった。
0424nobodyさん
05/03/16 10:47:23ID:???0426nobodyさん
05/03/16 13:04:36ID:???ttp://forum.mojavi.org/lofiversion/index.php/t355.html
0427nobodyさん
05/03/18 05:02:19ID:???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.php見れ。
0429nobodyさん
05/03/18 21:29:25ID:???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:???よくわかんないけど、自分が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:???元のアクションと、先のアクションが同じ名前だと、クラスを再定義した!errorをphpが吐いて
アボートするけど、仕様?
0432nobodyさん
05/03/19 01:28:25ID:???ほんとだ、変なこと書いてるね
正しくは「validate()でtrueを返すとexecute()、falseを返すとhandleError()を実行」
>>430
残念ながら仕様と思われ
上でも書いたがforward()ってば微妙に使えん
PHPにネームスペースがあればなぁ・・・
0433nobodyさん
05/03/19 15:09:09ID:???原文見てみたらその部分の記述がないね。
・原文は間違いに気づいて該当部分を削除したが、意訳はそのまま。
・単なる原文の意訳(著作権違反?)ではアレなので
独自の見解を加筆して大失敗。
さて、どっちだろ。
0434nobodyさん
05/03/19 16:18:18ID:???>正しくは「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:???書き手の方ですか。
2つあったとして、そのどちらも
>これは「入力の検証を有効にする」というスイッチです。(もしvalidateメソッドを省略した場合はActionからFALSEで継承されます)
というのは間違ってませんか。
また、
>Mojavi2の古いヴァージョンじゃ、そういう仕組みだったんじゃなかろか。って思ったんだけどね。
って想像で書いてどうすんの。
著作権に対する意見をお聴きしたのですがいかが。
0436nobodyさん
05/03/19 22:50:03ID:???TContentPlaceHolderとTContentの組み合わせがかなり使いやすい
使える独自コンポーネントもいくつか出てきてて、コンポーネント指向の設計が
上手く生きてるなぁと思いますた
0437429
05/03/19 22:53:57ID:???えーと、なんか勘違いされてます?
>>429 = >>434 です。
私が、推測したのは
mojavi2の仕様変更でもあったのではないか?
それに伴い、チュートリアルも書き直された。
が、日本語訳は変更前を元にしていた為昔のままの記述になった。(日本語訳の後に元が変更された)
みたいな事でもあったか?という程度の話です。
実際、今のmojavi2の実装とは、合わない記述なので、参考までに誤りを指摘しただけで、
別段、糾弾だのする気は毛頭ないですし(というか両サイトとも大いに参考にさせていただいてますし)
あと、wikiの方は、きちんと原作者に許可を得ている旨、書かれていたように思いますけど。
0439nobodyさん
2005/03/23(水) 03:40:33ID:???気に入った。
日本語解説してるとこ無いみたいなんで、つくります。
是非みんなもMojavi3 + Propel + Creole = Pure Heavenを体験してくれ
0441nobodyさん
2005/03/23(水) 13:31:45ID:???モデリングツールなのか。
0442nobodyさん
2005/03/24(木) 01:27:52ID:???ADOdbだとわざわざ新しく作らなきゃいかんでしょ?
creoleはデフォで対応してる。
そしてPHP5が使える職場へ移動することをオススメします。
0443nobodyさん
2005/03/25(金) 00:05:10ID:???ってどこにいれてる?
漏れは/usr/local/lib/php/mojaviなんだが、
webappと同階層でもいい気がしてまつ。
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:???向こうでもレスしたが、頼むから最小限のコードを晒してくれ。
B(aview)->C(caction)に直接 $request の内容を渡すのは不可能(だったと思う)。
普通は(というか漏れのやり方では)、
A->B->A->C->D
という風にしてる。
とりあえず、BとCでそれぞれ別々にvar_dump($request)してみ。
0447445
2005/03/26(土) 13:11:17ID:ZLYZLtNYレスありがとう。推移は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へ
}
0448445
2005/03/26(土) 13:11:57ID:ZLYZLtNYC.
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で結果表示
という流れでなんですがね。
0449445
2005/03/26(土) 14:00:46ID:???Cでは存在しません。
A->Cというのは、$controller->foword()でいいんでしょうか。
それだと$requestの内容を引き渡せるのでしょうか。
0450nobodyさん
2005/03/26(土) 14:22:16ID:???まず
× SUCCESS
○ VIEW_SUCCESS
> var_dump($request)してみました。オブジェクトはBでは存在しますが
> Cでは存在しません。
当たり前。
> A->Cというのは、$controller->foword()でいいんでしょうか。
その通り。
> それだと$requestの内容を引き渡せるのでしょうか。
多分いける。
漏れの場合、オブジェクトじゃなくて単なる数字とか文字列とかでやってたけど、確かいけた。
$datalistとやらが変化しないのであればいける。変化するのであれば無理。$_SESSION使え。
自信はないけどこんな感じでいいか?
0451450
2005/03/26(土) 14:24:52ID:???最後のは嘘。
漏れの場合はformでhiddenしてRequest::getParameter()してた。
でも、$SESSION使うといけるのはホント。
0452445
2005/03/26(土) 15:11:46ID:???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:???session_start()の前にクラス定義を読み込んでおかないと
セッションでそのクラスをうまく渡せない
Mojaviのsession_start()はSessionContainerがload()されるタイミング(Controller::dispatch()内)
なので、その前にクラス定義を読み込むか、
インスタンスではなく必要なメンバ変数の中身をセッションに乗せるかすればいい
漏れは後者でやってるな
0456nobodyさん
2005/03/27(日) 09:59:43ID:IW5S1bKC//AAction::execute()内
$datalist = new DataList()
$user->setAttribute( 'datalist', $datalist );
//CAction::execute()内
$datalist = $user->getAttribute( 'datealist' )
じゃダメ?
■ このスレッドは過去ログ倉庫に格納されています