トップページ⇒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
0577nobodyさん2005/05/23(月) 18:52:24ID:???
>>576
>M3-PHP5に移行するに当たっての注意点みたいのあるかい?
言い出したらキリが無いな…

Propel&Creoleに限らず複数&多種のDB接続ができるんで、DB周り自体かなり便利にはなってるけどね。
俺の場合比較的速度を求めない部分ではPropel+Creoleで、速度重視の部分ではADODBって感じでやってるけど。
0578nobodyさん2005/05/23(月) 20:43:40ID:???
所詮はCGIだろ、そんなに熱く語るものでもないだろが。
使えて当り前のレベルの話だろが、突っ込んだ話しても
先が見えてる内容だから、掘り下げて話す方が恥ずかしくなるよ(w
0579nobodyさん2005/05/23(月) 21:16:02ID:???
>>578
>所詮はCGIだろ
え…?CGIじゃないよ?
せめて最低限の知識持ってから書き込まないと恥ずかしいよ?
0580nobodyさん2005/05/23(月) 22:12:54ID:???
578ではないが、
PHPはCGIとしてもインストールできるのですよ。
ただ、あまり一般的じゃないけど。
0581nobodyさん2005/05/23(月) 22:59:08ID:???
>>580
>PHPはCGIとしてもインストールできるのですよ。
この表現は正しくない。
0582nobodyさん2005/05/23(月) 23:02:33ID:???
CGIとしても動くけど、誰もそんな風に使わないよね。
誰もCGIについて語ってないし。苦し紛れに無知な>>559が
発したレスなんだろうけどね。
0583nobodyさん2005/05/23(月) 23:32:25ID:???
DBを使うような事って、仕事以外に無いだろ。
0584nobodyさん2005/05/23(月) 23:46:56ID:???
>>583
えぇぇぇ。
さぶっ!
0585nobodyさん2005/05/24(火) 10:54:53ID:???
>>581
じゃぁ正しい表現を教えてね。
もっと建設的に行きましょ。
0586nobodyさん2005/05/24(火) 12:51:57ID:???
>585
調べろ。だからお前は屑なんだ。

そもそも最初から知ったかぶるな。
0587nobodyさん2005/05/24(火) 15:53:52ID:acBCrGCd
藻前ら税印しんじゃえ
うぜ
0588nobodyさん2005/05/24(火) 21:31:13ID:45wBzFIo
結局PHPにおけるフレームワークはMojaviが定番と考えて良い?
0589nobodyさん2005/05/24(火) 21:46:48ID:???
そろそろPHPフレームワークの本出してほしいよな〜
でも既存フレームワークは
「多機能すぎる」んで、速度がネックになるかな。
オリジナルフレームワークは機能のショボさが
逆に強みになると思う
0590nobodyさん2005/05/24(火) 22:00:03ID:???
>>589
既存フレームワークで本必要?
ソースコードの量も大した事無いし、別に本が必要とは思わないんだけど?

それと、たしかもうちょっとでMojavi3を扱った日本で最初の書籍が出るはず。
0591nobodyさん2005/05/24(火) 22:29:19ID:???
いちいちソース読むのは面倒
楽したいからフレームワーク使うんだからさ
モハビ本には期待
0592nobodyさん2005/05/24(火) 23:00:00ID:???
mojaviはステップそれほど多くないし
ソースがきれいだからすぐ読める希ガス
0593nobodyさん2005/05/24(火) 23:11:35ID:???
別にソース読まなくても公式のマニュアルとフォーラムの記事検索すりゃ
いくらでも出てくるし。
0594nobodyさん2005/05/24(火) 23:39:46ID:???
>>586
そんなこと言うんだったら
最初からPHPはCGIではないなんて言うなよ。

おまえが問題にしたのは文章の正確さではなく
その「表現」なんだから、マニュアルを調べたって出てきそうもないしな。
正確な文章を書けないやつがしゃしゃり出てくるんじゃない。
05955862005/05/25(水) 00:39:50ID:???
>594
俺は多分お前が思ってる奴とは別人だぞ。
日が浅いだろうに、奈々氏の区別が付いている振りをするものじゃない。

一般的に教えてクソと呼ばれるものは屑だし
585もその類の遠吠えにしか見えない、ということを言ったまでだ。
05965862005/05/25(水) 00:48:05ID:???
ちなみに、さっき詳細な用語はさっき3分ほどで調べてみたんだが
CLI版のPHPをインストールすることで、CGI機能を実装したサーバーの
cgiスクリプトとしてPHP言語が動作可能となる。
つまり、581が言ってるのはCGiとしてインストール、というのがそもそもおかしい話だということだろ多分。
調べたら出てくるんだから調べてから話せ、ってことだ糞餓鬼。
0597nobodyさん2005/05/25(水) 01:17:40ID:???
>>596の言うとおり。
0598nobodyさん2005/05/25(水) 01:33:54ID:???
>>596
正確にはCLI版はCGI Spec.を満たしていないので、CGI版じゃないと駄目。
0599nobodyさん2005/05/25(水) 01:43:09ID:???
とりあえずスレ違いなんでCGI厨は消えてください。
06005982005/05/25(水) 01:43:14ID:???
と思ったが、CLIでもCGI Spec.を満たしたスクリプトは書けるな。
前に何か足らなくなってて難しい/出来ないと思ったんだが...記憶違いか
06015862005/05/25(水) 01:43:14ID:???
>598
ttp://ns1.php.gr.jp/pipermail/php-users/2003-January/012701.html
これか。おみそれした。
0602nobodyさん2005/05/25(水) 01:46:55ID:???
>>600>>601
秒数まで同じなんてお前ら…
06035982005/05/25(水) 01:55:54ID:???
>>601
そのHTTPヘッダのくだりなんだけど、出力しないだけで
CGIのインターフェース的には繋がってたと思うんだよね。

ああ、スレに関係ない話ですまん。
06045982005/05/25(水) 01:58:25ID:???
ケコーンするか?>>586
つか秒が同じになるのってどういう条件なんだ?
0605nobodyさん2005/05/25(水) 05:00:03ID:???
>>596
http://www.php.net/manual/ja/security.cgi-bin.php
じゃぁこの翻訳は間違っているのだね。
06065962005/05/25(水) 08:36:43ID:???
>605
わざわざ「バイナリ」と付けている意味もわからんのか。そもそも異なる訳だ。
つーか俺が書いたのは調べてる例なのだし、明らかに間違ってるなら自信を持ってその箇所を指摘しろ。
そういう中途半端な話がしたいのか?
580はともかく、578は明らかに事実誤認だし581は調べもせずに書き込む香具師だ。
勝手に誰かと勘違いしないでもらえる?

>598
ヘッダ自分で書かなきゃいけないならスクリプト書き直し…
秒はこれコンマ以下切捨てなのね。
06075962005/05/25(水) 08:41:13ID:???
レス番ミスった…
>580はともかく、578は明らかに事実誤認だし581は調べもせずに書き込む香具師だ。
580はともかく、578は明らかに事実誤認だし585は調べもせずに書き込む香具師だ。

どんどんスレの主旨からずれてくな…これ以上PHP-CGIの質問するんだったらPHP初心者板でお願い。
一両日中には相手してあげるから。
0608nobodyさん2005/05/25(水) 09:13:30ID:???
>>590
どこの情報?
0609nobodyさん2005/05/25(水) 09:20:22ID:???
>609
これのことだと思う
ttp://www.amazon.co.jp/exec/obidos/ASIN/4798108766/250-2538785-1872250
0610nobodyさん2005/05/25(水) 09:47:46ID:???
1章 PHPプログラミングをはじめよう!
○PHPで広がるWeb開発
○レンタルサーバーでPHPを使おう!
○WindowsでPHPを使おう!
○使える! アプリケーション〜一般編〜(XOOPS / ppBlog)
○使える! アプリケーション〜開発編〜(phpMyAdmin / mantis)
○PHP超入門
○TruStudioで快適な開発環境を作ろう!

第2章 PHPのプログラム構築手法
○Smarty入門
○Smartyを使いこなす
○PHP5+MojaviによるMVC入門
○PukiWikiでSEOにチャレンジ

第3章 ライブラリを活用する
○JpGraphでグラフもすいすい
○PEAR:Mime_Mailを使用したHTMLメール送信
○PHPのセキュリティ対策
○パフォーマンス向上大作戦!
○WYSIWYGな編集をしよう!

第4章 最新情報
○PHP5の新機能
○PHP4とPHP5の共存

↑これみるかぎり期待できなさげな気がする
0611580=585=5942005/05/25(水) 10:20:04ID:???
まず581で「表現」が正しくないと言われたので、
「言っていること」は正しいが「言い方」が正しくないのだろう
と思って585と聞いたわけだ。
ただ表現が正しくないと言われてもどこが正しくないのかよく分からなかったしな。

それを586でいきなり屑呼ばわりされたので、
ついカッとなって594で複数人の名無しを一人だと勘違いした書き込みをしてしまった。
そこは悪かった。
ただ、見ず知らずの他人を屑だの糞餓鬼だの呼ぶのはどうかと思う。
少なくとも自分はそういう言い方はしなかったし、するつもりもない。

あと、自分も「明らかに間違っている点」を指摘されてないし、
「表現が正しくない」と言うのは「事実ではない」とは意味が違うので、
まだ釈然としないのだ。

でも、こんな言葉のあやみたいなことでグチグチ言ってもしょうがないな。
またROMに戻る。
すまなかった。
06125962005/05/25(水) 10:47:13ID:???
別スレで教えて君を、このスレで煽りがスレ流すのをみてイラついてた影響が出てるな。
俺も悪かった。すまん。
ただ、匿名掲示板は煽ったら煽り帰される、というのはもう少し慣れておいたほうがいいよ。
いちいち煽られて腹立ててても仕方が無い。
結果として俺がスレ流しまくって無為になってるし、教えて君や煽り荒らしも次からはなるだけスルーするよ。
0613nobodyさん2005/05/25(水) 12:03:07ID:???
>>610
見るべきは
> 坂井 恵 (著), 上鍵 忠志 (著), 田中 正裕 (著), 月宮 紀柳 (著), 森川 穣 (著)

ここ。
業界一ネタがマニアックな月宮氏の名前がある。
上鍵氏と田中氏の名前は分かるが後は知らないな… 坂井氏って、Pukiwiki の坂井氏かな。

まぁどっちにしろ、PHP で本や雑誌一冊使うと部数を作るために初心者フレンドリーな振りにしなければ成り立たないんじゃないか。
ここの住人が満足するようなインデックスで固めたら大量の返本は確実。
それ含めて眺めたら、結構期待していいと俺は思うが。
0614nobodyさん2005/05/25(水) 14:15:06ID:???
>>609
表紙にMojaviとでかでかと書いてるわりに
割いてる章が少ない気がするな
0615nobodyさん2005/05/25(水) 15:19:57ID:???
>>614
そうそう。つーかほとんどがmojaviに関係ないのにタイトルでMojaviとか言って騙してる方が
返本確実だろw
06166132005/05/25(水) 15:49:05ID:???
確かにソレはなぁ… ('A` まぁ量より密度に期待しようや…
0617nobodyさん2005/05/25(水) 16:11:25ID:???
つううか、Mojaviの何についてが何が知りたいのだろう?
サンプルやチュートリアルで使い方はほぼ網羅されていいる。

あとは、更に効率良く使うために自分でクラス作ったりって感じだけど、
何が疑問なんだろう・・・

そして、こういった板があるんだから、ちょっとした疑問でも質問すれば良いのに。
でもって、質疑応答をどこかのサイトにまとめればそれだけで貴重な情報源になる気がする。
0618nobodyさん2005/05/25(水) 17:01:52ID:???
>>617
突然なに言い出してるんだこいつは?
0619nobodyさん2005/05/25(水) 17:14:14ID:???
>>617
まぁそこまで考える段階では無い気もする。今は取り敢えず記事出して認知上げようぜ、みたいな。

本当に需要が出てきたら切り口は幾つか見つかるんじゃない?

1. 事例紹介
2. Mojavi で作ろう -Mojavi を解説しつつアプリケーション一つをまるまる開発- (初心者向け)
3. Tips
 -- View を拡張
 -- エラーハンドリング
 -- Model の導入
 -- Propel でゴー
4. コードリーディングの手引き -Mojavi コードのガイダンスと読むべきポイント-
5. Mojavi に役立つツール群 (アクセラレータとか)
6. 情報源

こんな所か? Tips にはエラい人がごまんと抱え込んでいるであろう技や活用術を載せて欲しいな。
0620nobodyさん2005/05/25(水) 21:02:33ID:???
そろそろフレームのすれから独立しようぜ。
0621nobodyさん2005/05/25(水) 22:45:02ID:???
Smartyのキャッシュ機能実装法が結構悩みどころなんだよなぁ
0622nobodyさん2005/05/26(木) 00:22:06ID:???
つーか、お前らフレームワーク一つ作れやしないくせに
フレームワークを知った風な顔で語るなよ。雑魚どもが。
0623nobodyさん2005/05/26(木) 00:26:49ID:???
俺もそれで悩んだ
結局smartyのインスタンスをfilter側で生成して
actionクラスでもインスタンスを呼び出せるようにしてる。
それでis_cachedメソッドでキャッシュの有無を判定して
DB処理等の実行の判断をしてるんだけど、もっと良い方法あったらキボンヌ
ちなみにmojavi3でのお話
0624nobodyさん2005/05/26(木) 01:57:08ID:???
>>623
俺も似たような感じ。
まずConfigクラス作って、smarty_アクション名.iniに、グローバルテンプレ、メインテンプレ、スロットテンプレの
ファイル名、キャッシュ時間を設定して、それをフィルタで読み込んで判定してる。
んで、キャッシュされてなかったらView側で表示&キャッシュ生成処理みたいな感じで。

まぁでもそのうち公式でサポートされそうな気がしなくもないけど。
0625nobodyさん2005/06/06(月) 16:40:01ID:???
mojavi2の認証機能・承認機能のネームスペースって何ですか。権限名は勝手に
名づけてよさそうに思えるのですが、ネームスペースというのが何なのかわかりません。
どなたか教えてもらえないでしょうか。
addPrivilege()と一致していれば何と名づけようと関係ないのでしょうか。

<?php
class AAction extends Action
{
 //認証機能を利用する
 function isSecure()
 {
  return true;
 }
 //ExecuteExampleは権限名として自由につけらる?
 //いくつかの解説で出てくるExampleNamespaceというのは何でしょうか?
 //突然、今まで出てこなかったExampleNamespaceとか、$GLOBALS['_EXAMPLE_USER_PRIVILEGE_NAMESPACE']とか
 //tutorialとかになってて混乱してます。
 function getPrivilege()
 {
  return array('ExecuteExample', 'ExampleNamespace');
 }
?>
0626nobodyさん2005/06/08(水) 04:06:39ID:???
>>625
勝手に名づけていいよ。空にするとたしかmojavi.orgかなんかが入るんだっけ?

でも、例えばネームスペースにホスト名やユーザエージェントとかの
ユーザごとに違う値を入れてやれば、セッションハイジャック対策になる。
06276252005/06/08(水) 22:30:58ID:???
>>626
さんくす
えっと、ユーザエージェント毎の違う値というのが思っていたのと違うんだけど
それはテストコード書いて試してみます。
・・・そのネームスペース(?)毎に権限設定ができると思ってた。
例えば、userはuserでの権限でできること、adminはuserとadminと両方の
権限を持ってアクセスできるとか・・・。できるのかなぁ。
0628nobodyさん2005/06/10(金) 03:50:03ID:???
>>627
そういうのは権限の付与時にきめることで、そこは関係ない。
例えば>>625での
AAactionにadminだけをアクセスさせたい場合、
認証時にadminだけ、ExecuteExampleをaddPrivilegeしてやればいい。
0629nobodyさん2005/06/10(金) 13:55:21ID:???
>>628
そういった意味じゃないんじゃない?

adminとかuserって例だと俺は例え難いから別な例えとすると、

ある画面は営業部と品質管理部がアクセス出来るようにするといった場合じゃないのか?
つまり、複数の権限でアクセスできるページが作りたいって意味じゃ?
0630nobodyさん2005/06/10(金) 20:35:29ID:???
>>629
だから、そのロジックを認証時に書けといってるんだが。
0631nobodyさん2005/06/10(金) 20:44:57ID:???
例えば
AAction、BActionがあったとしよう。
AActionにExecuteExampleA、BActionにExecuteExampleBをgetPrivilegeしておく。
認証時、adminユーザExecuteExampleA、ExecuteExampleBを付与、
userならExecuteExampleAを付与してやればいい。
AAction内でさらに細かく設定したければhasPrivilegeで直接問い合わせる。
if($user->hasPrivilege('ExecuteExampleA-1')){
ExecuteExampleA-1が与えられたユーザだけの処理
}
0632nobodyさん2005/06/10(金) 20:47:19ID:???
つまり、権限は複数つけることが出来るって事でOK?
0633nobodyさん2005/06/10(金) 21:25:45ID:???
>>632
お前の言ってることは曖昧すぎだ馬鹿
0634nobodyさん2005/06/11(土) 00:59:49ID:???
ていうかソースの該当部分みりゃわかる話しだろ…
0635nobodyさん2005/06/11(土) 10:57:48ID:???
>625=>629=>632
自演乙
0636nobodyさん2005/06/11(土) 11:01:50ID:???
>>634
せめてポインタ示せ。どのファイルの何行目あたりとかさ。
できなきゃ黙ってろ。使えねぇヤツ。
0637nobodyさん2005/06/11(土) 11:23:23ID:???
>>636
使えない奴というのは、何も出来ない君のこと
0638nobodyさん2005/06/11(土) 11:53:48ID:???
>>636
PHPEclipseやTrustudioでも使えばすぐ見つかるだろ…
そんなこともできんのか
0639nobodyさん2005/06/11(土) 12:01:58ID:???
>>638
ZendStudioしか持っていません。
どうにかなりますか?
0640nobodyさん2005/06/11(土) 12:13:10ID:???
>>639
PHPEclipseもTrustudioもフリー
持ってなきゃ落とせ。

>>626
これは飛び道具的な使い方。本来ネームスペースというからには、
return array('ExecuteExample', 'ExampleA');
return array('ExecuteExample', 'ExampleB');
みたいな使い方をするもんだ。
0641nobodyさん2005/06/11(土) 12:18:50ID:???
>>639
宝の持ち腐れ。どうにかなるよ
0642nobodyさん2005/06/11(土) 12:19:28ID:???
>>640
その飛び道具的な使い方をもう少し具体的に!!
0643nobodyさん2005/06/11(土) 16:51:17ID:???
ソースと格闘していたオイラがやってきましたよっと。
参考にできるドキュメントがあんまりないのがmojaviの辛いところだね。
間違っている部分があれば指摘よろ。

[ユーザ認証を使う場合]
 index.phpの
  require_once(AUTH_DIR . 'PrivilegeAuthorizationHandler.class.php');
  $authHandler =& new PrivilegeAuthorizationHandler;
  $controller->setAuthorizationHandler($authHandler);
 を有効化する
 認証したいActionに、function isSecure(){ return TRUE; } を追加する

 認証済みにする時は、User::setAuthenticated(TRUE); を実行する
0644nobodyさん2005/06/11(土) 16:51:31ID:???
[ユーザ特権を使う場合]
 index.phpの
  require_once(AUTH_DIR . 'PrivilegeAuthorizationHandler.class.php');
  require_once(USER_DIR . 'PrivilegeUser.class.php');
  $authHandler =& new PrivilegeAuthorizationHandler;
  $user =& new PrivilegeUser; -(3)
  $controller->setAuthorizationHandler($authHandler);
  $controller->setUser($user);
 を有効化する
 特権を扱いたいActionに、function isSecure(){ return TRUE; }を追加する
 Actionに特権を設定する
  function getPrivilege (&$controller, &$request, &$user){
   return array(name,namespace);
  }

 User::addPrivilege(name,namespace)を使って、そのユーザの持つ特権(s)を設定する

[捕捉]
あるActionに必要な特権は1つだけ設定できる(getPrivilege)。namespaceを指定しない場合はorg.mojaviになる。
あるユーザの持つ特権はPrivilegeUserクラス内で、secure[namespace][name] = TRUE|NULL の形で格納される。
またUser::addPrivilegeを複数回使うことで、複数の特権をユーザに付加することができる。
nameとnamespace(省略時はorg.mojavi)の2つが完全に一致しないと、特権が許可されない。
アカウント管理のグループ・ユーザのような「ものではない」つーことやね。ここ引っ掛け問題で出ます。
0645nobodyさん2005/06/11(土) 17:16:50ID:???
>>644の書き込み見ると、今までの流れで言われてた事と
矛盾するんだが、どっちが正しいの?
0646nobodyさん2005/06/11(土) 22:12:05ID:???
>>645
まぁここでわかるわけだ。能無しソース嫁厨←実は読んでないと
ほんとに読んだ人と。例え644が間違っていたとしても
こう書いてあるから違うといえる人間と違うとしかいえない人間と。
あ、俺は読んでないからなんともいえない。先人の知恵をありがたく使わせて
いただく。感謝の気持ちはあるつもり。クソにもならんコメントという意味では
俺も嫁厨と変わらない…。
0647nobodyさん2005/06/12(日) 01:49:44ID:???
>>646
>俺も嫁厨と変わらない…。
変わらなくない。それ以下。
0648nobodyさん2005/06/12(日) 01:50:47ID:???
>>645
>>>644の書き込み見ると、今までの流れで言われてた事と
>矛盾するんだが、どっちが正しいの?
べつに何も矛盾しない。
0649nobodyさん2005/06/12(日) 07:16:06ID:???
>>644
>アカウント管理のグループ・ユーザのような「ものではない」つーことやね。ここ引っ掛け問題で出ます。
これは具体的にどういう意味で言ってるの?
namespace・nameがイコールグループ・ユーザというものではないって意味?
それともグループ・ユーザに相当する処理で使うものでは無いという意味?
後者なら違うと思うんだが。実際グループの権限照会処理で俺使ってるんで。
0650nobodyさん2005/06/13(月) 21:22:22ID:???
>>647
>>648
あんたアホです。
いいかげん結論だけいってそれでよしと主張するのやめませんか。
06516432005/06/14(火) 01:12:54ID:???
またまたオイラがきましたよっと。
>>645
矛盾はしないですよ。というか、矛盾していたらネチネチと煽ってるっす。
>>649
最後の一行は余計だったかなぁ。。その上の行の捕捉みたいなつもりだったのだけど。
namespace = グループとした時に、グループに対してactionの利用がon|offされるわけではなく、
あくまでnameまで含めた物が判定に使われるってことです。
上の方で出ていた単語(そのレスでの意味合いは置いておいて)を使うと、
namespace = adminグループ、営業部 って感じ。
グループ・ユーザ機能をどう実装するかってのはまた別の話っす。
0652nobodyさん2005/06/14(火) 03:04:20ID:???
>>650
>>648はそれ以上なにを言えばいいんだ?
お前は少しは頭働かせろよ
0653nobodyさん2005/06/14(火) 03:09:43ID:???
>>651
>最後の一行は余計だったかなぁ。。その上の行の捕捉みたいなつもりだったのだけど。
別に真意を知りたかっただけ。特に余計とかは思ってない。
namespaceはユーザのグループというよりは、権限のカテゴリと考えるのが妥当だね。
06546432005/06/14(火) 03:54:18ID:???
眠れぬ夜を過ごすオイラがまたまたきましたよっと。
認証・特権に関係する部分を読んでいた時のメモっす。@mojavi2
追試しようとする人は参考にしてちょ。
mojavi全体の処理ダイアグラムも参照。
ttp://www.mojavi.org/images/diagrams/2.0/action_sequence.png

段組は関数呼び出し・if文等処理の区切り。関数名の後ろの::はその関数のクラス名。
index.php
require_once(AUTH_DIR . 'PrivilegeAuthorizationHandler.class.php'); -(1)
require_once(USER_DIR . 'PrivilegeUser.class.php'); -(2)
$authHandler =& new PrivilegeAuthorizationHandler;
$user =& new PrivilegeUser; -(3)
$controller->setAuthorizationHandler($authHandler);
$controller->setUser($user);
$controller->dispatch()
0655nobodyさん2005/06/14(火) 03:54:32ID:???
mojavi-all-classes.php
function dispatch()
 $this->forward($modName, $actName);
function forward($modName, $actName)
 $filterChain =& new FilterChain;
 $filterChain->register(new ExecutionFilter);
 $filterChain->execute($this, $this->request, $this->user);
function execute(&$filterChain, &$controller, &$request, &$user)::ExecutionFilter
 if($action->isSecure()) -(4)
  $authHandler =& $controller->getAuthorizationHandler();
  $authHandler->execute($controller, $request, $user, $action)
function execute (&$controller, &$request, &$user, &$action)::PrivilegeAuthorizationHander
 if(!$user->isAuthenticated()) -(5)
  $controller->forward(AUTH_MODULE, AUTH_ACTION);
 $privilege = $action->getPrivilege($controller, $request, $user); -(6)
 if ($privilege != NULL && !isset($privilege[1])){ $privilege[] = 'org.mojavi'; } -(7)
 if ($privilege != NULL && !$user->hasPrivilege($privilege[0], $privilege[1])){ return FALSE; } -(8)
 return TRUE; -(9)
0656nobodyさん2005/06/14(火) 03:54:50ID:???
(1) ユーザ認証を使う場合は、index.phpのコメントアウトから有効化
(2) ユーザ特権を使う場合は、index.phpのコメントアウトから有効化
(3) Userクラスの代わりにPrivilegeUserクラスを使う。opt/user/PrivilegeUser.class.php
(4) Action内でisSecure()がtrueを返すようにオーバーライドしておくと、認証/権限が実行される。オーバーライド前は、return FALSE。(9)も参照。
(5) User::setAuthenticated(true)されていれば認証済み。(9)も参照。
(6) Action内でgetPrivilegeが特権名/名前空間の配列を返すようにオーバーライドしておく。オーバーライド前はreturn NULL。(9)も参照。
(7) 名前空間が設定されていない場合は、org.mojaviと名前空間に使う。
(8) User::addPrivilege(name,namespace)したものの中に、(6)の特権名/名前空間を満たすものが無ければ、特権無しと判断する
(9) 認証が成功した場合や、特権有りまたは特権不要の場合に、trueを返す
0657nobodyさん2005/06/14(火) 05:44:36ID:QOcUcvCe
mojavi + smarty を使っているのですが、
動的にXMLを作成しようとすると、1行目に改行が入ってしまいます。

以下view
$renderer->setTemplate('recentXml.xml');
$renderer->setAttribute('result' , $request->getAttribute('result') );

以下template
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<data>
<result>{$result}</result>
</data>

以下compileの中身
<?php /* Smarty version 2.6.9, created on 2005-06-14 05:18:37
compiled from recentXml.xml */ ?>
<?php echo '<?xml'; ?>
version="1.0" encoding="UTF-8" standalone="yes"<?php echo '?>'; ?>
<data>
<result><?php echo $this->_tpl_vars['result']; ?>
</result>
</data>
0658nobodyさん2005/06/14(火) 05:44:49ID:QOcUcvCe
以下アクセスした結果

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<data>
<result>1</result>
</data>
<!-- Page was processed in 0.0412 seconds -->

この1行目の改行をなくすためにはどうすればよろしいでしょうか?
0659nobodyさん2005/06/14(火) 06:17:32ID:???
俺のsmartyだと入らないから、君のソースコードのどっかで
?>

とかになってるんじゃないのかな多分。
06606572005/06/14(火) 10:25:49ID:QOcUcvCe
今気づきましたが、特定のモジュール内の全てのファイルに
ブラウザでアクセスした際、1行目に改行が入っていました。
原因はわかりません。
0661nobodyさん2005/06/14(火) 10:35:42ID:???
>>660
だから >>659 なんでしょ。PHPタグ閉じた後に改行が付いてる
0662nobodyさん2005/06/14(火) 11:32:29ID:???
UTF-8のファイルにBOMが入ってるんでは?
0663nobodyさん2005/06/16(木) 17:29:13ID:???
フィルターって何に使えばいいの?と悩むオイラがやってきましたよっと。
検索してもGlobalフィルタのおざなりな説明しかないなぁ。。

フィルターには2種類あり、全てのmodule/actionで呼び出されるもの(globalフィルタ)と
特定のモジュールで呼び出されるもの(moduleフィルタ)からなる。

個々のフィルタには前処理・後処理という2段階の実行順序があり、
登録した順に前処理が全て実行されてから、今度は逆順に後処理が実行される。
Actionの実行部分もフィルタの一種として扱われていて(ExecutionFilter)、
全てのフィルタの登録後に自動的に登録されている。
結果、登録順に1,2...の番号を付けた時に、
1. GlobalFilterのpre-filter1,pre-filter2...を実行
2. moduleFilterのpre-filter1,pre-filter2...を実行
3. ExecutionFilterを実行(認証や特権の判定、action処理)
4. moduleFilterの...post-filter2,post-filter1を実行
5. GlobalFilterの...post-filter2,post-filter1を実行
という順番で処理されることになる。

フィルタ機能の実現には3つのクラスが関係していて、
FilterChain - フィルタを実際に行う仕組み
FilterList - フィルタの順序リスト
Filter - 実際の処理内容
このうち、FilterList、Filterを書くことになる。
0664nobodyさん2005/06/16(木) 17:31:03ID:???
以下、実際に使う時にどう書けばいいかの説明。

グローバルフィルタ
BASE_DIR/GlobalFilterList.class.phpを作成

BASE_DIR/GlobalFilterList.class.php
class GlobalFilterList extends FilterList{
 function registerFilters(&$filterChain,&$controller,&$request,&$user){
  require_once(<filter-file-path>); // 利用するfilter分だけ繰り返し
  $filterChain->register(new <filter名>); // 利用するfilter分だけ繰り返し
 }
}

モジュールフィルタ
BASE_DIR/modules/<module名>/<module名>FilterList.class.phpを作成

<module名>FilterList.class.php
class <module名>Filterlist extends FilterList{
 function registerFilters(&$filterChain,&$controller,&$request,&$user){
  require_once(<filter-file-path>); // 利用するfilter分だけ繰り返し
  $filterChain->register(new <filter名>); // 利用するfilter分だけ繰り返し
 }
}
0665nobodyさん2005/06/16(木) 17:31:45ID:???
フィルタ
<Global|module名>FilterList.class.phpの中でrequire_onceする時にパスを書くので、
そのパスと合ってさえいれば適当な場所でよい。

<filter>.class.php
class <filter名> extends Filter{
 function execute(&$filterChain,&$controller,&$request,&$user){
  static $loaded;
  // ActionChainやAction::forwardを使った時にフィルタが複数回適用されるのを防ぐ
  if($loaded == NULL){
   $loaded = TRUE;
   // 前処理フィルタ
   ...
   // filter chain の次のフィルタを実行
   // pre-filterとpost-filterの分岐点
   $filterChain->execute($controller,$request,$user);
   // 後処理フィルタ
   ...
  }else{
   $filterChain->execute($controller,$request,$user);
}}}

[捕捉]
上の <Global|module名>FilterListは FilterListのregisterFiltersをオーバーライドして
Filterの読み込みと登録をしているが、コンストラクタで読み込む方法もありっぽい。
その場合は、
class <Global|module名>FilterList extends FilterList{
 function & FilterList(){
  require_once(<filter-file-path>); // 必要な分だけ
  $this->filters[] = new <filter名>; // 必要な分だけ
}}
となる。元のregisterFiltersは$this->filtersをカウントしてregisterしてくれる。
0666nobodyさん2005/06/17(金) 00:54:35ID:M5DVt6+6
mojavi公式サイト落ちてね?
0667nobodyさん2005/06/17(金) 04:20:04ID:???
ドライブ失敗の、少なくとももう1日間、mojavi.orgはためでしょう。
by ショーン・カー
0668nobodyさん2005/06/17(金) 11:59:25ID:???
>664
やって来なくていい。
0669nobodyさん2005/06/18(土) 06:34:56ID:???
モジャビンサイト落ちてるなー
>>667
ドライブ失敗って何?
0670nobodyさん2005/06/18(土) 12:06:50ID:1zysAWYs
>>669
ハードディスクがぶっ壊れた
0671nobodyさん2005/06/18(土) 20:56:20ID:???
>>664
俺は見ている、役立っている。わかんないヤツがgoogleで検索して
みにくるトキもあると思う。
へこまずに気がむいたらまた来てくれよな。
いろんな意見があることに甘えるやつもいるだろう。
俺はあんなこと言われたらヘコミまくるからさ。じゃね。
0672nobodyさん2005/06/18(土) 21:21:28ID:???
つうか公式のforumにしっかり書いてあるけどな。
今落ちてるけど
0673nobodyさん2005/06/19(日) 03:04:25ID:???
モジャ早く復活しないかなぁ
つかミラーもねーのかよ
ダウンロードしたいのに〜
0674nobodyさん2005/06/19(日) 06:09:40ID:???
なんかもじゃもじゃしてきた
0675nobodyさん2005/06/19(日) 14:00:36ID:???
もしかしてこのままmojavi終了なんじゃないだろうか?
0676nobodyさん2005/06/19(日) 16:01:49ID:???
たかがHDDクラッシュでこのていたらく…
こんなレベルの管理しかされていないものを組み込むのは
結構リスキーなんじゃないかと思えて来た…
■ このスレッドは過去ログ倉庫に格納されています