トップページ⇒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
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' )

じゃダメ?
04574452005/03/28(月) 14:28:08ID:???
レスありがとうございます。解決しました。
>>454
最初は、デフォルトで添付されてるfilterを弄って動作させてて、(grepしました)
なんだかスマートさに書けるなぁと思っていたら、そんなことしなくてもよかったですね。
>>456
$userにもAttributeがあったのね(恥)。それでOKでした。
その方がmojaviらしいです。
正直、ViewからActionへAttributeは渡らないということについて
なぜソースソースと田舎の洋食屋のように言うのかわからなかったんですが
(渡ってない事実を質問してるのにvar_dumpさせるのもよくわからないんですけど)
こういうアドバイスにつながるんですね。
ありがとうございました。
0458nobodyさん2005/03/28(月) 15:27:56ID:???
>>457
よかったね。
でも、ソース晒すのは当たり前だよ。
100行の文章よりも10行のソースの方がわかりやすいからね。
ソース見た方が何してるかが一目瞭然だし。
0459nobodyさん2005/03/28(月) 21:00:20ID:???
mojaviでflexyを使うべく試行錯誤しています。

mojaviは各モジュールにテンプレートフォルダを持っています。またグローバルな
テンプレートフォルダも持っています。
flexyはinstance作成時に引数としてoptions(テンプレート、コンパイルフォルダ
の場所)を渡さなければなりません。

このような場合各モジュールにあるテンプレートフォルダを無視して
グローバルに統一したほうがflexyのラパークラスとしてすっきりしますか?
0460nobodyさん2005/03/28(月) 22:56:28ID:???
>>459
お好きなように。
自分がわかりやすい方法でやるのがいいんじゃないかな。
0461nobodyさん2005/03/29(火) 04:10:37ID:???
mojavi2って、ロガークラスで
E_USER_ERROR -> warning
E_USER_WARNING -> fatal
って逆になってるような気がするんだけど、なんか意味あんの?
0462nobodyさん2005/03/30(水) 17:22:13ID:???
mojaviテンプレート使用している場合のイメージはどうしていますか。
階層化されたサイトの場合
イメージは公開フォルダに入れないといけなくてパスの管理が面倒です。
0463nobodyさん2005/03/30(水) 17:48:23ID:???
index.phpから見えるようにすればいいだけだと思う。
0464nobodyさん2005/03/30(水) 17:56:55ID:???
>>462
階層化ってどういう意味でおっしゃられていますか?
ページコントローラモードを含む場合?
モジュール毎に画像ディレクトリやCSSディレクトリを変更したい場合は、
config.phpで定義されているWEB_MODULE_DIR定数をなんらかの形でテンプレー
ト変数に設定してやればいいと思います。

webapp/config.php:
/**
* An absolute web path where modules can store public information such as
* images and CSS documents.
*/
define('WEB_MODULE_DIR', '/modpub/');
0465nobodyさん2005/03/31(木) 00:32:35ID:???
階層化とはhtmlのフォルダ階層のことです。
例えば
/index
|
|/products/
|/info/

このような階層の場合products/層には製品の写真とか入ります。
0466nobodyさん2005/03/31(木) 20:04:45ID:???
>>465
申し訳ありませんが、意図が掴めません。

462の質問に回答するなら、Mojaviテンプレートを使用しようが、しまいが、
ディレクトリが階層化されていようが、いまいが、公開イメージファイルはド
キュメントルート以下に置きますし、非公開イメージファイルはドキュメント
ルート外に置きisSecure()がtrueなアクションから出力することになるでしょ
う。

