トップページ⇒php
983コメント417KB

Pear

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。 NGNG
ってどうよ。
025224903/09/10 12:58ID:???
>>251
> ・が、hogeに対しての持続的接続により接続数が足りない
というのはちょっと意味がわかりません。 PostgreSQL 側の接続数制限なのか
pgsql.so の接続数制限なのかのいずれかだと思いますが。
いずれにも該当しない場合は持続的接続を行っている Apache プロセス内で別
の接続を行うことは問題ないはずです。

ということではなかったらごめんなさい。

日本語ドキュメントについては元のドキュメントの構成が変化しているのでそ
れに追随できていない状態だと思います。今は廣川氏ひとりでがんばっている
状態です。ここの方々で協力できる人がいれば CVS アカウントを申請して参
加して下さい。とはいっても皆さん忙しそうですね...
0253 ◆AngelH/kMI 03/09/10 13:53ID:???
>>252
ちょっと自分でもわかりづらい書き方だなと思った(汗
すみませんです。

>接続数が足りない
postgres側の制限(今はpgpool使ってるからそっちの制限)ですね。
16接続出来るように許可している状態で、
hogeデータベースだけで16接続pconnectしているから
template1に接続しにいっても出来ない状態。

>今は廣川氏ひとりでがんばっている状態です。
うあ、それは大変だ・・・(汗
協力出来ればいいんですが、ちょっと今私生活のほうが
ばたばたしていて手が出せない状態(苦笑
0254nobodyさん03/09/10 21:36ID:???
>>253
オサ松タンみたいに単発な訳でも役立つかな?
025524903/09/10 21:49ID:QKM7iw+w
>>254
ある程度の部分ごとに訳がある方が良いですが、訳があるだけましという現状
では役立つのではないでしょうか。

後々は対訳表やルールが必要になると思いますが。こんな感じで。
http://cvs.apache.jp/docs-project/
0256nobodyさん03/09/15 19:03ID:HzcwV9T4
HTML_QuickFormを、入力→確認→終了みたいな3画面をやるにはどうやるのがスマートかな。
なんか入力→終了なら簡単にできるけど間に確認はさむと難しい。
025718103/09/16 12:15ID:???
>>256
少し前に同じようなことで悩んだんですが...

結局,HTML_QuickForm だけではうまくいかない,という結論に達しました.
で,hidden エレメントでフォームの遷移をステータス管理して,
> if( validate() ){
>   if( 確認から POST された ){
>      process();
>   } else {
>      freeze();
>   }
> } else {
>   // フォーム画面表示
> }
って動作をするようにしました.
でもって,HTML_QuickForm オブジェクトに寄生してこういう管理をしたり「次へ」「戻る」ボタンを追加したりする別のクラスを作ったりしました.
これ使うと,使う側のコードはスマートだけど,そのクラスのコードがとってもダーティ(w

最近になって HTML_QuickForm_Controller という PEAR クラスも出てきたんですが,
これはマルチ画面フォームの制御には向くんですが,同一フォームの確認画面には向いてないみたい.
0258nobodyさん03/09/16 20:37ID:bh8H+vxm
>> 257

お、ありがとう。なるほど、分かりました。
「次へ」「戻る」クラスのサジェスチョンもキボンヌ!
025918903/09/17 15:10ID:???
>>257
HTML_QuickFrom_Controller なんてあったとわ。今度見てみまつ。情報ありがとう。

自分は $form->validate() しちゃうと addRule が評価されるので
$form->addElement('submit', 'preview', 'ぷれびゅ〜');
とか submit オブジェクトの押し下げで遷移状態が判定できるようにしといて
遷移状態判定 -> (必要なら) validate() しています。

if (!empty($_POST['preview']))
{
 // snip
 if ($form->validate())
 {

if 文の中では画面遷移状態の判定だけ行って $mode に preview や entry といった値を設定し後で switch 文で分けてます。
あまりスマートぢゃない、、

何か勘違いしてたら指摘したってください。

ところで
$var = $form->getSubmitValue('obj_name');
if (!empty($var))
だと判定出来るのに
if (!empty($form->getSubmitValue('obj_name')))
だと parse error, unexpected '(', expecting ')' になってしまうのは一体、、
getSubmitValue の存在意義も今ひとつ分かってなかったりします。 $_POST ぢゃダメなのかよ、みたいな。
0260nobodyさん03/09/17 15:16ID:???
ところで PHP-kansai でまいぱぱさんが 関西オープンソース&フリーウェア2003 (OS+FW) BOF の誘いを流しているのですが反応ゼロで、、

関西で PEAR や Xoope ネタ握ってる人、少なくないのにちと寂しいです

昨年はまつもとさんが Ruby 公演を打って撃沈された人が続出、
OS+FW 以降、某メールマガジンの某連載が Ruby 一色に染まったりとか、、
影響力のある良い舞台だと思うので布教にはもってこいですよぅ

|_・) とか呟いてみるテスト
0261avx03/09/18 02:30ID:???
PEARのスレが立っててしかもこんなにアクティブでなんだか嬉しい。

中・大規模のPHPを使ったWebアプリ開発には、
PEARは欠かせませんね。

MVCモデルでModelとControllerは全てクラスで設計/構築し、
PHPUnitを使ってXPを実践しました。
ドキュメント化にはPHPDocは重宝しますしね。

DBなどボトルネックとなるものに対してはCacheが
非常に有効です。
DBキャッシュでSQL結果をキャッシュしたり、
Output(Compression)キャッシュで生成した出力をキャッシュしたりするとかなりパフォーマンスがあがります。

Logクラスを継承した独自のログクラスを作ればかなり便利です。

あとPEARのコードみるとデザインパターンとかが実践されているので、とても良い勉強になりますよ。

PEAR SOAPは開発時のデバッグが大変ですが、ちゃんと動きます(笑)
随分前にPEAR SOAPを使ってつくった課金システムが10万/月くらいこなしてるし。



0262nobodyさん03/09/18 03:57ID:???
わー、凄い、、
雑誌や BOF を利用して是非話を伺いたいところ。
開発スタイルと PEAR のつかいどころがとてとて興味深いです。

PHPUnit は挫折しました。検証コード書く手間が、、
PhpDocumentor は使ってますがおざなり。
企業規模は存じませんが、SOAP っていうかそもそも Webサービスで利益出してるってのが興味深く。
PEAR::Log ってのも知りませんでした。フレームワークなのか、、LiveUser と使い比べてみたいかも。

中・大規模で使えるってのも興味深いです。
PHP 自体、今安心して使えるのは中規模までとか思ってましたので (PHP-load-test でみんな頑張ってくれてますが)

私は PEAR は専ら開発コストを落とし質を保つために使っています。
一人で、繰り返し押し寄せる自社案件をこなす業態に問題があるのかな、、

# 頑張って開発しても _| ̄|◯ 営業さんが目標達成率 2% とかやってくれて
0263nobodyさん03/09/18 14:29ID:???
>>259
empty( ) は言語構造であり,変数以外のものに対して使用しても意味がない,と書いてありますね...
> ttp://www.php.net/manual/ja/function.empty.php

> if ((bool)($form->getSubmitValue('obj_name')))
だと動くのでしょうかね.

// 以下オフトピ
perl やってたせいか,キャストって概念自体がいまいち好きになれない...
が,ひとつ発明(?)した使い方で,
true/false を引数で受け取るメソッドをコールする時に意味がわかるよう
> $DataObject->find( (bool)'fetch first result' );
なんて書き方をして,読む時に「この true はどういう意味だっけ?」とならないようにしてますが,却って読みにくい気も少ししてきた(w
026425903/09/18 18:33ID:???
うは、、RTFM な質問を投げてしまうとわ。見落としてました。
ありがとうございます。
0265nobodyさん03/09/18 23:52ID:???
>>259
Mって何?
Manual?

>>265
STFG{Search The F*** Goole}
026625903/09/19 03:58ID:???
Read The Fine Manual

PHP ってマニュアルの出来いいっすよね。
あと PEAR なら Read The Source, Ruke.. とか。
0267nobodyさん03/09/19 13:52ID:???
このスレ読んで HTML_QuickForm を使ってみようと思ったんですが
ソースのコメントにすら説明が書かれてないですね。解読するしか
ないのか。。
0268nobodyさん03/09/19 13:54ID:???
>>267
自己レス。
ちゃんとPEARのマニュアルにありました。ごめんなさい。
0269nobodyさん03/09/19 14:11ID:???
>>267
HTML_QuickForm は Read The Source しても意味わかんねーことが多いっす(w
ほんの2〜3ヶ月前までは PEAR のマニュアルにも載ってなかったんですよね.
ひたすら docs を CVS から見て勉強したりしました...
> ttp://cvs.php.net/cvs.php/pear/HTML_QuickForm/docs
example4 辺りが,もっともシンプルでとっつきやすいサンプルになっていると思います.
0270nobodyさん03/09/19 14:24ID:???
>>269
今はpearのマニュアルかなり整備されてるみたいでした。
メソッドごとの解説とかあるし。かなり便利になったん
ですね。ただ量が膨大です。

テーブルを使わないでフォームを出力したいんですが、こ
れは rendler ってのを使えばいいんですかね。しばらくは
マニュアル解読に時間を割いてみようと思います。きっと
それだけの価値があると信じつつ。。

教えてくれたアドレスも今から見てみますね。
0271nobodyさん03/09/19 17:20ID:???
>>270
サンプルスクリプトが付属しているのでそれがバイブルです。
0272nobodyさん03/09/19 21:28ID:???
ググったら TrustBee の山本たんがこの前の PHPCon でプレゼンした資料も出てくる。
あと、解ってる人の解ってる人へのメモで可用性イマイチな気がするが
http://enzo.bz/pearwiki/?%5B%5BPEAR%2FHTML_QuickForm%5D%5D
とか。
本家 ML 漁れば結構 HTML_QuickForm 絡みの質問は出てくる。
0273nobodyさん03/09/20 03:23ID:???
>>270
setElementTemplate() を使ったサンプルが docs に入ってるのでそれを参照すると良いです.
デフォルトの Renderer なら,HTML_Template_IT 風に指定できますね.

> ttp://cvs.php.net/co.php/pear/HTML_QuickForm/docs/renderers/labels-default.php?r=1.1
わかりやすいのはこの辺でしょうか.
BEGIN〜END のブロックは数種類あって,
・required → addRule() で required を設定した項目の時だけ表示されるブロック
・error → validate() でエラーになった時に表示されるブロック
・label_2 → addElement() する際に $label に string でなく array を指定した際に,2番目の文字列が入るところ
って感じですね.


...こうやってひとつひとつをサンプルや各 Web や試行錯誤で会得していかないとならないのが残念なところ.
0274nobodyさん03/09/20 05:45ID:???
>>273
PEAR インストールディレクトリの docs/renderers にも同じ物がインストールされているよー

と、そういう話が無いまま流れてきたので一応フォロー。新しいパッケージをインストールした時は docs をチェック。
0275nobodyさん03/09/20 07:09ID:???
>>273 >>274
どうもです。pearの各ライブラリにdocsディレクトリがあって
そこにサンプルがいっぱいあるなんて知りませんでした。
さっそく cvs co pear しちゃいました。

試行錯誤が必要なのは残念ですよね。ただ、それをする価値は
あると思うので頑張ってますが。1年後ぐらいにはpearもメジャ
ーになって翻訳じゃなく、ちゃんとした日本語の解説書なんか
も発売されると嬉しいです。
0276nobodyさん03/09/20 21:13ID:???
>>274
フォローありがとうです.
Web で参照できる URL の方が貼りやすかったのでそちらを使ってました.

# という他に,ssh 越しで docs 見るより Web の方が見やすい(色分けされるし)という大きな理由も(w
0277nobodyさん03/09/20 21:21ID:???
>266
禿同!
てか漏れPHP会得するのにほとんどマニュアルしか見てなかったよ。
027827503/09/20 21:25ID:???
>>276
ですよね、ポインタ入れてくれるのって嬉しいっす。
知らない人いたら何かなーとか思ったのでちとお節介でした。
レス楽しみにしてます、これからもがんがってくださいー。
0279nobodyさん03/09/25 02:03ID:???
悩みです。

XMLライクなマークアップを吐き出すスクリプトを作っています。
まぁ,RSSみたいな文書構造だとおもってください。

PHPのクラスの中にマークアップ自体を取り込んで書いてしまうのは邪道でしょうか?
あくまでも,文書構造自体は外部参照させたほうがコードはきれいなのでしょうが,
めんどくさいのと,モジュール化しにくいというのが理由です。

PEARのコーディングではどうなっているでしょうか?
0280nobodyさん03/09/26 11:07ID:???
PEAR.php.net から日本語マニュアルの選択肢が消えたようで。
自分的には全然困らないのですが、これでまた認知/浸透に一つ隔たりが出来ちゃったのかと思うと辛い部分も。

PEAR の各クラスを使ううちにメモ取りして時々公開もしてたんですけど、それを続けていくと「一番いいのは邦訳チームに参加する事」に行き当たって…
参加に際してまとまった時間が作れない事と、プログラマ/Unix歴1年生なので遠慮してましたが、、出来ることあるかな、、
0281nobodyさん03/09/26 11:18ID:???
>>280
人手は多いにこしたことないですし経験はあまり気にせずにチャレンジしてみ
てはいかがでしょうか。出来ることはたくさんあると思いますよ。
028228003/09/27 06:06ID:???
>>281
ありがとうです。
ちと動いてみます。
0283nobodyさん03/09/29 05:42ID:???
QuickFormについて質問させてください。
フォームの出力形式をいじるにはrendererを使えばよく、
rendererには5種類あるらしいというとこまでは分かりま
した。テーブルタグを使わないで出力したいんですが、そ
れってDefault rendererで出来ますか?英語が苦手なもの
で全て読むのがつらいです。どこを読めばいいかだけ教え
てもらえないでしょうか?
0284nobodyさん03/09/29 09:43ID:???
>>283
renderer って配列作って渡してるだけなので中見たら解るよ。

取り敢えず Smarty 用のレンダラは行ける。 Dynamic より Static の方が構造がシンプル。
0285nobodyさん03/09/29 13:58ID:???
>>283
table タグを使わないで出力ってのも Default_renderer で出来ます.

>>273 を参照しつつ,HTML_QuickForm オブジェクトを new して,ひとまず getElementTemplate() の出力を見てみてください.
で,それ見ながら何となーく理解した気になってテキトーに HTML を書き,setElementTemplate() して,
addElement() して display() して,出力された HTML を眺めると,簡単に解るんじゃないかと思います.

# でも,PEAR のマニュアルとかは難しい英語は使われていないので,練習して読めるようになる方がオトクでっせ(w
0286nobodyさん03/09/29 14:21ID:???
>>284>>285
レスサンキューです。ちょっと今から試してみてまた結果
書き込みますね。遅くなるかもしれないですけど。

# 最近がんばって読むようにしてます。マニュアルとかに
よく使われる単語(implementとか)が染みついてきてなんと
か読めるようになってきました。
0287nobodyさん03/10/07 11:09ID:???
APCについて質問させてください。
APC-2.0をインストールしてみたのですが、php.iniに
extension="apc.so"
とだけ書いて、apacheを起動したところ、ログに

PHP Warning: Unknown(): Unable to load dynamic library './apc.so'
- Cannot open "./apc.so" in Unknown on line 0

と表示されてAPCが有効になりません。なにか対処方法はありますでしょうか。

環境は
FreeBSD-4.8-RELEASE
Apache-1.3.28
PHP-4.3.3
です。
0288nobodyさん03/10/07 14:54ID:???
>>287
extension_dir に apc.so は存在しますか?
存在するならパーミッションはどうなっていますか?
028928703/10/07 21:38ID:???
>>288
extension_dir(手元の環境だと/usr/local/lib/20020429)にapc.soはあります。
パーミッションは、次の通りです。

-rwxr-xr-x 1 root wheel 217706 Oct 7 10:57 /usr/local/lib/php/20020429/apc.so

よろしくお願いします。
0290nobodyさん03/10/09 10:04ID:???
php.iniの
extension_dirが
"./"
と、なってません?
0291nobodyさん03/10/09 15:22ID:???
.htaccess に include_dir "." とか記述されてて php.ini の設定を上書きしちゃってるとか...
問題のページと同じ場所で phpinfo() して include_dir に /usr/local/lib/php/20020429 が含まれているかどうか確認されてみてはいかがかと.
# 既に確認済みだったらすんまそん
0292nobodyさん03/10/10 00:38ID:???
>>291

php.iniにinclude_dirというdirectiveは、そもそもありません。

include_pathあるいはsafe_mode_include_dirはありますが、
いずれにせよ、それらは、ここで質問されているモジュール(loadable
extensions)のディレクトリとは無関係です。

仮に、php.iniのパス関係directiveをチェックするのであれば、
extension_dirを確かめなければなりません。
029328703/10/10 11:01ID:???
アドバイスを頂きまして、どうもありがとうございます。

php.iniを確認したところ、
extension_dir = "./"
になっていましたので、
extension_dir = "/usr/local/lib/php/20020429/"
に書き直して、httpdを再起動したところ、無事にAPCが動き出しました。

本当にどうもありがとうございました。
0294nobodyさん03/10/24 15:39ID:???
PHP_Parser 0.1ってすごくねぇ?
0295nobodyさん03/10/24 18:02ID:???
脊髄反射で何も調べず書き込み
何するもんなの?>PHP_Parser
0296nobodyさん03/10/24 21:41ID:???
PHP のソースを解析して,クラスだのメソッドだの変数だのを細かく情報作成するモジュールなわけですね.

ちょうど php-users ML でこれを必要としてそうな人がいたので投稿してしまいました.
「他人の褌で相撲」たぁこのことだ.

しかし,すごいんだけど,使うシチュエーションがあまり思い浮かばないな(w
0297nobodyさん03/10/24 22:25ID:???
> 使うシチュエーションがあまり思い浮かばないな(w

前に誰かどこかで話してたよな。と思って、、発見。

[pear-php:0057] PHP のリバースエンジニアリングツール

元々はコードからUMLを生成するツールを探していたみたいだけどyacc, lex, javaccとかに話が及んでコードパーサーあると便利だねって話になってる。
上のリバースエンジニアリングの話もあると思うけど、あとはDoxygenのようなツールが出来るよね、とか。
> また、ちょっと複雑な定型フォーマットを汎用的なフォーマットに変換したり、
> DB に格納したりする処理も簡単に対処できるでしょう

重たんが色々つついてくれてるので興味ある人は見てみると良いかも。[email protected]で探すよろし。

> PHP_Parser の説明にあった phpJay をググってみると phpLex というのがある
> ようですが…

とかも。

ついでにMLに振った話ならヲチスレの方で話題になってます。話題というか餌というか。
あれダメこれダメ言って今の方法にこだわらないならもっと良い方法はいくらでも学べると思うんですよ。
テストやりたいならPHPUnitでいくらでもサンプルがあってもっとスマートでノウハウが公開&共有された方法が構築できるわけで。
何故みんな各論で駆け込んでくるんだろう。せっかくML使うなら達人の考え方や持ってる物を最大限に引き出してパクろうとすればいいのに。
0298nobodyさん03/10/24 23:26ID:???
> [email protected]で探すよろし。

そういえばそんな話をしてたなぁ,と過去ログ漁り.
こういうメタなツールは必要とする人間も少ないのか,話題がぷっつり切れてますね.
面白そうな話題だけに,ちと残念.

各論で来るのは,それ以外の方法を知らないんでしょうねきっと.周囲に「きちんと出来る人」がいないと,きちんとした方法を知ることもできず,かといって考え出すこともできない人たち.
この辺について書こうとしたら pear と全く関係ない上にただの愚痴になったので省略(w
>>297さんの考えにほぼ同意です.
0299nobodyさん03/10/25 00:24ID:???
っていうか,PHP_Parserで解析してそのコードがPHP5(betaだけど)が利用可能かどうか調べることができる。
つまりこのクラスは PEAR自体がPHP5(betaだけど)に対応するためのツールなのだ。
0300nobodyさん03/10/25 00:37ID:???
おお!

ってあれ?
PHP5とPHP4で差違を吸収するって方向で話が進んでいたような。
ネームスペース廃止で結局どうなったのか知りませんけど。
0301nobodyさん03/10/25 00:51ID:???
なるほど,目から鱗 >>299

といいつつ,大抵のコードは implicit_clone さえあれば何とかなる気がしますが(w
# っつーか,なきゃ死ぬ
0302nobodyさん03/10/25 03:30ID:???
PHP_Parserのパース結果をPEAR Var_dumpで
表示して遊んでるけどなんか楽しいなコレ
phpDocumentorと合わせて
何もかもドキュメント化したくなる・・・
0303nobodyさん03/10/25 11:23ID:???
>>302
wikiにでもあげてみて。
php -sと比べてみたい。
030430303/10/30 10:47ID:???
var_dumpみたいな出力なのね。誤解してました。
0305nobodyさん03/11/01 14:59ID:???
ヴァージョンアップで仕様ころころ変わりすぎなんだよオラ
0306nobodyさん03/11/02 02:21ID:???
HTML_QuickForm 3.2 で,rule の callback 仕様が「BC break」とかいってあっさり互換なくしてて,
ちと不安に思ってたら,最近 BC 維持のコードが加わった模様.
よかったよかった.
0307nobodyさん03/11/09 23:44ID:???
HTML_QuickFormでArrayレンダラかけた時の配列内の
element配列がname属性のインデックスで取得する事のできる
簡単な方法は今のところ実装されてないんでしょうか・・・
自前でインデックス用の配列作るしかないのか・・・
030830703/11/27 02:34ID:???
結局Arrayレンダラをちょっといじって
element名をキーにしたelement配列を吐く
レンダラを自前で用意しました

HTML_QuickFormって凄いですね
管理画面とか作る時に
凄い楽になりそうだ・・・
0309nobodyさん03/12/07 03:50ID:Oq3ugULs
話題は無いのか
PEARMLもサッパリだし
0310nobodyさん03/12/07 14:52ID:???
最近マニュアルを翻訳してゆ。
phpDocumentorを使うのが楽しくって楽しくって。
0311nobodyさん03/12/08 00:50ID:???
phpDocumentorを公式にしたんだから
Documentorがエラーはかないように
コメント直した方がいいんじゃないのかとちょっと思う
せめてコアなモジュールだけでも
0312nobodyさん03/12/09 18:18ID:???

>>309
話題投入。
大分前にこのスレで晒したケースツール EnterpriseArchitect がマジで PHP に対応してくれますた。
バグ抱えてたりディレクトリまたいだ継承関係の探索が出来ないとか問題多いけどこれでクラス図 <> コード を往復する手段が出来た。
OO ふぇちな人は幸せになれると思われ。

EnterpriseArchitect (30 日試用版有り)
http://www.sparxsystems.jp/ea.htm
コード生成/リバースエンジニアリングの利用には Professional 版以上が必要

スクリーンショット
http://phphp.net/php/archives/sc_ea_phpreng.gif
http://phphp.net/php/archives/sc_ea_inherit.gif
0313nobodyさん03/12/10 05:15ID:???
上へ参ろうぞ
0314nobodyさん03/12/12 22:18ID:???
ひさしぶりにキタ━━━━━(゚∀゚)━━━━━!!!

pecl.php.netって紫なのね。
緑のPECLバナーはいまのうちに拾って置かないと無くなるんだろうな。
php.netも
www,
gtk.
smarty.
qa.
pear.
pecl.
とカラフルになってきたね。次は赤かな?
0315nobodyさん03/12/13 01:27ID:???
PEAR特集キタ━━━━( ゜∀゜)━━━━!!!
0316nobodyさん03/12/13 15:44ID:???
Web+DB Vol18、本屋からの掃討作戦きぼんぬ。そして特集第弐弾を。。
0317nobodyさん03/12/13 23:44ID:???
>>316
それ以前に不定期刊をやめさせるよう買い占めるべき。
そしてPHPの連載枠を!
0318nobodyさん03/12/14 03:36ID:???
>>314
bugs ってのもありますえ.
色よりも虫が気になるデザインですがw

ところで Web+DB Vol.18 っていつ発売なんでしょーか.
まだ Vol.17 の情報しか載ってないや > ttp://www.gihyo.co.jp/magazines/wdpress
0319nobodyさん03/12/15 15:51ID:???
うぅ
どーしてHTML_Template_IT(X)にはgetBlockTemplate()とゆーメソッドが存在しねーのだ!
0320nobodyさん03/12/15 20:54ID:???
まぁ詳しい事は知らないけど子供相談室 vol6 のテキストなら既に古くなってます。多分。
英語マニュアルを読むか、今月中に翻訳の予定があるのでまたーり待ってください。
0321nobodyさん03/12/22 16:36ID:???
ちとネタ振ってみます。
PHP-users 19438 の話題は、 ピアソンの J2EE パターンの 5.1.2 「同期トー
クンを導入する」に詳しいですが (例として Struts のコードが載ってい
ます) 、こういう簡単なユーティリティクラスが PEAR にあれば皆様は使いた
いと思われますか?皆が一様にこういうのを作るのはアホらしいと感じている
今日この頃です。

最近 Mojavi (http://mojavi.org/) を実践投入しました。 Pharme よりかゆ
いところに手が届いて良い感じです。
雑感を列挙しますと、
- Filter の実装は素晴らしい。
- Forward もリダイレクトを使っておらずスマート。
- 中途半端な RBAC 機構 (User.class.php) が辛い。 LiveUser 等を使用した
ければ User.class.php を書き換える必要がある。
- 更に上記 User.class.php で session_start() がハードコードされている
のが辛い。 HTTP_Session + LiveUser + Mojavi だと結構書き換える必要が
ありそう。
- 辛いところもリファクタリングすれば素晴らしいものになりそう。

といったところです。

http://mojavi.org/diagrams/action_sequence.png
http://mojavi.org/diagrams/filterchain_sequence.png

あと (M)DB_QueryTool はクエリ構築やクエリの保存等に適しておりなかなか
良いです。

フレームワークとか CMS の実装が多すぎるのが一番辛い...
0322nobodyさん03/12/22 17:11ID:???
> フレームワークとか CMS の実装が多すぎるのが一番辛い...

辛いっすねぇ. そのくせ決め手が無いような.

たまたまフレームワークの誕生シーンをヲチしてると
・自分が欲しいのは Web アプリケーション開発時に必要なお決まりツールのお膳立て
でもデベロッパーが作りたがるのは
・発想やアイデアの検証/実装としてのフレームワーク
ってな感じで. その辺がギャップなのかもと思った事があります.
032332103/12/22 17:49ID:???
>>322
そうですね。面白くもないビジネスロジックを書くよりフレームワーク書く方
が楽しいのは解りますけど。どこかの CMS か ERP 系の紹介サイトのトップに
でかでかと、「これ以上新規のものを作らないで下さい」と書いてあるのには
笑ってしまいました。

とにかくある程度のリソースの集中が望まれますね。
0324nobodyさん03/12/23 05:54ID:???
>>321
そのサイトのフォントやたら小さいですね。。
032532103/12/23 19:52ID:???
>>324
そこに限らず小さいサイトが多いですよね。 CSS で制御されていてサイズ変
えても効果ないですし。困ったもんです。
0326 ◆AngelH/kMI 03/12/24 17:11ID:???
>>321
面白そう。
Smarty連携も出来るみたいだし、ちょっとさわってみてます。
ただ、自分みたいに英語苦手だとやっぱ苦しいです(苦笑

// 根本的にMVCモデルに対する理解が浅いし…
032732103/12/24 17:35ID:???
>>326
Smarty 連携は SmartyRenderer.php を見れば解りますが固定で Smarty クラ
スを呼び出していますので、 Smarty の派生クラスを呼び出したい場合は少し
改造が必要です。ドキュメントはそのうち邦訳して Wiki にアップしておきま
す。下の即席パッチの場合は Smarty (派生) クラスは webapp/config.php で
自前でロードしておいて下さい。本家にも提案してみます。

--- mojavi-1.0.orig/lib/SmartyRenderer.class.php 2003-11-07 13:05:48.000000000 +0900
+++ mojavi-1.0/lib/SmartyRenderer.class.php 2003-12-24 17:30:04.317000500 +0900
@@ -20,14 +20,17 @@
* @param params Smarty initialization parameters.
* @param template Template file.
*/
- function SmartyRenderer (&$controller, $params, $template = NULL)
+ function SmartyRenderer(&$controller, $params, $template = NULL,
+ $class_name = null)
{

parent::Renderer($controller, $template);

- require_once(SMARTY_DIR . 'Smarty.class.php');
-
- $this->_smarty =& new Smarty;
+ if ($class_name === null || !class_exists(strtolower($class_name))) {
+ $this->_smarty = &new Smarty;
+ } else {
+ $this->_smarty = &new $class_name;
+ }

// apply Smarty settings
$keys = array_keys($params);
032832103/12/28 21:55ID:???
Mojavi 2.0b1 が出ています。今から使うならこちらの方が良いでしょうね。
http://www.mojavi.org/
0329 ◆AngelH/kMI 03/12/29 17:00ID:???
>>328
2.0b1使ってみようとしたけど、
ドキュメントも見あたらず手が出せず(苦笑

おとなしく1.0さわりながら様子見しようかなぁと。
033032103/12/29 18:16ID:???
>>328
先程 1.0 => 2.0 b1 の移行が終わりました。
2ch PEAR Wiki にいい加減なチュートリアルを掲載しておきましたので参考にして下さい。
質問があればなんでもどうぞ。
0331 ◆AngelH/kMI 03/12/29 18:48ID:???
>>330
おお、素早い。
早速見てきますねー。
0332 ◆AngelH/kMI 03/12/29 23:16ID:???
で、現在試してるんだけど・・・
どうやらPHP5だと駄目っぽい?

Fatal error: Class 'Filter' not found in /home/hogehoge/mojavi/mojavi-all-classes.php on line 6

こんな感じ。

0333nobodyさん03/12/30 02:37ID:???
Web + DB 発売されたんで立読みしてみました。
なにやら新しいテンプレート(名前わすれた)とかコードを暗号化する
やつとか色々あってよさげでしたよん。あの雑誌最近 JAVA ばっかだし
値段もあれなんで買ってないんだけどね。その割に MDB とか興味ある
記事がちょぴっとだけ載っててほんと困ったもんです。。
0334nobodyさん03/12/30 08:03ID:???
>>333
今号はPostgreSQLのコネクションプーリングの話とかも乗ってる。
PEARも第2特集だし買ってもいいのでは?

あと俺は著者ではない。
0335 ◆AngelH/kMI 03/12/30 11:10ID:???
>>333
立ち読みでなく買ってほしいなぁ(苦笑
売れ行きが良ければ、頻繁にPHPのこと掲載されるかも?

自分は著者の一人なので露骨な宣伝ですが。
0336nobodyさん03/12/30 11:28ID:???
Linux Magazine みたいに全部 DVD に入れば最高だけど、
それが無理なら PHP のとこだけまとめてムック化してほしい。
0337nobodyさん03/12/30 13:46ID:???
>>336
のんのん、月刊専門誌創刊ですよ。
入門/初心者記事切り捨ての歯ごたえ抜群なヤツ。

カナダ、フランス、ドイツじゃぁ専門誌出来てるんだし。

# まぁ無理てのは解ってるけど (´・ω・`) 言わせるだけは言わせて
0338nobodyさん03/12/30 13:56ID:???
http://www.phppro.jp/
0339nobodyさん03/12/30 19:24ID:???
>>338
それの元はカナダの php|architect
アシアルさんが改訂加えたりオリジナル記事を入れたりといった事があるようなのでその辺期待したいけど。
0340nobodyさん03/12/30 19:25ID:???
>>333

新しいテンプレート,「Flexy」ですな。
買って読んだけど,結構面白かった。

しかし・・Web+DB,1480円はちょっと高いよ・・・
0341nobodyさん03/12/30 19:57ID:???
>>340
3食 袋ラーメンにして買いますた。
今号が特別に高いワケではなくコンスタントに \1,480 なんだよね。
まぁマイナー雑誌の宿命というか。
LinuxJapan を思い出した。
0342nobodyさん03/12/30 22:47ID:???
>>335
誤解を招くような表現でごめんなさい。今回の特集はさすがに
立ち読みで済ませられるような量じゃないしちゃんと買います
よん。英語のドキュメントすら乏しい状況であそこまで記事書
くのって並大抵の苦労じゃないと思いますし。

別に JAVA が嫌いなわけじゃないけど PHP の記事がもっと増
えるといいですね。ムック化されたら絶対買います。
0343nobodyさん03/12/31 03:15ID:???
連載じゃないのでムック化されないような。
あとPEARって腐るの早いからムック化作業も死ねそう。
PHP子供相談室の Template_IT 記事とかもう遅れちゃってるし。
修正が多いって事はその分買う価値もあるって事なんだけど。

# 雑誌に \1,480 無理ーってのはよく解る。
# 筆者の人数増やして青マンモス形式で緑マンモスとか?
# 雑誌/出版の業態が合致してないんかな。いっそアシアルさんで出版とか。
0344 ◆AngelH/kMI 04/01/03 12:48ID:???
mojavi + Smartyで少しつまづき中・・・

1. Smartyでプリフィルタ/ポストフィルタ使いたい時はどうする物?
 派生クラス作ってそこで書き換えようと思ったら
 compile_dirは書き換わってるんだけどフィルタが効いてない様子

2. 他のページへのリンク
  Aタグとかで他のページに飛びたい時に
  <a href="/index.php/module/ModuleName/ActionName/">
  とかそのまま書いてしまう物なんでしょうか?

// というか、これをPEARスレに書くってのも何か違うかな(苦笑
0345nobodyさん04/01/03 13:38ID:???
mojavi で Google すると AdWords が出る。金払ってるんだね。
0346nobodyさん04/01/05 10:46ID:???
>>343
ムック化は別に連載じゃなくてもいいと思うよ。
PHP 記事は無差別にページスキャンでもして PDF 化、で十分。
日経ソフトウェアも PDF 化してるね。>>336
034732104/01/05 15:45ID:???
>>344
1 についてです。どういう動作を期待されているのか把握できていませんので推測に
なります。ご了承下さい。
確認のために書きますが、現状のコードでは View の子クラスから Renderer の子ク
ラスのインスタンスが戻ってきた直後に $renderer->execute() によって変数の展開
が行われます。 (ExecutionFilter.class.php の 157 行目以降を参照。)
なのでポストフィルタで $smarty->compile_dir 等を変更することは (可能だとして
も) 意味を持たないように思えます。

Smarty の設定や変数を自由に設定しながらフィルタを使用して最終的に表示させるた
めの私の考えつく要件は、
1. SmartyRenderer (またはその派生) クラスに対して singleton() メソッドを実装
したクラスを用意する。
2. SmartyRenderer (またはその派生) クラスで execute() メソッドで何も行わない
ようにする。あるいは少なくとも $smarty->fetch() メソッドを呼び出さないよう
にする。そして元の execute() 相当のメソッドを別に用意する。

長いので次に続きます。
034832104/01/05 15:46ID:???
347 の続きです。

3. Smarty 用のフィルタを作成する。
3.1. プリフィルタを実装する。
3.1.1. この段階で singleton メソッドを呼び出しレンダリングモードを RENDER_VAR
に設定する。現在のところ何故かレンダリングモードを設定する箇所が 2 つ
あります。 $controller->setRenderMode($mode) と
$renderer->setMode($mode) です。 2 つうちどちらかが RENDER_VAR になっ
ている場合は $renderer->_result に結果を格納するようです。このプロパテ
ィは $renderer->fetchResult() で取得できます。デフォルトは、
$renderer->_mode => RENDER_VAR
$controller->_rederMode => null
です。
3.2. ポストフィルタを実装する。最後に 2 の execute() 相当のメソッドを呼び出し
てから $renderer->fetchResult() を使用して結果を出力させるようにする。
Note. View 派生クラスの execute() メソッド内では上記 singleton() メソッドを使
用して必要な操作を行う。

長文申し訳ない。あと勘違いしていたらすみません。
034932104/01/05 15:59ID:???
>>344
2 についてです。
現状では下記のメソッドが用意されています。
$controller->getRequestModule()
$controller->getRequestAction()
$controller->getCurrentModule()
$controller->getCurrentAction()

決めうちする場合は現状では便利なものは用意されていません。
自前でユーティリティクラスを用意すると便利かもしれませんね。

関係ないですが、 ActionChain クラスは現在のところ使われていませんね。
あと重複しているメソッドもどうにかしないと混乱を招くと思う...

>// というか、これをPEARスレに書くってのも何か違うかな(苦笑
一応 2ch PEAR Wiki の趣旨には沿っていると思いますが、皆さんいかがでしょうか?

332 の件はもう解決されました?
0350 ◆AngelH/kMI 04/01/05 16:37ID:???
>>347
う、ちょっとわかりづらかったですか。
えっとやりたいことはテンプレートファイルの文字コード変換で
プレフィルタでテンプレートファイルをUTF-8に変換。
ポストフィルタでSJISに変換、という感じです。

SmartyRendererクラスから派生させたMySmartyRndererクラスを作り、
その中で
$this->_engine->register_postfilter('postfillter01');
とかしてみたんだけど、変化無い様子・・・。

// $smarty->compile_dirの件は一緒に書くべきじゃなかったですね。
// こちらは解決してます。
0351 ◆AngelH/kMI 04/01/05 16:40ID:???
続き。

>現状では下記のメソッドが用意されています。
このメソッドで返ってきたアドレスを
setAttributeメソッドでセットする、というのであってるでしょうか。

>332 の件はもう解決されました?
とりあえず時間無かったので環境の方をPHP4に入れ替えてしまい、
原因追いかけてません(苦笑
また時間のあるときに見てみます。
■ このスレッドは過去ログ倉庫に格納されています