【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
0322nobodyさん
05/02/19 15:54:48ID:???0323nobodyさん
05/02/19 16:01:24ID:???0324nobodyさん
05/02/19 16:02:31ID:???ようするに>304はバカだと
0326nobodyさん
05/02/19 16:15:24ID:???真面目にフレームワークの話をしてくれた人が浮かばれねーですよ
0327nobodyさん
05/02/19 16:24:35ID:???多分今後広く使われていきそうなのはこの2つだと思うんだけど。
0328nobodyさん
05/02/19 16:36:55ID:???だから誤解じゃなくて、お前が理解できてないんだって。
>>>302に対し、「ライブラリを統一するよりFWで統一する」と、ナンセ
>ンスなレスを返してたから。
>>313読んでから書け。
0331nobodyさん
05/02/19 17:01:50ID:???.L二二」
| |
ヽ|・∀・|ノ
| |
.L二二」
.L二二」
、| | //
ヽ ∴
ゝ∴ ├¨力 ン
− ∵ ∵
//|^^”^lヽ ヽ
.L二二」
0332nobodyさん
05/02/19 17:04:36ID:???>ためしに聞いてみるけど、俺が「何を」理解できてないと思ってるの
君のせいで、まともなネタすら煽りレスに流されてしまっているということ。
そして、君がいなくなればそれらが全ておさまるということを、まったく理解できていない。
0333nobodyさん
05/02/19 17:10:48ID:???フレームワークのメリットが理解できてないと思われてんじゃないのw
お相手さんは目が真っ赤だから、何を言ってもフレームワークの話に聞こえんだよ
>>331
土管乙
0337nobodyさん
05/02/19 17:23:29ID:???// |:!
//,. -/r‐- 、| !
/,/ ./ | _」 ト、
/.\`/ |二...-┘ ヽ
. i ,.>、;/ー- 、 l
! ∠.._;'____\ |
,!イ く二>,.、 <二>`\.、ヽ.
/'´レ--‐'ノ. `ー---- 、 |\ ヽ、 >>304 いいんだぞ?俺の胸の中で好きなだけ泣け。
\ `l (!" Jfヽ! `''-;ゝ
`‐、jヽ ヾニニ> ゙イ" }_,,. ‐''´
`´\ ー / ,ィ_}
. |_ `ー ''´ _」'
, ー‐-‐‐‐--''.‐''゛,,;,,...: ゛''-、、,;,,
,ィ'゛ ゛゛""' ゛"'''-、
/ ヽ
/ '、
l l
. l i. l
l :i. ヽ.:.:...:.:: "'
. l .:l ヽ.:.::... "''、
. l. .:l ヽ.:..:. `'、
l ::l: ';.:.:..... ヽ
l .:l.:.. .:ィ.):.:. l.:.:.: .:.ヽ、
. l .:l..: ''ー.: .:.:l.:.:..:..:: .:i'゛
0338333
05/02/19 17:25:12ID:???0340304
05/02/19 17:42:03ID:???流れそうなので先に「理解」について書くいておくと、俺は>>328が、
俺のことをフレームワークを云々している男だと思っていて、そのフレー
ムワークの「理解」に間違いがあると思っているので、>>313を読んで、
考えを改めなさいと言おうとしている、と思っている。
で俺は、>>328がいまだに、>>304(俺)がたんにレスの読解の仕方で
恣意的に分けただけ、ということを「理解」していないと思っている。
↑いまここ。
0342304
05/02/19 17:46:37ID:???> >ンスなレスを返してたから。
もしかしたらこの引用も、俺がFWで統一するのがナンセンス
だと思っていると「理解」されてるのかね。さすがにそこまでは
ないと思うけど、何か書いてくれないと分からないよ。
0343nobodyさん
05/02/19 17:52:11ID:???0346nobodyさん
05/02/19 18:48:35ID:???,r'";;;;:::::;彡-=―-=:、;;;;;;ヽ、
/;;ィ''"´ _,,,,....ニ、 ,.,_ `ヾ;;;;〉
`i!:: ,rニ彡三=、' ゙''ニ≧=、!´
r'ニヽ, ( ・ソ,; (、・') i'
ll' '゙ ,;:'''"´~~,f_,,j ヾ~`''ヾ.
ヽ) , : ''" `ー''^ヘ i! 標準以下の知能しかないから
ll`7´ _,r''二ニヽ. l 何か書いてくれないと分からないよ…
!::: ^''"''ー-=゙ゝ リ
l;::: ヾ゙゙`^''フ /
人、 `゙’゙::. イ
0349nobodyさん
05/02/19 19:02:30ID:???0350nobodyさん
05/02/19 19:08:56ID:???公開してみろや。話はそれからだ。
0352nobodyさん
05/02/19 19:30:50ID:???ログ流そうとしてるようにしか見えないんだが
0354nobodyさん
05/02/19 19:48:05ID:???スレッドランキングから記念真紀子
0355nobodyさん
05/02/19 20:32:57ID:???大人気じゃんか
0356nobodyさん
05/02/19 20:51:49ID:???とりあえずセッション関係はmysqlで動作することは確認できたんだけど。
だれか詳しい人いませんかー
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から変更するつーのもありですが。
■ このスレッドは過去ログ倉庫に格納されています