パスの管理という意味ではSCRIPT_PATH環境変数やMojaviが提供する定数を駆
使してなんらかのテンプレート変数化を行えば良いと思います。
0467nobodyさん2005/04/02(土) 17:44:36ID:???
やっぱみんな mod_rewriteつかってるのか?
0468nobodyさん2005/04/05(火) 22:29:28ID:???
ところでPhrameってなんて読みますか?
ぴーふれいむ?
0469nobodyさん2005/04/06(水) 01:32:13ID:???
>>468
フレームって読む。
フレーズとかのスペル知ってる?phrase って書くでしょ
0470nobodyさん2005/04/06(水) 16:29:00ID:???
中学で習うよな・・・
0471nobodyさん2005/04/06(水) 16:50:08ID:???
GNOME や GNU があるからと思ったのかな
0472nobodyさん2005/04/07(木) 11:18:01ID:ZERwNqG/
PHPによる自作のMVCモデルのフレームワークを考えているのですが、
モデルとビューを分けるメリットが分かりません。
コントローラーとその他を分けるのはとても分かりやすいのですが、
モデルとビューは密接に関わっているのでわざわざ分けてしまうと
面倒ではないですか?
0473nobodyさん2005/04/07(木) 12:27:27ID:???
メリットがわからないなら分けなければいいだけじゃねえの?
0474nobodyさん2005/04/07(木) 15:41:20ID:???
>>472
モデルとビューが密接に関わっている、って具体的にどういうこと?
例えば、モデルが保持している情報を出力する際にユーザーエージェントに応じて
HTML/XHTML/CHTMLのいずれかで出力する必要がある、という場合には普通モデルと
ビューを分けると思うんだけど。
0475nobodyさん2005/04/09(土) 21:43:17ID:???
>>472
>モデルとビューは密接に関わっているので

はぁ?密接に関わるような作り方してんの?基礎からやりなおしたほうがいいよ。
04764722005/04/09(土) 23:31:56ID:???
>>475
お前はホントアホだな。
モデルとビューは密接に関わってんだろうが。
デザインとロジックの話じゃねーぞ?
0477nobodyさん2005/04/09(土) 23:48:13ID:???
475じゃないけどとりあえず具体的に書いてもらわきゃわからんな
モデルとビューを分離しないなら
似たようなビジネスロジックのコードを何度も書く事にならないかい?
0478nobodyさん2005/04/10(日) 00:36:15ID:???
つか、デザインとロジック分離するために、MVCフレームワーク使うんじゃないのか?
つか、MVを分離する利点がわからないのに、なんで、MVCフレームワーク作るんだ!とか思うわけ?

理解できない。
0479nobodyさん2005/04/10(日) 02:25:31ID:???
472はMVCが理解できてない、ということでFA?
0480nobodyさん2005/04/10(日) 02:32:37ID:???
>>472
モデル=数値データだとすると、ビューは折れ線グラフ、棒グラフ、ヒストグラム、スプレッドシートなんかにできるわけです。
ビューとモデルが密接になっていると上のような「単一モデルに対して複数ビューを持つ」というのが作りにくくなります。
よって、きちんと分割してしまった方が良いのです。
0481nobodyさん2005/04/10(日) 08:53:44ID:???
>>476はまずオブジェクト指向の入門本でも読んだら?
0482nobodyさん2005/04/10(日) 09:14:34ID:???
>>476
やっぱりあなたは基礎から勉強するべきです。
テンプレートも含めて『View』ですよ?
0483nobodyさん2005/04/10(日) 16:30:05ID:???
自作フレームワークを作成中、同僚に手伝ってもらったときに、
ライブラリ用のディレクトリを置く場所について嘘をついてしまいました。
本当はhtdocs以下になくていいのに、なきゃいけないと嘘を教えてしまった
のですが、どうしたら気づかれずにhtdocsより上の階層に置き換えて
しらばっくれることができるでしょうか。
0484nobodyさん2005/04/10(日) 18:35:27ID:???
>>483
シンボリックリンクで外のフォルダとくっつけて、
ほ〜ら、コンテンツの維持が楽だよ〜と
ふんで Apache の設定でリンク不許可
こーすれば安心!

って違うよね・・
0485nobodyさん2005/04/10(日) 19:14:54ID:???
相手の立場で考えれば、
小細工されるより正しいやり方の指示を受け その上で謝罪もあれば尚良し、
だろうねぇ。
「だから最初にhtdocs以下じゃなくてもいいんじゃないの?って聞いたじゃん」
って言われる事くらい覚悟すれ。
つーか今でもその疑惑を持っていると思われ。早い方がいいよ。
0486nobodyさん2005/04/10(日) 21:48:54ID:???
>>483
あまりにしょうもない質問だな。
強いて言うなら「open_basedirの設定変えたから置けるようになったよ!」とか…。
しかしどのみち無知を晒す結果にしかならないだろうから、
素直に謝りなさい。
0487nobodyさん2005/04/13(水) 01:18:10ID:???
>>483
ワロタ こういうのほのぼのしていいね。
丸く収まることを祈ります。
0488nobodyさん2005/04/13(水) 17:26:46ID:???
昨日からmojavi公式に繋がらないんだが
落ちてるのか
0489nobodyさん2005/04/13(水) 17:45:12ID:???
オイラは繋がるよ。
ttp://69.61.21.69/ は?
Moving to a new server
April 11th, 2005
We're schedule to move to our new server tonight.
DNS will be updated tomorrow. While the DNS propogates, you may see an outage.
Have no fret, once your DNS cache is updated, all will be working well.
Outages may start occuring tomorrow.
0490nobodyさん2005/04/13(水) 19:55:56ID:???
>>489
サンクス!
そっちは繋がったよ。
なるほど新しい鯖に引っ越したのね
まだwww.mojavi.orgは引けないけど
DNSキャッシュの更新待ちなのかな
田舎のISPだとこんなものか
0491nobodyさん2005/05/01(日) 00:56:23ID:???
mojaviでユーザの登録、編集、削除とかの一連の処理をするときって、
ユーザ登録Action、ユーザ編集Action、ユーザ削除Actionって別々でつくるのがいいのか、
ユーザActionつくってそのなかに登録、編集、削除メソッドつくるのがいいかどっちでしょう。
それとも別のいいやりかたありますか?
0492nobodyさん2005/05/02(月) 15:29:49ID:???
>>491
ケースバイケース。
大体は一枚でやってます。
0493nobodyさん2005/05/06(金) 16:11:02ID:???
>>491
私見ですが、

前者のメリット
o Mojaviの権限管理機構を使って機能毎に細かく制御可能。
o execute()内のケースがシンプルになる。

前者のデメリット
o そのままでは登録・編集のバリデーションコードが重複するためメンテナン
スしにくい。

後者のメリット
o 登録・編集のバリデーションコードが重複しないためメンテナンスしやすい。

後者のデメリット
o Mojaviの権限管理機構を登録・編集等の機能毎の制御に使えない。
o execute()内のケースが複雑になる。

といったところです。バリデーションコードを重複しないように工夫できれば
前者がお勧めです。
04944912005/05/08(日) 16:37:14ID:???
>>492>>493
ありがとうございます。

>後者のメリット
>o 登録・編集のバリデーションコードが重複しないためメンテナンスしやすい。
これに関してですが、後者の場合はデメリットになりえます。
削除処理でも登録、編集のバリデーションが発動してしまうので、M3なんかだと手の施しようがないんですよね…
権限については、hasCredentialなんかもあるので、それでやりくりは可能だと思います。
個人的には後者のメリットは、素人考えですがよりオブジェクトっぽくなるかなというところだと思ってます。

>o execute()内のケースが複雑になる。
これも、登録、編集のクエリをそのままメソッド名に使っちゃえばいいのでそんなに複雑にはならないのではないでしょうか?

バリデーションの重複については、M2では共通の親Actionで継承できたのに、M3ではAction名のバリデーションファイル
を作らなければいけなくなったので、重複しちゃうんですよね。
0495nobodyさん2005/05/09(月) 17:12:20ID:???
複雑というか饒舌な感じになってしまいますが
登録/編集/削除フラグを立ててValidateメソッド内で条件分岐しております。
0496nobodyさん2005/05/09(月) 19:42:36ID:???
>>495
M2の話だよね?
0497nobodyさん2005/05/10(火) 03:49:56ID:???
http://fandc.co.jp/
↑エロゲサイトにまで使われるmojavi
0498nobodyさん2005/05/10(火) 16:07:43ID:???
http://ozaki.kyoichi.jp/mojavi3/quickform.html
↑
ここのひとって、

$form =& $request->getAttribute('form');

ってやってるけど、php5ってオブジェクトはデフォルトで参照渡しになるんじゃなかったっけ?
&いらないんじゃね?
0499nobodyさん2005/05/10(火) 17:04:29ID:???
>>497
そのサイトのどこにMojavi使われてるの?
まさか「majo2」がURLにあったからなんて言わないよね。

でもって釣られた俺、南無。
0500nobodyさん2005/05/10(火) 17:08:13ID:???
>>498
明示しちゃ駄目な訳でもなし。
0501nobodyさん2005/05/10(火) 17:13:36ID:???
>>499
クマーだがあえて釣られてみる。

色んなコンテンツにアクセスしてみればすぐわかる。
0502nobodyさん2005/05/10(火) 17:50:29ID:???
>>499
はぁ?
エラー画面に思いっきりmojavi関連のものが出てるだろw
0503nobodyさん2005/05/10(火) 18:02:37ID:???
色々クリックしてみたけど、エラー画面なんて出ないな。
0504nobodyさん2005/05/10(火) 18:04:27ID:???
>>503
TOPからいける商品情報リンクでいきなりこんなんでますが?
Fatal error: Call to undefined function: setfetchmode() in /usr/local/share/pear/MDB/QueryTool/Query.php on line 325
Call Stack
#FunctionLocation
1{main}()/home/wwwchroot/www/htdocs/engine:0
2customcontroller->dispatch()/home/wwwchroot/www/htdocs/engine:136
3customcontroller->forward()/home/wwwchroot/www/lib/mojavi/mojavi-all-classes.php:412
4filterchain->execute()/home/wwwchroot/www/lib/mojavi/mojavi-all-classes.php:481
5outputbufferingfilter->execute()/home/wwwchroot/www/lib/mojavi/mojavi-all-classes.php:163
6filterchain->execute()/home/wwwchroot/www/webapp/lib/OutputBufferingFilter.class.php:14
7mappingrequestvarsfilter->execute()/home/wwwchroot/www/lib/mojavi/mojavi-all-classes.php:163
8filterchain->execute()/home/wwwchroot/www/webapp/lib/MappingRequestVarsFilter.class.php:21
9db_dataobjectfilter->execute()/home/wwwchroot/www/lib/mojavi/mojavi-all-classes.php:163
10filterchain->execute()/home/wwwchroot/www/webapp/opt/filters/DB_DataObjectFilter.class.php:22
11executionfilter->execute()/home/wwwchroot/www/lib/mojavi/mojavi-all-classes.php:163
12listaction->execute()/home/wwwchroot/www/lib/mojavi/mojavi-all-classes.php:97
13customquerytool->customquerytool()/home/wwwchroot/www/webapp/modules/catalog/actions/listAction.class.php:61
14customquerytool->setdbinstance()/home/wwwchroot/www/webapp/lib/CustomQueryTool.class.php:16
0505nobodyさん2005/05/10(火) 18:07:20ID:???
googleで探せば1番目に出てくるような内容を、メーリングリストで延々と質問するようなタイプの人がいる
0506nobodyさん2005/05/10(火) 18:32:08ID:???
499が
仕事中だからあちこちクリックできねーんだよニート共が!
みたいに逆切れするに100Mojavi
0507nobodyさん2005/05/10(火) 18:33:13ID:???
商品情報、普通にクリックして普通に表示されるんだが・・・
0508nobodyさん2005/05/10(火) 18:36:07ID:???
>>507
URL見るだけでもわかりそうなもんだが…

http://fandc.co.jp/engine/module/catalog/action/list/
↑ほら入ってみなさい
0509nobodyさん2005/05/11(水) 02:11:13ID:???
毎度思うんだが。

PEAR も Mojavi もいいけど、display_errors = off とか、まず最初に普通の事を普通にやろうぜ、と。
0510nobodyさん2005/05/11(水) 02:23:01ID:???
デバッグ中に display_errors = off  の何処が普通のことなんだか
0511nobodyさん2005/05/11(水) 02:35:23ID:???
アンチ・パターンかのぅ。
05125102005/05/11(水) 02:48:34ID:???
>>504 の事。
これに限らず、よく見かけるので。
0513nobodyさん2005/05/11(水) 02:53:25ID:???
>>512
ちなみに、あのサイトはデバッグ中というか試験公開中って書いてあるよ。
05145122005/05/11(水) 02:59:40ID:???
>>513
ごめん(;´Д`)全然見てなかった… 正直すまんかった。
0515nobodyさん2005/05/11(水) 03:09:17ID:???
>>510
いつまでがデバッグ中なんだか
0516nobodyさん2005/05/11(水) 16:47:18ID:???
>>515
そんなこともわかんないのか
0517nobodyさん2005/05/17(火) 16:51:08ID:???
Seasar2 for PHP5。
ttp://cgi39.plala.or.jp/klove/w/k.cgi?page=Seasar2%A4%F2%BB%B2%B9%CD%A4%CBphp%A4%C7DI%A5%B3%A5%F3%A5%C6%A5%CA%A4%F2%BC%C2%C1%F5%A4%B9%A4%EB

うちの会社はPHP4環境ですががががが。
0518nobodyさん2005/05/18(水) 09:47:20ID:6htWVmYW
Mojaviについてググっても出てこないので分かる人いたら教えてください。
認証していない状態で、isSecure(return TRUE)が設定されているモジュールを呼び出すと
AUTH_MODULE、AUTH_ACTIONで指定されたモジュールにフォワードされますが、そのモジュールで
認証後に元のページに戻るにはどうしたらいいのでしょうか?
複数の場所から認証モジュールにジャンプするので、戻る場所が1箇所ではありません。
引数のmoduleとactionから判断するのがいいのかな?
0519nobodyさん2005/05/18(水) 10:16:30ID:???
>>518
$controller->forward('originalModule','originalAction');
かな? Mojavi使ったこと無いけど、まるごとにあった。

0520nobodyさん2005/05/18(水) 10:36:55ID:???
From:
Mail: sage
----------------
>>518
次のようなフィルターを経由してRendererで設定し使っています。

class NextActionFilter extends Filter {
function execute(&$filterChain, &$controller, &$request, &$user) {
static $loaded;
if ($loaded === null) {
$loaded = true;
$nextModule = $request->getParameter('nextModule');
if ($nextModule === null) {
$nextModule = $controller->getRequestModule();
}
$nextAction = $request->getParameter('nextAction');
if ($nextAction === null) {
$nextAction = $controller->getRequestAction();
}
if ($nextModule === 'Default' && ($nextAction === 'Login' || $nextAction === 'Logout')) {
$nextModule = DEFAULT_MODULE;
$nextAction = DEFAULT_ACTION;
}
$request->setParameter('nextModule', $nextModule);
$request->setParameter('nextAction', $nextAction);
$filterChain->execute($controller, $request, $user);
} else {
$filterChain->execute($controller, $request, $user);
}
}
}
05215202005/05/18(水) 10:39:40ID:???
変になってすみません。続きです。

ここではフォワードされた場合( $loaded !=== null )にはスルーにしています。

例えば、Smartyテンプレートでは次のようにして使います。

{if $nextModule != "" && $nextAction != ""}
<input type="hidden" name="nextModule" value="{$nextModule|escape:"html"}">
<input type="hidden" name="nextAction" value="{$nextAction|escape:"html"}">
{/if}

まるごとのoriginalModuleとoriginalActionにnextModuleとnextActionで対応します。

以上、参考になれば。
05225202005/05/18(水) 10:40:51ID:???
たびたびすみません。

ここではフォワードされた場合( $loaded !=== null )にはスルーにしています。
!== の間違いです。
05235182005/05/18(水) 12:32:16ID:6htWVmYW
レスありがとうございます。

>>519
まるごとは私も持っています。
$controller->forward('originalModule','originalAction');
だと、index.php?module=originalModule&action=originalActionが
呼ばれるだけで元には戻れませんでした。
なので、まるごとで書かれているコメントは間違い(というより、
そこは自分で置き換えろということ)みたいです。

>>520
参考にさせて頂きました。
input type="hidden"の項目を置くのは認証モジュールのフォームで、
認証後にここにセットされているModuleとActionにフォワードする
ということでよろしいでしょうか?
やはり認証モジュール内で呼び出し元を保持して画面遷移しないと
無理っぽいですね。
05245202005/05/18(水) 12:39:18ID:???
>>518
それで問題ありません。

05255182005/05/18(水) 12:43:02ID:6htWVmYW
>>524
了解です!
素早い回答ありがとうございました。
本当に助かりました。
05265182005/05/18(水) 13:14:54ID:6htWVmYW
521のソースを参考に作ってみて無事にできました。
ただ、少し問題点もありました。
複数ある認証モジュールの呼び出し元の引数がそれぞれ異なる場合に
認証モジュール内でそれを全て引き継いでいかなかればいけないという
のが一つ。
もう一つは認証モジュールの呼び出し元がGETとPOSTでVIEWを切り替えて
いる場合で、<A>タグから呼び出し元がGETで呼ばれた後に認証モジュールに
ジャンプして認証画面でsubmitでログインして戻ってくるとPOSTで認証元
が呼ばれてしまうためVIEWの切替がうまくいきません。
なので、認証モジュールの呼び出し元はGETとPOSTで両方同じ処理にしておく
必要がありそうです。
0527nobodyさん2005/05/18(水) 13:20:25ID:???
俺はforwardじゃなくてredirect使ってる。
0528nobodyさん2005/05/20(金) 21:12:39ID:???
とりあえず、getで回せば?

$request->setMethod(REQ_GET);
$controller->forward( NEXT, NEXT);
0529nobodyさん2005/05/20(金) 21:21:54ID:???
getで回すのもスマートじゃない気もする。
ログイン画面に来た時にリファラを取得しておいて、
外部サイトからだったら、indexのページ、
内部からだったら、そのリファラに飛ばせば良いんじゃないの?
05305182005/05/20(金) 22:19:06ID:iZfZHOa+
スマートさには欠けるかもしれんけど、次のようなのはどうですか?
1.認証モジュール内でgetMethodしてGETかPOSTかを取得してセッションに保存。
2.getParametersで引数をすべてセッションに保存。
3.ユーザ認証
4.ユーザ認証OKならセッションに保存した引数を全てsetParameterする。
5.上記1で取得したのがGETならredirect、POSTならforwardする。

実際に作ってないのでホントに動くか分かりませんがw
0531nobodyさん2005/05/21(土) 17:11:07ID:???
フレームワークはやっぱり自作に限りますな。
小回り聞くし、使い勝っても良いし。
ちなみに俺のフレームワークは↓ここのサイトのを
http://www.stackasterisk.jp/tech/php/phpMvc01_01.jsp
参考に作りました。
0532nobodyさん2005/05/21(土) 20:16:41ID:???
>>531
ぷ
0533nobodyさん2005/05/21(土) 21:55:33ID:???
>>531
実は俺も。
VOとかDAOの概念が役に立った
0534nobodyさん2005/05/21(土) 22:45:29ID:3M7QHA3T
よっぽど小さいプロジェクトしかやったことないんだな
0535nobodyさん2005/05/21(土) 23:11:49ID:???
よっぽどプロジェクトやったことないんですね
0536nobodyさん2005/05/21(土) 23:17:39ID:???
ひとりで仕事したことしかないんだろ
0537nobodyさん2005/05/21(土) 23:25:05ID:???
>>533
DB_DataObjectやPropelとかのo/rマッパがあるのに今更DAOの概念て…
お前もう少しがんばった方がいいよ
0538nobodyさん2005/05/21(土) 23:28:15ID:???
お前よりはがんばってると思うよ
0539nobodyさん2005/05/21(土) 23:32:31ID:???
そういえばPropelって細かい解説サイト英語のみ?
0540nobodyさん2005/05/22(日) 00:33:19ID:???
>>537
そうか…
しかし別に職業プログラマじゃないしな
0541nobodyさん2005/05/22(日) 01:01:02ID:???
>540
とりあえずメンテナの一番多いだろうmojaviの大半の機能を使うくらいのプログラムを組んで
流通してるフレームワークの強さを体感したらいいよ。
一部しか使わないから覚えるのマンドクセ、自作マンセーになる。
0542nobodyさん2005/05/22(日) 01:27:19ID:???
>>538
自覚症状なしですか…もう救いようないですね。

まぁ>>540みたいなケースなら問題ないけど。
0543nobodyさん2005/05/22(日) 01:32:24ID:???
>>534-537
おいおいおい、mojavi信者が必死だなw
お前らみたいなフレームワークも自作できないような屑は
プログラマを語るなよ。な?
0544nobodyさん2005/05/22(日) 01:39:03ID:???
>>543
>お前らみたいなフレームワークも自作できないような屑は

という事はお前さんは自作してるんだろうから公開してみたら?
それが出来ない限り、お前さんもフレームワーク自作できるとの証明にはならないから、
お前さんの理論でお前さん自信が『屑』である。
0545nobodyさん2005/05/22(日) 01:54:42ID:???
車輪の最発明とか、メンテナの数とか、イロイロありすぎて
フレームワーク自分で作る意味がわからんのだが。
教えてplz
つーかフレームワーク自作するやつは当然Pearなんて使わないんだよね?
■ このスレッドは過去ログ倉庫に格納されています