1 :
名無しさん@お腹いっぱい。 :
2001/03/27(火) 12:58 ID:1c1uFHsU ってどうよ。
2 :
名無しさん : 2001/03/29(木) 15:16 ID:???
梨?うまいよ
php-jp mlってぜんぜんオブジェクトの話題が出ないな。
4 :
電動ナナシ : 2001/03/30(金) 10:15 ID:???
>>3 全然でないわけではないけどねえ。乗ってくる人はすごく少ないね。
今までの書き方を改めるほどのメリットがないってことなんだろうねえ。
ユーザーは大別すると、
・プログラマ上がり: C や Perl 使いから PHP に転進
・デザイナーあがり: プログラミングの経験は Javascript 程度
という風な感じじゃないかな?。いずれにしてもオブジェクト指向とは
無関係な人たちだよね。
しかも書き捨てになるような仕事が Web の場合多くて、再利用とか
継続的な改良・品質向上のために努力すること自体の存在意義がない
んじゃないかとも思う。
# あるいはそういう本格的な仕事は Java か ASP でやるもんだと思われて
いるかもしれない。
乗りたいんだけど、MLの場合は文章を推敲する必要が あるから、めったに発言しません。Newbieだし。 ここの発言は、推敲してません。だから、楽。
>>4 ・ServletやJSPからの移行組
は少数派かな?私はこれです。
あと、日常的にRuby使ってるから、クラスが使えないとすごく苦痛。
むしろWebの仕事って、頻繁に仕様変更がある方だから、オブジェクトにする利点は大きいと思うのだが。 毎回書き捨てるのは馬鹿馬鹿しいよね。特に大規模サイトだったらクラス使わないと死ぬ。 ということは今のところPHP使ったサイトってほとんど小規模ってことか。
>>5 同意。昨日も叩かれている方がいた様ですが・・・
でもアレだけ誤字が酷ければ止む無しだな。
# ちなみに漏れはperl使ってたよ。(過去形)
9 :
電動ナナシ : 2001/04/05(木) 08:46 ID:???
>>6 あんまり見ないパターンかも。mod_ruby とかってどうなの?
>>7 そうだと思う。ショッピングカートを備えた小規模なオンラインショップとか、
情報提供系(掲示板とかオンラインマガジンとか)とか、小規模な顧客管理だの
在庫管理だのいったデータベースのフロントエンドってパターンが多いような
気がする。
そういや、HDE の Linux Controller も PHP 使ってるんだっけ?
あと、自分や自分のまわりの経験だと、納期が 1 週間とか 2 週間が当たり前
だから、クラスの設計なんかしている暇がないって感じ。リファクタリングも
PHP ではどうかなあ?。PHPUnit とか誰か書いてくれないかな・・・。
10 :
名無しさん@お腹いっぱい。 : 2001/04/05(木) 15:24 ID:JmQP/k0Y
>>9 >あんまり見ないパターンかも。mod_ruby とかってどうなの?
一応サーバに入れてはいますが、httpとかcgiとかのモジュールの
使い方を知らないので使ってません。
というか、うちの会社、Ruby使えるの私だけなんです:-P
動かしたことあるのは、これだけー。
--8<-- just.rhtml -- 8<-----------
<title>eRuby test</title>
<p><%="Just another Ruby Hacker,"%></p>
--8<--------------8<-----------
ま、どれも似たようなものですね。
もともと、スクリプト系のサーバページは、データベースのコネクション
プーリングが使えないと思っていて、PHPでさえ、最近使い始めたばかり
なんです。
あ、10は私の発言です(名乗るほどの者でもないんですが(^^;
>>9 クラス設計する時間は確かに足りない。
でも早くあがるからって全部手続きで書いてたら
最後の最後でデバッグ不能に陥るので、書きながら設計してる。
最終的にはそのほうが楽よ。
月光仮面おじさん登場!!!
ホームページを作ったものの、まったくアクセスが上がらな
くて悩んでいる人のためにお役に立ちましょう。
効率よく宣伝できる共有宣伝掲示板を18個設置しました。
全部宣伝して回ればなんと1,000以上の掲示板にカキコしたこ
とになり即、効果が期待できます。さらに共有掲示板の隠し
リンクを発見してそれらも全部宣伝して回ると計2,000以上の
掲示板にカキコしたことになり、さらにアクセスアップを期
待できます。もう、今日からアクセスが無くて悩むことは無
いです。今すぐここからアタックアタック!!
http://home9.highway.ne.jp/cym10262/
>アタックアタック!! 何かワラタ。
15 :
電動ナナシ :2001/05/01(火) 04:47 ID:???
16 :
初期不良 :2001/07/29(日) 18:17 ID:elMj9sro
あげぇ Pear 始めるにあたって良い参考資料とか無いっすか? とりあえず WEB+DB PRESS Vol.3 ? 今からちょっと本屋をのぞきに逝ってきます。
17 :
初期不良 :2001/07/30(月) 02:50 ID:dB6kV0UA
18 :
ほげ :2001/07/30(月) 14:06 ID:???
<<15 phpbuilder.comの記事を見て、変数の参照(&$varname)を初めて知った。 $this->_ac4->transferFrom(&$this->_ac3,10); //こんなやつ オブジェクトを引数にとる関数は、こういうことにも気を回さなければならないわけね…
19 :
初期不良 :2001/07/31(火) 12:11 ID:hyj.9jag
DB.php を使って mysql に接続する アクセスカウンタを作ってみた。 1 テーブルに 1 ドメイン、各ページごとにレコードをあててみた。 これで移植性抜群のアクセスカウンタになった!...のであろうか(笑) まあ、少なくとも改造はし易いのかな。
20 :
初期不良 :2001/08/02(木) 05:13 ID:zd0Wkgts
safemode on だと Pear 使えない... 何とかならんかな。
21 :
初期不良 :2001/08/02(木) 05:28 ID:???
「所有権そろえる」ってのは無しね。 どのユーザからも使えないと。
>>20 僕はしかたないので、自分のディレクトリの下にPearのフォルダをコピーして使ってますけど(要include_path変更)。
PEAR で魅力的なクラスある?
25 :
名無しさん@お腹いっぱい。 :01/10/06 17:23 ID:gfgfE.s6
age 今、PHPで話題に出来るものってPearとPHPUnitぐらい? なんか他に出てきてたりしないですかね。
保全っ
27 :
nobodyさん :02/07/25 06:56 ID:OvXFd6Ad
晒しあげ
(ピュア
29 :
nobodyさん :02/09/10 14:48 ID:6TGGwDo1
PHP4.0.6のPEARを使っております Postgresにコネクションをはると err_states = DB Error: connect failed になってしまいます。 $dsn = "pgsql://user:passwd@localhost/test_db"; などと指定してるのですが、、、 どなたかうまくいったことがある方がいましたら教えてください。 なおPostgresのバージョンは7.1です。
>>29 すんません自己解決しました。。。
/usr/local/pgsql/data/postgresql.confを
tcpip_socket = on
と設定したらOKでした。
31 :
山崎渉 :03/01/15 13:50 ID:???
(^^)
32 :
SMTP :03/03/03 22:32 ID:???
33 :
SMTP :03/03/03 22:33 ID:wyzh6cij
ああ、さげてしまった。
おおっPEARスレってあったんだ。おかげで気が付いたよ。 先日Mail_RFC822を使ったんだけど、なんかいまいちだった。 Mailそのものは使ったことないけど、ちょっと調べてみよ。
36 :
nobodyさん :03/03/04 12:03 ID:h/lVtdgr
>>35 レスどもです。
なんとかわかってきますた。青いマンモスの本読んでみたら
なんとか解読できそうなサンプルが出てきた。
PEARってあとどんな時に使うんだ?なんかイロイロ使えそう
な事は書いてあるけど・・・。
>>36 俺が使っているのはDBとAuthぐらい。
マニュアル読んでもさっぱりだから、
スクリプトを見たりテストを繰り返さないとなかなか使いこなせねぇ。
じっくり取り組む時間がホスィ
38 :
SMTP :03/03/04 15:41 ID:???
>>37 じっくり取り組む時間がホスィ
禿。さぁ、仕事仕事。
39 :
nobodyさん :03/03/04 15:59 ID:d8Ltqtvy
ちと長文です。すみません。。。 Auth の使い方がいまいち(というか今ヒャクくらい)分かりません。 auth.inc <?php require_once("Auth/Auth.php"); function loginfunc() { <form method="POST"> ユーザ名 <input type="TEXT" name="username"><br> パスワード <input type="PASSWORD" name="password"> <input type="SUBMIT" value="ログイン"> </form> } function auth() { $params = array( "table" => "member", "usernamecol" => "userid", "passwordcol" => "password", "cryptType" => "none", "dsn" => "pgsql://localhost/db_hage" ); $authval = new Auth("DB", $params, "loginfunc"); $authval->start(); if ($authval->getAuth()) { return $authval; } else { exit; } } $authval = auth(); ?>
40 :
39 :03/03/04 15:59 ID:???
これは書籍「PHPxPostgreSQLで作る最強Webシステム」からの パクリなんですが、これを hoge.php の先頭にinclude して、 hoge.php <?php include_once 'auth.inc'; printf("ようこそ %s さん<br>\n",$authval->getUsername()); ?> とかやると、とりあえず認証は動く(・・かな?)ところまでは確認できました。 ただ、実際には、/hoge.php?foo=bar のように呼び出したいのですが、 これですと認証で使われる POST によって、$_GET['foo'] が 消えてしまいます。GET で渡す変数はページによってまちまちなので、 hidden で持っていくのもめんどくさい・・・と、このような場合、 どうすべきなのでしょうか? Auth の使い方自体を勘違いしている可能性もハゲシクありますので 何かアドバイスをいただけますでしょうか。。
41 :
39 :03/03/04 16:02 ID:???
あうあう・・ age てしまった上にauth.inc に間違いが・・ loginfunc() の中のhtml 文は print <<<EOF 〜 EOF; で囲ってあります。
>>39-41 $_GETが消える? 消えないっしょ。もう一度確認してミソ。
ちなみに質問するときはageるべきでしょ。
43 :
39 :03/03/04 18:58 ID:???
ううう。。。
>>42 さん、確認しました。ちゃんと取れてました。
なぜダメだったかと申しますと・・・
えー うー あー
その・・・
if (_SERVER["REQUEST_METHOD"]=="GET"){
if(isset($_GET["hoge"])) {
・・・
ってなコトをやっていたせいでした。(すみません・・・
おかげさまで今は任意のページに認証をかけることができています。
ありがとうございました。
>>43 $_GETはGETじゃないとセットされないんだからそこまでしなくても・・・
45 :
39 :03/03/05 15:00 ID:???
GET とPOST で別の変数を受け取っているので・・・ というのは言い訳で、ホントは「こっちの方がセキュアかなー」という 根拠のない判断からでした。。。 ちゃんとアタマ使わないとこうなるという見本になってしまった。 うう。。はずかちー
うわ、PEARスレに書き込みが…。 全然見てなかったよ。 PEARとかライブラリ関連の情報あまり無いし、 気がついたことあったらメモ代わりにでも書いていくことにしよう。 >45 まあ、そんなに落ち込まなくても。 何も考えずにセキュリティホールありまくりのコード書くより遙かにマシだと。
>>46 ◆AngelH/kMIタソ キタ━━━━(゚∀゚)━━━━!!
ぃゃ、PEARネタで俺もいろいろ聞きたいことがあるんだが、
どれだけこのスレをヲチしている人が居るのか心配だた。
こちらのスレでも宜しくでつ。
先日Templateを使うやり方に突如(?)開眼して、やりかけのスクリプトを
書換えだしたのだが、ドツボにハマってまつ。(つД`)
落ち着いたら質問しまつ。
>>47 レス遅くなってすまそ。
PEARでよく使うのは
DB
Auth
Mail
HTML::IT
かなぁ・・・。
ドキュメント書きたいんだけど、なかなか時間がとれなく。
最近はSmartyにはまってまつ。
>>48 どもです。
HTML::ITがHTML_Template_ITに置き換わっているようだが、
マニュアルの翻訳が進んでませんね。
HTML::ITが翻訳されていたかどうかも知りませんけど。
で、内容的には似たようなものだし、HTML_Template_ITを使っていて、
今かかっている奴のVIEWクラスもそれらしい物になってきました。
今日発見したのだが、(スレ違いだけど)
$html= <<< __EOD__;
<table>
<tr>
<td>{$foo}</td>
<td>{$data}</td>
</tr>
</table>
__EOD__;
で、変数に取り入れることも可能なんですね。
#HTMLの中の人も大変です。(w
50 :
山崎渉 :03/03/13 17:08 ID:???
(^^)
保守sage
52 :
? :03/04/01 22:26 ID:qa00EU3F
require_once 'Mail/mimePart.php'; require_once 'Mail/mime.php'; として使いたいのだが、そんなモノは無いとエラーがでる。 で、/usr/local/lib/php/Mail/配下を覗いてみると、 あるのは、RFC822.php sendmail.php smtp.phpだけ。 はて?PHPはversion 4.2.1。なんか見るトコ違ってますか?
54 :
? :03/04/02 13:22 ID:dcRFKPbU
RedHatにはもともとlynxが入ってないようなのでRPMでインストールしる。
# lynx -source
http://pear.php.net/go-pear | php -q
でPEARパッケージマネージャを取得。
# pear remote-list
で、Mail_Mimeというパッケージがある事を汁。
# pear install
http://pear.php.net/get/Mail_Mime でインストールを試みるが以下のエラーメッセージが出る。
downloading Mail_Mime-1.2.1.tgz ...
...done: 15,268 bytes
The extension 'zlib' couldn't be found.
Please make sure your version of PHP was builtwith 'zlib' support.
もすかしてコンフィガーしなおさなきゃならないのか?
いろいろ調べてみるとコンフィガー時に--with-zlib-dirも付けた方が良
いらしいと書いてあるページハケン。
でも、実際最終的にはそう簡単にコンフィガーやらメイクやらできない
稼働中のサーバで実践するので、エイヤっとパッケージをダウンロード
解凍して/usr/local/lib/php/Mailにつっこんでしまった。
なんとなく動いている気が汁。大丈夫だろうか?
保全hage
56 :
山崎渉 :03/04/17 12:01 ID:???
(^^)
(^^)対策hoge
58 :
山崎渉 :03/04/20 06:00 ID:???
∧_∧ ( ^^ )< ぬるぽ(^^)
59 :
◆AngelH/kMI :03/04/24 12:36 ID:Zq+rNQsW
最近気がついたんだけどHTTP/Compress.phpって無くなった?
マニュアルページには記述が残ってますねえ。。 何か問題でも出たのかしらん?
61 :
nobodyさん :03/05/03 14:18 ID:FDbikYta
Pear最近使い始めたんだけど便利だね。メールアプリも簡単に作れちゃう
62 :
☆ :03/05/04 13:36 ID:hoh6IuFY
DB、Mail、Pager(DB_Pager)を使ってます。 PEARのページから他のライブラリも落とせるけど、 なんかライブラリによってクオリティがまちまちだったり、 コードの書き方とかもバッラバラのような。 PHP5になったらPEARはもうちょっとよくなってくんでしょか。PEAR期待あげ。
63 :
◆AngelH/kMI :03/05/06 02:28 ID:BzbmIA0i
>62 それは仕方ないような…。 作ってる人バラバラなわけだし。 一応、ページに公開する前にMLで話し合ってるのかな。 本家MLはみてないからわからない。 それはそうと、PEARマニュアル英語版新しくなってるね。 パッケージ別に分けられたから探しやすくなった。
>62 5/9に開催されるPEAR Meeting in Amsterdamでその辺りのことも話し合われる のではないかと思います。(PFC, PEAR CS) 今後に期待しましょう。
65 :
nobodyさん :03/05/06 16:36 ID:Kr1pEeWF
PEAR 大好きで今後にも期待しているのですが、全体的に世界規模でリソース不足のように思えます。 プロジェクトリーダー二人等の取り決めがあっても掛け持ちも多く、限られた人が頑張ってドキュメントからコーディングまで回している気配。 コードの質やドキュメントの不備はこの辺りが大きいように思えます。盛り上がってはいるようですが… それでもPEARは今が食べ頃ではないかと。 ドキュメントやエラーハンドリングの不備はあるけどちゃんと使えます。 PHP4 ベースで充実しても仕方がないし PHP5 へのマイグレーションを考えると1年以上はかかる。今のうちに食えるところを食うのが吉かと。 Stig は PEAR コミュニティを PHP4 と PHP5 で割らないように心を砕いているらしいがそううまくいくとも思えませんし、 少なくとも ext/tokenizer は CORE 以外で働いているように見えません。当たり前の事ながら各クラスの制作者の労力を少なからず取るのは確実では。 という事であと1年半は PHP4 をやると見越して PEAR も色々と利用中です。 今が食いどき、これ以上待っても PHP5 への移行が迫ってリターンを受ける時間が少なくなり、PHP5 を待つと遙か先。 海外では The Year of the PEAR とか煽っているのに日本では DB が認知され Auth が徐々に広まってきた程度。 もっと使ってがんがんメモでもドキュメントでも公開してフィードバックしようぜぇ、と。 # ところで PEAR::Auth ってそんなにいいクラスですかねぇ、、とか呟いてみるテスト
66 :
名無しさん@Meadow :03/05/06 17:20 ID:KpFIiLxl
>65
仰る通りですね。
ところでDataObjectはMDB対応に動き出したようですし、PEARパッケージ間を
またがるデータベースハンドル利用のフレームワーク等も動きがありそうです。
DataObjectは良いパッケージだと思いますが、現状PostgreSQLでのテストが不
充分だと思います。このあたりはPostgreSQL利用者の多い日本の開発者が積極
的にfixしていければと良いなと思っています。
PEAR::Authですが個人的にはHTTP_Sessionパッケージとの協調性が皆無なとこ
ろが気がかりです。ソースを見たところ少量の変更では動作しない感じです。
使い勝手の面では
http://opensource.visionp.de/modules/project/auth.php に軍配が上がるかもしれませんね。
(独立性を維持しつつも)各パッケージの協調性を高めて欲しいと思う今日この
頃です。
67 :
65 :03/05/07 05:14 ID:nvC3DvuB
おぉ、PEAR::Tree と同じ人が認証クラスも書いていたとは。 今は PEAR::LiveUser でやっているのでシンプルな認証クラスが欲しくなった時に思い出してチェックしてみます。感謝 =) Auth には PEAR::raiseError() がハードコードされていて泣かされた覚えがあるのでちと使う気になれないのです。 > 独立性を維持しつつも)各パッケージの協調性を高めて欲しい 御意。 ただコードの質、PEAR クラスとしての適当な振る舞い、仕様の安定、この辺が追いついてない事もあるのかな… と思うときも。
>67 PEARやその他のクラス、パッケージ、フレームワークを用いて、あるプロジェ クトにおける最善のアーキテクチャを模索するようなお話ができる場所が欲し いですね。PHP Users MLはどうも建設的な議論ができる場じゃないですし。 ここでも良いですけど、Free MLに作ってしまおうかと思ってたりします。 皆さん、どう思われますか?
69 :
65 :03/05/07 14:41 ID:???
> PEARやその他のクラス、パッケージ、フレームワークを用いて、あるプロジェクトにおける最善のアーキテクチャを模索するようなお話ができる場所
欲しいですね〜
そういうフレームワーク、実サンプルになるようなものがあると楽&普及に一役買えると思います。
こんな感じでこつこつやっている人はいらっしゃるようです。
http://openlab.dino.co.jp/ PHP-users はトラフィックがあるので議論が散発的になってしまうと思い別の場を設けるのには賛成です。
場は ML も良いですし、ドキュメントを蓄積するなら wiki はどうでしょうか。
70 :
◆AngelH/kMI :03/05/07 17:53 ID:28jF4MYM
71 :
名無しさん@Meadow :03/05/07 20:21 ID:+VYKwsqu
>70 素晴らしい! とりあえずできることから始めていきましょうか。
72 :
◆AngelH/kMI :03/05/07 22:41 ID:oYWWOBvI
73 :
bloom :03/05/07 23:10 ID:45Ad4T/3
75 :
65 :03/05/08 02:24 ID:CPYTNRm7
乙です。 お試しがてら SmartyWiki の InterWikiName 作って WikiName Smarty をほぼ白紙で作っておきました。
>>74-75 よろしくっス。
とりあえずこのスレの住人(といっても少なそうだ・・・)で
ある程度動かして、その後広く存在を知ってもらうって感じですかね。
ありゃ、試しカキコしたらageてしまった。スマソ。 とりあえず手馴れのためにたたき台というか、ひとつ何かほしいですね。 PEAR::AuthのcontainerにFileを指定すると使われるFile::Passwdがcrypt関数の 仕様変更のためうまく動かなかっているようなんすけど、まだ直ってなさそうっすよね。
78 :
名無しさん@Meadow :03/05/09 19:58 ID:o/6pS6BB
79 :
nobodyさん :03/05/10 13:53 ID:YLK9mJmm
>>78 以前(もう2年ほど前か)別のバグをレポートしたときはあったが、英語がまるっきり
ダメなんで苦労した記憶が。ま、今回のはbacktraceだしてくれなんてことないには
ならない分気楽といえば気楽なんだが...
2月に時点ではまだレポートされていなかったのは確認済みだが、まだないのかな?
つうか、PEAR::AuthにFILEなんて誰もつかっとらんのか?
時間が出来たらとりあえずまとめてみるか。
81 :
◆AngelH/kMI :03/05/13 22:45 ID:nGMZJ1zt
いつの間にかPEAR::DBが1.4になってるage。
>>77 PEAR::AuthはDBでしか使ったこと無いですねー。
最近はPEAR::LiveUserに注目してるんですが、資料が皆無で・・・。
>とりあえず手馴れのためにたたき台というか、ひとつ何かほしいですね。
確かに・・・。
とりあえず何から書いていいのか(苦笑
掲示板より後に残りやすいかな、と思いwikiおいてみたんですが。
82 :
:03/05/13 23:02 ID:X4gDufi/
>>79 こいつというのはIwa?sti.me?
sti.meがDQNに決まってるだろ
管理人もガイキチはほっとけばいいのに
なんかperlって開発当初、 pearlって名前で使われてたらしいね。 って書いてあるのをこの前見た。
あなたスレ見間違ってますよ
85 :
65 :03/05/14 08:29 ID:???
>>81 PEAR::LiveUser ならプロジェクトで使っているのでそのうち何か出せると思います。7月くらいかな。。
某所には未整理ながらドキュメントもある、、でも Google が拾わないのよね。
pear/doc にサンプルコードが揃っていて一通りは学べるので使い始める事は出来ますが世界的にドキュメントが少ないので苦労すると思います。
バグは少なめなので使える事は使えます。でもエラーハンドリングはほとんど整理されていない状態。Backtrace かけてコードを追わないと何が原因なのか分かりません。
全くエラーを吐かずに挙動を変えたりされて困ることも。また権限のスコープやら予定はあるけど未実装という機能もいくつかあります。
あくまで alpha state、Lukas 曰く&実感としては beta state。
また初回認証でDB引きまくってユーザープロファイルを作成してセッションで引き継いでいくスタイルなので使い方を選ぶと思います。
数えた事ありませんが DB_Complex だと 二桁は堅いような。 While でループ作ってその中で DB にアクセスしているところも何カ所かありますし。
PEAR::Auth の代替え品にはならないかも。
MDB にせよ Lukas の書くクラスは便利だけどシンプルでない気がするので PEAR:::Auth をリプレースするなら
66 さんの教えてくれた PEAR::Tree の人が書いてる Auth の方がよいかも知れません。 いや中身知らないんですけど(ぉぃ
http://opensource.visionp.de/modules/project/auth.php
あげると変な書き込みくるか・・・ってことでsage
>>85 >PEAR::LiveUser ならプロジェクトで使っているのでそのうち何か出せると思います。
おー、期待してます。
LiveUserだけじゃないんだけど、ドキュメントの少なさは
致命的だなぁ・・・と思った。
一般的に
作りは良いがドキュメントが無いもの<多少使いづらくてもドキュメントが豊富なもの
だと思うし・・・。
>PEAR::Tree の人が書いてる Auth の方がよいかも知れません。
良さそうなんだけど
・PEAR::Authと同じ名前なので同環境に共存できない?
・noticeが結構でる(表示しないようにすればいいのだけど)
のが気になるかな。
もうちょっと試してみます。
ふと思ったのだが、俺の環境でcryptを使うとMD5になるのだが、強引に標準DESを 使わせる方法があるのだろうか? バグレポートなんすが、下記を(英文にして)投げりゃいいかな? File::Passwdのパスワード検証用メソッドは標準DESでのみ暗号化されているのを 期待しているので、他の暗号化手法を用いる環境では正しく検証できない。 --- Passwd.php.org Thu May 15 22:49:37 2003 +++ Passwd.php Thu May 15 22:50:02 2003 @@ -179,7 +179,7 @@ */ function verifyPassword($user, $pass) { if(isset($this->users[$user])) { - if($this->users[$user] == crypt($pass, substr($this->users[$user], 0, 2))) return true; + if($this->users[$user] == crypt($pass, $this->users[$user])) return true; } return false; } // end func verifyPassword() どうでっしゃろ。
88 :
梨 :03/05/16 18:29 ID:???
89 :
65 :03/05/16 23:20 ID:bnfLHHqz
90 :
65 :03/05/17 04:16 ID:???
91 :
65 :03/05/19 00:02 ID:???
LiveUser チュートリアルを意訳中です。 勘違いしていました。 LiveUser の欠点の一つは権限構造が既定されているため楽なかわりに固定的で柔軟性に欠ける事だったのですが LiveUser/Perm 以下のコンテナはユーザーが状況に応じて書き換える/ゼロから書き起こす事を想定しているようで、かなり柔軟に使えるようです。 現状では↑のように言われてもコストが大きく現実的とは思えないのですが、リファレンスコンテナの有効利用が出来ればかなり使えるかも知れません。 PHP5 とドキュメントの充実で大化けする気もして来ました。 環境が整えば中級者が使うには最適なクラスになるかも知れません。 取り敢えず追いかけるに足る気力は再充填されたです。
>92 原文のリンクが無いんで編集かけたら、早速誰か入れてた
94 :
65 :03/05/20 03:10 ID:???
翻訳お疲れ様です。 FIX ME 部分を改訂しておきました。英語力は貧弱ですので適当に叩いてください。
PEAR_Infoおもろいなぁ
96 :
山崎渉 :03/05/22 02:02 ID:???
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
PECLにzipとbz2が。 メンテ進んでるんだねー、早速入れてみようとしたら # pear install zip downloading zip-1.0.tgz ... ...done: 4,930 bytes 3 source files, building running: phpize PHP Api Version : 20020918 Zend Module Api No : 20020429 Zend Extension Api No : 20021010 building in /var/tmp/pear-build-kiryu/zip-1.0 running: /tmp/tmpTAb6bn/zip-1.0/configure `/tmp/tmpTAb6bn/zip-1.0/configure' failed こんな感じに・・・。 FreeBSD4.8R PHP4.3.2RC4-dev 環境はこんな感じ。 うまくいった人いますか?
>>97 自己レス。
理由が何となくわかった。
まあ、configureに失敗しているんですが
どうやらportsで入れたlibtoolが1.3.4で
configureの中の--no-verifyでこけていた。
libtool1.4.3が入ってるマシンでもだめだったんですが
そっちはlibzzipが入っていなかったかららしく。
エラーにもうちょっと詳細出てほしいなぁ・・・>PECL
99 :
65 :03/05/23 15:59 ID:???
> 95 って煽られて PEAR_Info 使ってみたけど require_once('pear/info.php'); $pear_info = new PEAR_Info('C:\php\pear'); $pear_info->show(); > おもろいなぁ ってのが今ひとつピンと来ないのでツボを教えてもらえると嬉しいです (;; いくつかのパッケージがカウントされていないけどデフォルトでは state が stable 以外だと無視されるのかな、、
100 :
nobodyさん :03/05/26 10:37 ID:iLBrwPLF
101 :
山崎渉 :03/05/28 17:05 ID:???
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
新しい翻訳プロジェクトが始まっているようですね。お疲れ様です&感謝を。
http://tinyurl.com/cxbr 英語力もPHPへの知識もたかが知れたモノですが何か手伝える事があれば是非手伝わせてください。
PHPMagazine の記事は一通り目を通すだけは通しています。
103 :
nobodyさん :03/05/29 17:59 ID:T3Ql2me9
PHP 4.3.2 がリリースされています。 んで Windows 版の Zip を見てるんですけど今度はちゃんと PEAR が同梱されています。 go-pear.bat と PEAR/go-pear-bundle にアーカイブが固めてあってファイル一式を適切な場所にコピーした後 go-pear.bat のダブルクリックでインストールされる気配。install.txt には記述無し。 Windows を開発環境に回していてトラブルを起こしたくないので確認は取ってません。
>>103 了解です。 時間があれば別ネタも見繕いつつ完成を楽しみに待たせていただきます =)
>>104 Win版のインストールに関してはそのうちきっちり試します。
>pear.sakura.vg
とりあえずそろそろ名前決めないと・・・。
いまだにタイトルがpukiwikiのまま(苦笑
目標としては単純なPEARの話から、
PEARを使ったアプリの開発手法等の話まで広げられればいいかなと。
とりあえず適当にガイドライン定めて
フロントページに書くといいかも。
PEARってドキュメントが不親切だよね。コメントすらほとんど
ないのがあるし。そんな長いコードじゃないから読めばいいん
だけどさ。今は HTML_FORM のお世話になってます。
と思ったら翻訳プロジェクトが始まってたんですね。
>>106 さん
応援してます。がんばってください。PEARミーティング要約は
とっても役にたちました。ありがとう。
>>107 自分は場所提供してるだけで翻訳してくださってるのは
他の人ですよー(汗
自分ももう少し協力できるといいんですが(苦笑
ところで、pear.sakura.vgですが
PHPプログラマーズマガジンの広告をおかせてもらいました。
php|architectの翻訳版です。
最近はペースも速くいい感じなので英語が苦手な人は是非是非。
// この収入はサーバの運営資金にあてます。
// 鯖丸ごと借りてるせいで、結構厳しい(苦笑
// あまり広告とか置きたくないんですけどね・・・。
>>109 う〜ん、、あのアフィリエイトですか。私も初号を買ったのでメール受けましたが雀の涙ですよね。
会員登録で 60 円、雑誌購読につなげてようやく 7% バックでしたっけ。
維持費が重荷になってきたらサーバーはいつでも替われますのでその時は声を上げてください。
ADSL + 普通のビルに置いてあるので年に何回か停電もありますがまぁ現状ならトラフィックも低いでしょうし間に合うと思います。
既に Pukiwiki その他が元気に稼働しています。何なら自宅に光引いてDyDNSで立てても良いです。
というか Pukiwki だけなら条件は緩いので無料または超低額のレンタルスペースがどこなりと使えると思います。
# PEAR 的には php|architect より断然 PHP-Magazine なのだけど日本語版が無い罠。
>>110 一応まだ平気ですよ〜。
というか、他にもコンテンツあるので(苦笑
自分も自宅に光が引けるなら幸せなんですが。
>断然 PHP-Magazine なのだけど
同感です。
見るからにPHP-Magazineのが興味深い記事が並んでるのに
読めないのが痛い・・・。
まあ、今はできることからやるしか。
LiveUser0.7でてるね。 Changelogみるとかなり変わってる感じ。 enzo.bzの中の人大変そう・・・。 あと、誰かPEAR_Frontend_Web使ってみた? どうも/tmpに作るキャッシュファイルのパーミッションがらみで失敗しちゃう。 そのうちコード追ってみるつもりだけど・・・。
>>112 使ってます。当方lynx入れてないOSXユーザーなのでgo-pearを保存
→go-pear.phpにリネーム
→GUIブラウザからアクセスという方法でインスコしました。
セーフモードではディレクトリとインストーラのuid:gidをhttpdと
同じにしないとうまく動いてくれないです。
114 :
114 :03/06/02 20:01 ID:???
某/.Jでも書きましたがVar_Dumpクラスがとても面白いです。 ご賞味あれ。
レス番まちがえた。(鬱
>>108 HTML_Formは
//Formの各要素の設定
$myForm->HTML_Form('./index.php', 'post');
$myForm->addText('name', 'title');
$myForm->addSubmit("submit","送信")
//出力
$myForm->display();
<table>
<form action="./index.php" methode="post">
<tr>
<td>title</td><td>
<input type="text" name="name"></td>
</tr>
<tr>
<td>submit</td><td>
<input type="submit" value="実行"></td>
</tr>
</form>
</table>
こんな感じで出力されます。実際はちゃんとインデントされてたりして
出力されるHTMLソースもかなり見やすいし、たった3行でこれだけ綺麗
に出力出来るんでかなり重宝してます。addなんたらってメソッドはた
くさんあるので、たぶんなんでも出来ると思います。
ただ絶対テーブルタグを使うのでi-mode用のサイトとかには向いてない
ですね。
BenchmarkとHTML::Formは確かレッツPHPに少し情報あったはず。
>>113-114 情報さんきゅーです。
Var_Dumpは早速使ってみます。
pearってなんですか?
119 :
nobodyさん :03/06/03 01:20 ID:THkR9+3B
Var_Dumpはオレも使ってるよ、TABLEの色とかカラフルにして 意味も無く楽しんでいるよ。あとBenchmarkも楽しんでる。
今朝ほど [PHP-DEV] MEGA-patch: namespaces are R.I.P. とかいうメールが Zeev と
[email protected] 宛に流れていて
removing namespaces because of a few remaining problems was a very bad idea.
とかあるんですけど、、どうも ZE2 の方で Zeev が言い出して今になって namespace 廃止とか。
開発経験浅いのでよく分からないのですが PEAR でも ext/tokenizer とかで namespace を考慮した対応を取っていたと思うのですが、、マヂで改訂でなく廃止ですか。
ちと調べる時間が無いので投げるだけ投げておきます。
# @IT の記事どうなるんだろう、、
>>122 お疲れ様です〜。
時間ある時にゆっくり見ます。
PHP5・・・やっぱりリリース遅れちゃうんでしょうかね。
個人的はにPHP5のnamespaceってあまり意味を感じなかったんだけど
どうなんでしょうか。
そういえば自宅の実験環境にPHP5devを入れて遊んでみたりしたけど
PEARの方の対応とかはまだまだなんでしょうかね・・・。
127 :
◆AngelH/kMI :03/06/05 17:10 ID:A5nGx59s
PhpDocumentor1.2.0リリースage。 ドキュメントもっときっちり書きたいなぁ・・・。 前書いていたけど書きかけのまま放置しちゃってるし。 ところでPhpDocumentorなんだけど、 出力するファイルのContent-Typeは 各テンプレートファイルを直接さわれってことなのかな。 簡単に変える方法があればいいんだけど・・・。
>>116 さん、遅くなりましたが HTML_Form の概要ありがとうございます。
6/4 に HTML_QuickForm に Smarty 用のレンダラがマージされたのでそっちに走っちゃいました。
ただいま解析中。
> 出力されるHTMLソースもかなり見やすいし、たった3行でこれだけ綺麗
> に出力出来るんでかなり重宝してます。(snip)
> ただ絶対テーブルタグを使うのでi-mode用のサイトとかには向いてない
という事で使い分けが出来ると思います。QuickForm の Smarty レンダラはフォーマットフリーな感じです。
SmartyDynamic と SmartyStatic が用意されており前者は Smarty のテンプレートをフォームオブジェクト単位で割り当てサイト全体で共通化&再利用できます。
QuickForm 自体はフォームの利用フローである
入力 -> 評価 -> エラー表示 -> 入力
-> 入力された内容の確認表示
をサポートしておりサーバーサイド/JavaScript による Validaitor と freeze 関数によりフォームオブジェクトを表示させず入力された内容だけを表示する事が出来ます。
多機能な分コードは長くなりがちですが冗長ではないと思います。結構良いクラスかも。
取り敢えず報告までに。
多分に推測を交えているので間違いがあったらごめんなさい&ツッコミくれると嬉しいです。
131 :
nobodyさん :03/06/12 21:53 ID:mlmZmJcV
>>130 なんか変な感じはする・・・
$dにはエラーオブジェクトが返る可能性もあるから
そこで0と比べんのはおかしいかなあ。
isErrorを説明してんだから
if (!csv2db::isError($d = $cd->import('./dat.csv', $dsn, 'address'))) {
でないかな。違ったらすまそ。
_| ̄|○ ちょっと死んでます。 色々遅れて&自分から言い出しておきながらドキュメントの翻訳にも協力出来ず申し訳ないです。 # って名無しだから誰が誰だか解らない罠
>>131 変ですよね。
import() メソッドがエラーオブジェクトを返さない場合で、戻り値が 0 より
大きい場合に exportUnvalid() を行う条件のはずなので、書いて頂いたコー
ドに加えて、
if (!cvs2db::isError($d = $cd->import('./dat.csv', $dsn, 'address'))) {
if ($d > 0) {
if (!csv2db::isError($cd->exportUnvalid('./dat2.csv'))) {
} else {
// handle error
}
}
} else {
// handle error
}
だと思うのですが $d > 0 まで一行で書けるのかなぁと。
>>132 いえ、お気になさらずに。余力があるときで結構です。
私自身もなかなか時間がとれていません。悲しいです。
>>128 間違ってますね。しかし誰に伝えればいいのやら。
英語のものと違ってメンテナンスされてなさそうなのも問題ですね。
ある程度時間取れる人が 4, 5 人集まればなんとかなるとは思いますが。
>>135 消しておきました。
>>136 php-doc MLなのかなぁ・・・。
確かにPEARの日本語ドキュメント、全く整備されてませんね。
いっそのことwikiでどんどん書いていってしまった方がいいかも(苦笑
>>137 お手数お掛けしました。
有用なドキュメントをピックアップして翻訳しようとは思いますが、マニュア
ル全部を手がける労力は今のところないのが現状です。
しばらくの間は Wiki に少しずつでも内容を増やすことを目標にします。
ところで、そろそろ Wiki の名前決めませんか?
>>138 削除も誰でも出来ますよ〜。
編集で文章を全部消せばOK。
名前・・・どうしましょう。
何か良い名称ありますか。
出来ればPEARを中心にSmartyやphrame等を使った
アプリ開発手法まで話せる場所になればなぁ・・・。
// そのためにはもっと広めないとダメか(苦笑
>>139 なるほど。これからはそうします。
名前ですか。思いつくところですと、
- WAFP (Web Application Frameworks in PHP)
- AFoPHP (Application Frameworks of PHP)
- YAPS (Yet Another PHP|PEAR Site)
うーん、ろくなのが思いつきません。(w
>>139 ストレートに 2ch PEAR Wiki とか。
Wiki の名前は InterWiki に使いたいと思っているので見た目で意味が分かるとありがたいかも。
InterWikiName::WikiName みたいな感じの WikiName になるっす。
InterWikiName は作る側で勝手に付ける事になるので何でもいいっちゃぁ何でもいいのですが。
Phrame 興味あるんですけど、他との組み合わせが悪そうで放置したままになっていたり、、
Binarycloud, phrame, Midgard, HORDE 使ってる人っています、、?
HORDE と Midgard が PEAR に興味示してるってどこかにありましたよね。PEAR 的にはこの二つなのかな、、
>>137 私も日本語どころか英語にさえドキュメントがロクにないので暫く自分でドキュメンテーションしていたのですが
特に API ドキュメントの類は 「こんな事やっても本家のドキュメンテーションが整ったら終わりぢゃん」 とある日気づきました。
知識も経験も無いので CVS や XMLDoc の使い方を学んでから本家と日本チームにコミットしようかなと画策中。
ドキュメンテーションは遠回りなように思えてそれが一番の近道だと思いますた。
自分で作ると早くていいんだけど、蓄積すればするほど虚しくなりますた。本家に合わせた方がいいなぁ、、って。
ただ普及のためにもオフィシャルなドキュメントとは別にチュートリアルやサンプルを公開していく意味はあると思います。
マニュアルより Google って人も多いようだし。
144 :
143 :03/06/17 22:37 ID:???
Phrame って良くも悪くも何もないので、他のクラス等との相性は良いと思い ますよ。具体的には DB_DataObject, Smarty と組み合わせてます。
じゃあストレートに「2ch PEAR Wiki」でいいですかね。 >知識も経験も無いので CVS や XMLDoc の使い方を学んでから本家と日本チームにコミットしようかなと画策中。 >ドキュメンテーションは遠回りなように思えてそれが一番の近道だと思いますた。 確かに、それが一番有益でしょうね。 そう思ってる人があと数人いれば変わるのかな・・・(苦笑
久々にスレが動いてるのを見るとうれしい(笑
>>144 DB_DataObjectってどうなんですか?
何となく使いづらそう、とか思って敬遠してるんですが・・・。
>>143 さっそくブックマークに入れました。楽しみにしています =)
> Phrame って良くも悪くも何もないので、他のクラス等との相性は良いと思い
> ますよ。具体的には DB_DataObject, Smarty と組み合わせてます。
をぉ、なのですか。
やっぱ 適当にやって適当な事書いたらダメっすねぇ(汗
Wiki の報告も楽しみにしつつ自分も現実逃避の時にでも触ってみたいと思います。多謝。
それから、、、 日本の漢なら 鬼ころし みたいな 三増酒 飲むな (#゚Д゚)オラー! 自国の文化は大切に 安ウイスキー買って水やジュースで割れ (#゚Д゚)オラー! 外人にコンビニで買ってきた \980 / 720ml の日本酒を勧めたら Ouch! って言われてぺっと吐き捨てられたのは今でもトラウマでつ。 今は地酒で ウマー 言わせてるよ。
>>148 疾風漢の手抜き料理 の誤爆でつ。ごめん。
150 :
146 :03/06/18 02:13 ID:???
>>146 DB_DataObject は、よい方向で進化すれば PEAR の中核を成すポテンシャルは
秘めていると思います。現在はデータベース入力値のバリデーションに PEAR
の Validate パッケージを使ったり、進化の只中という感じですが。MySQL 以
外のデータベース、特に PostgreSQL は十分にテストされてない感じなので、
PostgreSQL で使ってバグ出しするとよい感じでしょう。業務レベルには
MySQL 以外はまだきついかもしれません。内容的には Core J2EE パターンの
DAO, ValueObject が一緒になっているような感じで、Perl でいえば
Class::DBI にあたると思います。
恐らくその進化系は binarycloud の Entity コアクラスのようなイメージで
しょうか。
151 :
143 :03/06/18 02:16 ID:???
>>146 150 は 143 です。間違えました、ごめんなさい。
>>147 Popoon なんて面白いと思いませんか?ネーミングセンスが凄い(笑
>>150 143 とは別 AC ですが、
DB_DataObject は面白そうなのですが一人でやってて中規模の開発で使うにはかける手間の割りに得るメリットが謎だったりします。
SQL を書いて PEAR::DB を使う代わりに DB_DataObject で API を作って使うようなイメージがあるのですが、どういうシチュエーションが合うのでしょう。
再利用が多い時やフレームワークのようなものを作るときとかですかね、、
ちょこっとだけ使ってみた事はあるのですが、半端で終わっちゃったので、、慣れたらそれほど手間でも無いのかな、、
迷わず一度自分でもっと使ってみりゃ解るよ って話もありますが、ん〜
153 :
147 :03/06/18 03:55 ID:???
>>151 Popoon 面白いですね =)
そんな感じのユニークな名前がついていても面白いかも。
# ぽぷ〜ん って SunSoft を思い出します… (古
154 :
143 :03/06/18 09:36 ID:???
>>152 集計を扱う場面ではなくて、レコードが特定されるような会員サイトの構築等
に向いていると思います。
入力によってクエリを変更しながら集計するような場面では (M)DB_QueryTool
を使ってみるとよいかもしれません。
手間はクラスジェネレータを活用すれば問題ないと思います。
>>154 クラスジェネレーターが付いていたとは知りませんでした。
Generator.php がソレですね。 .ini ファイルも興味をそそります。
興味沸いてきました、ありがとうございます =)
156 :
143 :03/06/24 15:56 ID:XxdbGCb1
今日発売の WEB+DB PRESS Vol.15 に CMS 特集が掲載されていました。 興味のある方は是非一読を。
小山さんが PHP-users 16204 で Benchmark_Timer の簡単な案内流してくれていますね。 にしても小山さんも知識量が半端ぢゃないのですがこういう人たちってやっぱり Never Sleeping なのでしょうか。
>>157 日頃接されている情報量が相当違うのでしょうね。
我々もがんばりましょう。(w
PEAR-ML が既に出来ていたようです。
っていうか長尾さんが PHP-users 16338 で告知いれて人数集まり始めたようです。
Xoops にも絡んでいてマーケの仕掛けが上手なので PEAR に注目してくれた事は嬉しいかも。
PEAR-ML
http://www.freeml.com/info/[email protected] 参加者ゼロの ML の存在なんてどうやって突き止めたのだろう。
ML サービスの総当たり検索なのかな。
>>156 久々に買っちゃいました。
いつの間にか子供相談室が終わっていてそれと共にいつの間にか読むのも辞めていたんですけど。久々。
昔は PHP まんせーだったのに最近 Java に振られていて悲しい。 Java には縁がないし。
内容はなんてゆーか、役立つのですが刺激がぁぁあああ
むしろこっちが楽しみで仕方ありません。
http://pear.sakura.vg/index.php?%5B%5BWAF%2FCMF%2FCMS%5D%5D ご飯三杯はいけます (;´Д`)ハァハァ
ドラゴンボールとJOJO三部やってたジャンプの発売日並に更新が待ち遠しいです。
HORDE がかなり PEAR に寄ってるって聞いたのですが HORDE が載ってないのが (´・ω・`) スルーなのかな、、
>>160 そんなに楽しみにしてもらってるのは嬉しい限りです。
今仕事がせっぱつまってまして、しばらくしてヤマを越せばガリガリ更新します。
時間が欲しいです...
いえいえ、無理しないでください。 私も時間無いので色々手つかず。徹夜でタワシのアンケート入力してる場合ぢゃねぇよおおoooO PEAR やフレームワークの認知が上がると PHP は変わると思っているので CMS レポは楽しみっす。
重松たん キタ━━━━━(゚∀゚)━━━━━!!!! まいぱぱたん キタ━━━━━(゚∀゚)━━━━━!!!! って事で PEAR-ML 本格稼働の予感。 まだの人は早めに参加しる。 ユーザー会活動で見かける永田たんも来てる。
164 :
163 :03/07/03 20:20 ID:???
突っ込まれて落ち着いて考えてみたら ML 使いにくい気がしてきた; 集約したい話題以外はPHP-usersに投げた方がレスポンスも期待出来るし告知効果も高いのよね… どっちに投げるって聞かれたら PHP-users じゃなくて php-pear に投げた方がいい話題って自分では持ってないな。 Wiki の存在意義は解るがあの ML はどうなるのかな〜、、
長尾たんは最初は宣伝頑張るんだけど後が続かないんだよ
Xoops は続いてる、、っていうか元々波に乗っていたといえば乗っていたが。 Xoredはどうしたのかね。最近リリース止まってるし。こういう時に長尾たんから何か動きがあったら面白いのに。 後が続かないのは数で勝負って感じなのかな。あの年齢にしてあの活動量は敬服。あずまんがも敬服。 メールアドレスをパースしたいならPHPマニュアルに適当な関数が載っているし、 PEAR::DB拡張って逝ってもあれではただの方言って気もする。標準のAPI崩すほどのメリット無い。
長尾たん… PHP-usersに何か投げてるが… 苦労とか練習ってものでもないだろ。 しばらく待てば過ぎ去るかな 台風一過ってゆーか (_ _)y-~~ 群れても仕方ないんだが…
そうなんだよね。
PHPそのものの開発者がいないみたいだしね。
(いまはそれどころじゃないってこともあるけど。)
MLネタをWikiに集めるとか、できるかもしれない。
ま、PerlはMLいろいろあるPHPにもいろいろあったほうがいいかも。
ほんとに意義があるなら、
[email protected] とか作ればいいわけだし。
ML 入会しました。 PEAR (あるいは PHP) は選択肢のひとつにすぎませんので、メール処理にわざ わざ PEAR を使おうというのはナンセンスな気がしますが、PEAR の ML とい うことでしょうがないのでしょうかね。私は業務におけるメール処理には Perl (Mail::Internet, Mail::Bulkmail 等) を使ってます。
会社の組織体制変化でばたばたしてて
なかなか余裕なく・・・
>>168 うまく棲み分けができるといい感じ。
TIPSやPEAR更新情報とかも
WIKIにまとめると使いやすいと思う。
WIKIの存在をうまく広めることができれば
「教えて君帰れ。過去ログくらい検索しろよ」
なんていうやりとりが多少減るだろうし。
>ま、PerlはMLいろいろあるPHPにもいろいろあったほうがいいかも。
>ほんとに意義があるなら、
[email protected] とか作ればいいわけだし。
選択肢の増加はいいと思う。
公式で出来ると人は増えそうだけど、
S/N比は下がってしまいそう(苦笑
PEARのAPCを試してみたのですが、phpinfo()でみると MMAP Support Disabled になってしまいました。 mmapを有効にするやり方わかるかたいますか? pear install apc でインストール php.iniに、以下を記述 extension="/usr/local/lib/php/extensions/apc.so" apc.mode = mmap apc.cachedir = /tmp apc.mmap_file_mask = /tmp/apc.XXXXXX これだけじゃダメ? コマンドラインから、php -vとやると [apc-notice] APC version 2.0b -- startup complete とでるので、apc自体はインストールされているようなのですが /tmp 以下に何もできません。・゚・(ノД`)・゚・。
>>171 どうやらmmapは出来なくなったらしい。
PHP-users ML 16415あたり参照。
174 :
iwa :03/07/08 15:08 ID:H0naxmvD
>171 pearインストーラを使わずに従来の方法で作成すれば出来ます お約束の % phpize % ./configure --enable-apc --enable-mmap % make # make install >172 そんなこたあ無い mmapの本来意味するところの機能が実装されました。 1スクリプトに対し1バイトコードを1ファイルとして再利用する Version1のmmapという名のファイルキャッシュは便利ではあるが memory mapped fileとは異なるものです。 >171 が欲しているmmapってどっちですか。 #こんな掲示板があったのね。
175 :
171 :03/07/08 15:57 ID:???
みなさんレスthxです すいません、mmapってどういうモノか全然分かってないです(汗 従来(?)のmmapで、php.iniに以下を設定することで apc.mode = mmap apc.cachedir = /tmp /tmp 以下にキャッシュされ、apcが動いているんだなぁと実感できるので 今回のapc2.0bでも同様にやった所、/tmpに何も出来ないので 質問させて頂きました。
176 :
171 :03/07/08 16:30 ID:???
※追記 pear install apc でapcをインストール ↓ php.iniに、「extension=apc.so」を追加 ↓ Apacheの再起動 これだけ行い、[PHP-users 11469] から始まるスレッドを参考に 簡単なスクリプトでテストしたところ、目に見えて効果がでました。 もっと早くapcを使っておけばよかったと後悔(;・∀・)
おお、俺も APC 使ってみよ。
情報や人柱が出そろうと使いやすくなります。
> #こんな掲示板があったのね。
iwa って… いわきりさめ キタ━━━━━(゚∀゚)━━━━━!!!! とか騒いでみる。
なんかこのスレが一番頼りになる情報源になってる気がする。
>>1-1000 ありがd
178 :
171 :03/07/08 17:20 ID:???
>>177 私のようなド素人ではあまりお役に立てないとは思いますが(;・∀・)
私が試したスクリプトは↓こんな感じです。
<?
require_once "Benchmark/Timer.php";
$timer = new Benchmark_Timer;
$timer->start();
$timer->setMarker('Mark 1');
for($i = 0; $i < 10; $i++) {
include("a.inc");
}
$timer->setMarker('Mark 2');
for($i = 0; $i < 10; $i++) {
include("b.inc");
}
$timer->setMarker('Mark 3');
for($i = 0; $i < 10; $i++) {
include("c.inc");
}
$timer->stop();
$timer->display();
?>
a.inc〜c.incの中身は同じで、「$a = 1;」を3万行書いただけです。
私の環境下では、apc無しで約25秒、apc有りで3秒ほどでした。
php.iniへの設定の書き方がよくわからないので
「extension=apc.so」しか書いて無いので、適切に設定すればもっと良くなるかも。
そこらへんの所、詳しい人情報くれると助かります
Spreadsheet_Excel_Writer の PEAR 版も class 版も
'filename.xls'にアクセスできません。ファイルは読み取り専用であるか、
または読み取り専用の場所にアクセスしようとしています。
または、サーバ上に保存されているドキュメントから応答がありません。
なるエラーが Excel2002(Windows2000) が出します。
ttp://pear.php.net/ にあるサンプルプログラムも全滅。原因分かる方いますか?
>>174 あー、すまそ。
確認不足だった。
フォローthanks。
>Version1のmmapという名のファイルキャッシュ
このあたりから誤解してたっぽ・・・。
181 :
nobodyさん :03/07/09 21:50 ID:Q9PMAuxc
apc で盛り上がってるとこスマソ HTML_QuickForm って使ってる方います? 「フォーム→確認→処理」という流れを実装したいんですが, freeze() せず display() してフォーム表示, freeze() して display() で確認画面表示,まではいいとして, その後に再度 POST された時に,それがフォームから POST されたのか 確認画面から POST されたのかを上手に識別する方法があったら教えてくださいー. hidden でステータス保持の項目を作って逃げることは出来たんですが, せっかく至れり尽せりな HTML_QuickForm だから, この辺りのハンドリングをうまいことやる方法があるんじゃないかと思って...
182 :
直リン :03/07/09 22:14 ID:vAVY3pv7
>>179 試してみましたが、当方でも HTTP 経由では同様の現象が出ました。
コマンドラインで作成すると問題ありませんでした。
テスト用のスクリプトをコマンドラインで実行して出来たファイル
$workbook = new Spreadsheet_Excel_Writer('try1.xls');
と HTTP 経由で保存したファイル
$workbook = new Spreadsheet_Excel_Writer();
$workbook->send('try2.xls');
を比較すると HTTP 経由の方が 1 バイト少なく、バイナリダンプで比較する
と先頭からいくらか内容が異なっている箇所があるのと、途中からはオフセッ
トが 1 バイトずれているようでした。
とりあえずここまでしか調べてませんが PEAR General/Development ML とか
に何か載っているかもしれません。
使用したのは Excel 2000 です。
184 :
183 :03/07/10 02:34 ID:???
追記です。 使用したバージョンは 0.3 です。 CVS バージョンは試していません。
>>181 使ってます。
別に validate さえしていればどちらの画面遷移から来ようと関係ないと思うんですけど〜、、
> フォームから POST されたのか 確認画面から POST されたのかを上手に識別
の必要性が無いって事で。
色々試したけどうまくいかないんで質問。
PEAR::PEAR_Frontend_Webまともに動いてる人いる?
PHPKitchen(
http://www.phpkitchen.com/ )見ると単に
WebInstaller.phpをlnしてるだけだと思うんだけど
実行すると
could not create lock file: failed to create stream: Permission denied
って怒られる・・・。
ロックファイル吐いてるディレクトリは/tmp/pear/cacheだと思い
パーミッション見てみたんだけど書き込み権限あるみたいだし、
一体どこに作ろうとしてるんだ・・・。
187 :
179 :03/07/10 09:45 ID:???
>>183-184 ありがと!
で、私の原因は PHP のバージョンでした…。
PHP4.2.2 を PHP4.3.2 に上げたら無事できました。
188 :
181 :03/07/10 11:27 ID:???
>>185 書き方が悪かったです.すみません.
「確認画面」はプログラムがデータを確認するのではなく,ユーザが自分の入れた
データを見て確認する画面,のつもりでした.
問合せフォームみたいなものなんですが,入力必須にはしないけど,
間違って空データを送らないよう一旦ユーザに確認させたい,ということで.
しかしそれにしても情報が少ないなー QuickForm は...
190 :
181 :03/07/10 15:56 ID:???
>>189 そうそう,そういうことですわ > 画面遷移の制御
結局,hidden 型にステータスを持たせて,今どの画面にいるのかを HTML_QuickForm とは別に
自分で制御するようにしました.
作りながら思ったのは,もしかしたら HTML_QuickForm は「フォーム→確認」までしか面倒見なくて,
その後の「処理」ページは別ページ(別ファイル)にしろ,って設計なのかも.
でも,その割には,freeze() すると submit ボタンが消えるし.謎や.
>>190 > でも,その割には,freeze() すると submit ボタンが消える
addElement した要素が freeze で消えたことは無いっす。っていうかそれが可能ならどういう操作か知りたいかも。
ArrayレンダラでSmarty に飛ばしてるのでレンダラー絡みの操作だとちと分からないっす。
俺は遷移画面のコントロール/分岐をやって、その中で HTML_QuickForm のパラメーター制御を行うようにしてます。
でもあまりスマートじゃないのよね、、デザパタとかもっと勉強しよっと。
192 :
181 :03/07/10 21:25 ID:???
>>191 あ,そうか,これは QuickForm というよりその中の Renderer の動作なんですよね.
Default Renderer では,freeze() された submit や reset ボタンを全く描画しないようです.
ってことは,そこだけを変更したオリジナルの Renderer クラスを作って使えばいいのか.
っていうか大人しく Smarty を使えと(w
Smarty と HTML_QuickForm を配下に制御する,画面遷移をコントロールするクラスとか作れば,
全体としてかなり美しくまとまりそうですね.
>>192 何はともあれ原因が分かってなによりです。
freeze() で submit 要素を削るって余計な仕様に見えるんですけど、きっと別の方法がちゃんと用意されてるんでしょうね〜、、
まだまだ修行不足でつ (´・ω・`)
元々 SmartyDnymanic.php と SmartyStatic.php として ML に投げられてたので Smarty 用に書かれたレンダラってのは確か、
でも単に配列に押し込めて投げ返してるだけなので Smarty 使わなくても大丈夫でつ。
Var_Dump::display($renderer->toArray());
とか $renderer->toArray() のダンプ取ると大体分かります。
Smarty と Arrayレンダラ使って嬉しいのはオブジェクトごとにテンプレートを共通化出来る事だったり。
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
近々MDBの解説記事が雑誌に載るとか聞いた。
MDB っすか、微妙だなぁ ^^;
stable state から速攻で仕様変更された恨み(w と、MySQL のような海外でシェアの高いドライバは安定しているっぽかったけど、
他のデータベースはテスターがあまりいなくて十分に地雷ふみふみされていなかった気配も。
結局外販しないアプリケーションだと MDB の売りである SQL レベルの互換性を手間かけて求める必要が無かったり、
XML によるテーブル定義はアバウト過ぎて使いづらかったり、テストを重ねるごとに MDB 使う理由が消えていった ^^;
十分安定して PEAR::DB とのパフォーマンス差が縮まったら使ってみたいアプリケーションではあるのだけど、まだ早いんぢゃないのかな〜
とか思いつつ楽しみにしています(w
そういえば Lukas の書いた記事が海外の雑誌に出ていて記事も公開になっていたような〜、、、
発見。
http://www.php-mag.net/itr/online_artikel/show.php3?id=283&nodeid=114
198 :
197 :03/07/18 01:51 ID:???
>>196 裏取れた(w
書く人が書く人なのでめっちゃ期待。 わくわく わくわく 〜♪
199 :
197 :03/07/18 02:02 ID:???
で、
>>197 で書いた MDB への文句は全面的に私の勉強不足という事で (_ _) ごめんなさい
MDBは使ってみようと思ったけど 時間がなくて放置状態だなぁ。 Web+DB PRESSに記事がでるってことでかなり期待。 あの雑誌最近Javaばかりだったから 買いつつづけるか悩んでたんだけど(苦笑
201 :
197 :03/07/18 18:25 ID:???
ウチも WEB+DB 買うのは久々っす。 懐がツンドラ状態になった時に買うの止めて、次に思い出したように見てみると Java 一色 + 子供電話相談室が無い… 増刊かと思ったよ (/_;) 国内発の PHP の専門誌欲しいっす。ちと寂しい。
202 :
nobodyさん :03/07/18 18:40 ID:Y7RkANYh
PHPプログラマーズマガジンは翻訳記事ばかりだから、たまに 日本語圏じゃ使い物にならないネタとかあるしねえ。
>>201-202 専門誌ほしいね・・・。
PHPプログラマーズマガジンがもうちょっと日本独自記事とか
ユーザー参加で何かやるとかやってほしい。
んで、MDB_Frontend使ってみた。
多少requireするファイルとか追加したら
DB一覧とかテーブル一覧とかはちゃんと表示できてるんだけど
XML出力しようとするとこけてしまう。
//Fatal error: Allowed memory size of 16777216 bytes exhausted at (null):0 (tried to allocate 40 bytes)
// in /usr/local/lib/php/MDB/Common.php on line 2808
うーん・・・?
>>203 MDB_Frontend のせいなのかな、、昔 1.3.0 の RC か何かスクリプト書いて試した時は XML > DB は出来たけど DB > XML はコケてたっす。
PHP プログラマーズマガジン、、か。 システムは面白いし発展性ある。めっちゃ注目してる。 PHP-Con 行きたいよ〜〜 でも内容は、、いつも微妙なのよね ^^; タイトルでいらんって思う記事が少なくない 値段も微妙だけど応援の意味も込めて php | architect では買わないよーにしてる。 初年度目標の1万部を達成しても 1000万、そこから翻訳や本家への支払い考えると… 継続的なコンテンツビジネスって大変やね。
お、なんか話題になってるし(笑) あんまし入門記事じゃなくなっちゃったので、その辺を希望してた人はごめんなさい。 サンプルコードはたくさん載せたけど、メソッドをひとつひとつ解説するようなことはしてないです。 実はこの記事を書くために本格的にMDBのコードを読み込んだんだけど、 イヤーよくできてるわホントに。
入門記事は結構飽きていたりします ^^; なんとかなる部分も多いし、、 ライターさんが自分で最も価値が高いと思うアウトプットをくれると私的には一番楽しいっす。 媒体の性格もあると思うので難しいのかも知れませんが。 > 実はこの記事を書くために本格的にMDBのコードを読み込んだんだけど、 > イヤーよくできてるわホントに。 とか もっと語って語ってって感じっす。発売楽しみにしています。
>>208 自己レス。
本家マニュアルに載ってるのはまだMDB_Commonだけなのね。
もうちょっと情報がほしい・・・。
211 :
210 :03/07/19 21:20 ID:???
他に MDB のリソースあったら教えて (´・ω・`) 欲すい もう長いこと情報集めるのサボってるので。
>>213 PEAR::DB + Metabase なので PEAR::DB 代わりに使うには
> 違いを .. 認識
すればokですね、、
つまらない事聞きました。多謝です (_ _)
>情報くれた人 どもっす。 時間をかけてじっくり読み解こう・・・。 それはそうと、Auth1.2.2でましたね。 変わっているところをチェック中・・・。
Authって使いやすいかなぁ・・・ DBつかうとコネクション余計に張らなきゃならんし、 start()でlogin用画面function呼ばなきゃならんとかいうのも気に入らん。
>>216 こんな感じでいけませんか?
DB:
$dbh = &DB::connect(...);
$auth_options = array(
'dsn' => $dbh,
'table' => ...,
'cryptType' => ...
);
$auth = new Auth('DB', $auth_options, 'showLoginForm', true);
$auth->setSessionname(...);
$auth->start();
MDB:
$dbh = &MDB::singleton(..., ...);
$dbh->setDatabase(...);
$auth_options = array(
'dsn' => $dbh,
'table' => ...,
'cryptType' => ...
);
$auth = new Auth('MDB', $auth_options, 'showLoginForm', true);
$auth->setSessionname(...);
$auth->start();
>>217 あ、なるほど。
試してないけど、多分それでできるな。
DBでprepareをselectで使ってるんですが、 $db->getAssoc($sql); とかしたい場合、 $sql = $db->executeEmulateQuery($stmt,array($id)); とかでrealqueryを取得してるんですが、 executeEmulateQuery()ってprivateなんですね。 今はいいけど、PHP5とかになったとき、呼べなくなったら困るなぁ。
>>220 CVS HEAD の DB/DB/common.php の getAssoc() を見てみると、
function &getAssoc($query, $force_array = false, $params = array(),
$fetchmode = DB_FETCHMODE_ORDERED, $group = false)
{
settype($params, "array");
if (sizeof($params) > 0) {
$sth = $this->prepare($query);
if (DB::isError($sth)) {
return $sth;
}
$res = $this->execute($sth, $params);
$this->freePrepared($sth);
} else {
$res = $this->query($query);
}
となっていますので、
$query = 'SELECT ... FROM hoge WHERE ... = ? AND ... = ?';
$data = $dbh->getAssoc($query, false, array('...', '...'));
でお望みの動作になるかもしれません。prepared query が破棄される分効率
悪くなると思いますが。
誰かPear-MLに投稿してよ。
∧_∧ ( ^^ )< ぬるぽ(^^)
∧_∧ ∧_∧ ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。 =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕 = ◎――――――◎ 山崎渉&ぼるじょあ
うぅー DB_DataObject は oracle ではほとんどマトモに動きませんなー オープンソースな PHP は商用 DB とは相性よろしくないのかしら。。。
>>225 恐らく MySQL と PostgreSQL 以外はほとんどテストされていないのでしょう。
どこがどのように動かないのでしょうか?
バグ等は見つけたらとりあえず報告しておくのが吉です。
QuickForm+Smartyでスマートに使う方法って無いかなぁ。 友人に教えて使ってるのを見たんだけど(自分で使ってる時間が無く・・・(苦笑 SmartyArray使うとどうも面倒そう。 特にテンプレートファイル側見るとひたすら {$form.address.label}<br>{$form.address.html} とか並んでいてテンプレートの意味あるの?という感じ。 ならQuickForm使わなきゃいいじゃん、って話だけど やっぱり値チェックとかは強力だと思うし・・・。 Smartyのプラグイン作るとかですかね?
228 :
225 :03/08/12 13:39 ID:???
>>226 oracle がカラム名とかを大文字で返すのがしばしば問題な模様ですね.
まず DB_oci8 の options が 'optimize' => 'portability' でないと動かないってのと,
その状態でも DB::TableInfo() が大文字で返すので createTables.php が動かない,とか.
でも,しばらくいじってみたら,「ほとんど動かない」ってほどでもないようです.
上記の点をクリアすれば基本的な部分はだいたい動きました.
バグとか報告したいんですが,どこにどう送ればいいものやら.
やっぱ英語書かなあかんですかね.読めるけど書けない典型的日本人.
229 :
226 :03/08/12 15:48 ID:???
>>228 それでしたら CVS HEAD へのパッチの形にして PEAR developers list
に投げるといいでしょう。パッチは本文に貼っておけば OK です。
英語は趣旨が伝われば十分ですので簡潔なもので結構だと思います。
Subject: [PATCH] ...
代わりに投げてもいいですけど、私の名前をコミットログに入れられたりしま
すのでなるべく本人の方が良いと思います (笑
230 :
225 :03/08/12 21:31 ID:SbJBYfdH
>>229 なるほど,ありがとうです.
今の仕事が片付いたらその間に見つけたのをまとめて送ってみることにします.
あぁー getLinks() もおかしいな.
_link_loaded が true になる条件を満たしてても true にせず return してる線がある...
231 :
あさがお :03/08/12 22:10 ID:NKV0QIKc
232 :
226 :03/08/13 16:00 ID:???
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
>>234 お疲れ様です〜
>ところでページ上部のバナーが見つからなくなっているようです。
どうやら相手サイトが原因の模様。
バーチャルドメインの設定間違えたか
DNSの設定間違えたか。
apdを入れたいんですが、 # pear install apd (snip) checking for BSD-compatible nm... /usr/bin/nm -B checking whether ln -s works... yes /tmp/tmpmW3Ano/apd-0.4p2/ltconfig: Can't open /tmp/tmpmW3Ano/apd-0.4p2/ltconfig: No such file or directory configure: error: libtool configure failed `/tmp/tmpmW3Ano/apd-0.4p2/configure' failed ってなってしまうんです libtoolだとかってよくわかんないんだけども、これってどこに問題があるんでしょうか。 autoconf,automakeだとかは新しいの入れてるし・・・ つか、そもそもltconfigって誰が作るものなんですか?
>>236 OSも書いた方がいいと思う。
うちのFreeBSDだと最初から入ってるlibtoolが1.3系だから
configureでひっかかる。
圧縮されてるファイルを拾ってきて展開。
phpizeしてconfigure開いて「--no-verify」を削除後、
configure -> make
で、make通るけど。
238 :
236 :03/08/24 05:20 ID:???
ごめんなさい、環境書くの忘れてました。 FreeBSD4.8-RELEASE-p3 libtool 1.5 automake 2.53 autoconf 1.5 そんな感じです。 全部portsで入れてます。 --no-verifyで引っかからなかったのは、 やっぱりlibtoolのバージョンっぽいですね。
>>238 うーん、理由が見えないなぁ。
configureの中身見てみるとよさげだけど。
力になれず申し訳ない。
話変わって。
待ちに待ったWEB+DB Press16買ってきました。
PEAR MDBの解説、結構しっかり載ってます。
// さりげなくbenchmarkクラス使ってるところが流石というか
残念なのはXMLベースのスキーマについて
例が無かったこと。
しばらくはよりパフォーマンスが高いDBクラスとして布教活動かなぁ・・・。
あと、Postgresでのコネクションプールとか
興味惹かれる記事が多かったので久々に買ってよかったと思ったよ。
pear.php.net落ちてない?
最近 www.php.net も重い。
>>240-241 www.php.netはミラーがある(jp.php.net)からいいんだけど、
pearのほうはそういうの用意する予定ないのかねぇ・・・。
今の状態だとpear.php.netが落ちるとそれで終わりだから非常に怖い。
>>243 なかなか認知されないけど、
このまま少しずつでも広まっていけばいいよね。
海外みてるともっと話が盛んな気がする。
ちょっと質問。
Date_CalcクラスのnextDayOfWeekメソッドとかの第一引数、
$dowってなんだろ?
>>244 > $dowってなんだろ?
Daw Of Week: 週の何日目か。
246 :
245 :03/08/29 14:02 ID:???
Day Of Week ね。まちがえちった。
>>246 あー、なるほど。
どもっす。
また時間見つけてwiki更新しときます。
PHPUnit1.0.0 alpha1でたとおもったら、
PHP5でないとインストールできないんだね。
LiveUserの新バージョンも追いかけたいけど、
時間足りない・・・。
PEAR::MDBでつまってしまった・・・。 PEAR::MDB+PostgreSQL7.3.4という構成で、 最初のうちはいいんだけど何回か繰り返してると 突然「MDB Error: unknown error」と言われ接続不能に。 一度エラーが出るとpostgresを再起動するまででるっぽいです。 (あと、エラーオブジェクトをvar_dumpしてみたら 「Setup: could not execute BEGIN」って言われています) 接続数の関係かな?と思い、上記エラーが出るようになってから PEAR::DBで同じDBに繋ぎにいったら、こちらは正常に接続出来ました。 原因、なんなんでしょうか・・・。
>>248 ひとつ推測できるのはトランザクションがアボートしている状態です。
その状態で何かクエリを発行するとすべて無視されますので、 MDB 周りのト
ランザクション処理が原因かもしれません。
>>249 ちょっとコード追ってみた。
接続するときにtemplate1データベースに接続にいってるのが原因っぽい。
自分が接続したいDB名がhogeで、
hogeに対してpconnectしているとすると
・pg_cmdTuplesが使えるか確認
・使える場合、template1データベースに接続しにいく
・が、hogeに対しての持続的接続により接続数が足りない
・接続失敗
って感じらしい・・・。
というか、これはいったい何をしたいのだ?
pg_cmdTuplesって古い関数名だし・・・。
連続カキコすまそ。 これってAffectedRowsとれるかどうか判断してるだけなのだろうか。 しかしそれを判断するのに何でわざわざtemplate1に接続しにいってるんだろう。 とりあえず適当に修正・・・。 話はわかりますが、 pear.php.netの構成が少し変わって日本語のドキュメント消えてますね。 このあたりの動向ってどうなってるんだろうか。
252 :
249 :03/09/10 12:58 ID:???
>>251 > ・が、hogeに対しての持続的接続により接続数が足りない
というのはちょっと意味がわかりません。 PostgreSQL 側の接続数制限なのか
pgsql.so の接続数制限なのかのいずれかだと思いますが。
いずれにも該当しない場合は持続的接続を行っている Apache プロセス内で別
の接続を行うことは問題ないはずです。
ということではなかったらごめんなさい。
日本語ドキュメントについては元のドキュメントの構成が変化しているのでそ
れに追随できていない状態だと思います。今は廣川氏ひとりでがんばっている
状態です。ここの方々で協力できる人がいれば CVS アカウントを申請して参
加して下さい。とはいっても皆さん忙しそうですね...
>>252 ちょっと自分でもわかりづらい書き方だなと思った(汗
すみませんです。
>接続数が足りない
postgres側の制限(今はpgpool使ってるからそっちの制限)ですね。
16接続出来るように許可している状態で、
hogeデータベースだけで16接続pconnectしているから
template1に接続しにいっても出来ない状態。
>今は廣川氏ひとりでがんばっている状態です。
うあ、それは大変だ・・・(汗
協力出来ればいいんですが、ちょっと今私生活のほうが
ばたばたしていて手が出せない状態(苦笑
>>253 オサ松タンみたいに単発な訳でも役立つかな?
255 :
249 :03/09/10 21:49 ID:QKM7iw+w
256 :
nobodyさん :03/09/15 19:03 ID:HzcwV9T4
HTML_QuickFormを、入力→確認→終了みたいな3画面をやるにはどうやるのがスマートかな。 なんか入力→終了なら簡単にできるけど間に確認はさむと難しい。
257 :
181 :03/09/16 12:15 ID:???
>>256 少し前に同じようなことで悩んだんですが...
結局,HTML_QuickForm だけではうまくいかない,という結論に達しました.
で,hidden エレメントでフォームの遷移をステータス管理して,
> if( validate() ){
> if( 確認から POST された ){
> process();
> } else {
> freeze();
> }
> } else {
> // フォーム画面表示
> }
って動作をするようにしました.
でもって,HTML_QuickForm オブジェクトに寄生してこういう管理をしたり「次へ」「戻る」ボタンを追加したりする別のクラスを作ったりしました.
これ使うと,使う側のコードはスマートだけど,そのクラスのコードがとってもダーティ(w
最近になって HTML_QuickForm_Controller という PEAR クラスも出てきたんですが,
これはマルチ画面フォームの制御には向くんですが,同一フォームの確認画面には向いてないみたい.
258 :
nobodyさん :03/09/16 20:37 ID:bh8H+vxm
>> 257 お、ありがとう。なるほど、分かりました。 「次へ」「戻る」クラスのサジェスチョンもキボンヌ!
259 :
189 :03/09/17 15:10 ID:???
>>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 ぢゃダメなのかよ、みたいな。
ところで PHP-kansai でまいぱぱさんが 関西オープンソース&フリーウェア2003 (OS+FW) BOF の誘いを流しているのですが反応ゼロで、、 関西で PEAR や Xoope ネタ握ってる人、少なくないのにちと寂しいです 昨年はまつもとさんが Ruby 公演を打って撃沈された人が続出、 OS+FW 以降、某メールマガジンの某連載が Ruby 一色に染まったりとか、、 影響力のある良い舞台だと思うので布教にはもってこいですよぅ |_・) とか呟いてみるテスト
261 :
avx :03/09/18 02:30 ID:???
PEARのスレが立っててしかもこんなにアクティブでなんだか嬉しい。 中・大規模のPHPを使ったWebアプリ開発には、 PEARは欠かせませんね。 MVCモデルでModelとControllerは全てクラスで設計/構築し、 PHPUnitを使ってXPを実践しました。 ドキュメント化にはPHPDocは重宝しますしね。 DBなどボトルネックとなるものに対してはCacheが 非常に有効です。 DBキャッシュでSQL結果をキャッシュしたり、 Output(Compression)キャッシュで生成した出力をキャッシュしたりするとかなりパフォーマンスがあがります。 Logクラスを継承した独自のログクラスを作ればかなり便利です。 あとPEARのコードみるとデザインパターンとかが実践されているので、とても良い勉強になりますよ。 PEAR SOAPは開発時のデバッグが大変ですが、ちゃんと動きます(笑) 随分前にPEAR SOAPを使ってつくった課金システムが10万/月くらいこなしてるし。
わー、凄い、、 雑誌や BOF を利用して是非話を伺いたいところ。 開発スタイルと PEAR のつかいどころがとてとて興味深いです。 PHPUnit は挫折しました。検証コード書く手間が、、 PhpDocumentor は使ってますがおざなり。 企業規模は存じませんが、SOAP っていうかそもそも Webサービスで利益出してるってのが興味深く。 PEAR::Log ってのも知りませんでした。フレームワークなのか、、LiveUser と使い比べてみたいかも。 中・大規模で使えるってのも興味深いです。 PHP 自体、今安心して使えるのは中規模までとか思ってましたので (PHP-load-test でみんな頑張ってくれてますが) 私は PEAR は専ら開発コストを落とし質を保つために使っています。 一人で、繰り返し押し寄せる自社案件をこなす業態に問題があるのかな、、 # 頑張って開発しても _| ̄|◯ 営業さんが目標達成率 2% とかやってくれて
>>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
264 :
259 :03/09/18 18:33 ID:???
うは、、RTFM な質問を投げてしまうとわ。見落としてました。 ありがとうございます。
>>259 Mって何?
Manual?
>>265 STFG{Search The F*** Goole}
266 :
259 :03/09/19 03:58 ID:???
Read The Fine Manual PHP ってマニュアルの出来いいっすよね。 あと PEAR なら Read The Source, Ruke.. とか。
このスレ読んで HTML_QuickForm を使ってみようと思ったんですが ソースのコメントにすら説明が書かれてないですね。解読するしか ないのか。。
>>267 自己レス。
ちゃんとPEARのマニュアルにありました。ごめんなさい。
>>269 今はpearのマニュアルかなり整備されてるみたいでした。
メソッドごとの解説とかあるし。かなり便利になったん
ですね。ただ量が膨大です。
テーブルを使わないでフォームを出力したいんですが、こ
れは rendler ってのを使えばいいんですかね。しばらくは
マニュアル解読に時間を割いてみようと思います。きっと
それだけの価値があると信じつつ。。
教えてくれたアドレスも今から見てみますね。
>>270 サンプルスクリプトが付属しているのでそれがバイブルです。
>>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 や試行錯誤で会得していかないとならないのが残念なところ.
>>273 PEAR インストールディレクトリの docs/renderers にも同じ物がインストールされているよー
と、そういう話が無いまま流れてきたので一応フォロー。新しいパッケージをインストールした時は docs をチェック。
>>273 >>274 どうもです。pearの各ライブラリにdocsディレクトリがあって
そこにサンプルがいっぱいあるなんて知りませんでした。
さっそく cvs co pear しちゃいました。
試行錯誤が必要なのは残念ですよね。ただ、それをする価値は
あると思うので頑張ってますが。1年後ぐらいにはpearもメジャ
ーになって翻訳じゃなく、ちゃんとした日本語の解説書なんか
も発売されると嬉しいです。
>>274 フォローありがとうです.
Web で参照できる URL の方が貼りやすかったのでそちらを使ってました.
# という他に,ssh 越しで docs 見るより Web の方が見やすい(色分けされるし)という大きな理由も(w
>266 禿同! てか漏れPHP会得するのにほとんどマニュアルしか見てなかったよ。
278 :
275 :03/09/20 21:25 ID:???
>>276 ですよね、ポインタ入れてくれるのって嬉しいっす。
知らない人いたら何かなーとか思ったのでちとお節介でした。
レス楽しみにしてます、これからもがんがってくださいー。
悩みです。 XMLライクなマークアップを吐き出すスクリプトを作っています。 まぁ,RSSみたいな文書構造だとおもってください。 PHPのクラスの中にマークアップ自体を取り込んで書いてしまうのは邪道でしょうか? あくまでも,文書構造自体は外部参照させたほうがコードはきれいなのでしょうが, めんどくさいのと,モジュール化しにくいというのが理由です。 PEARのコーディングではどうなっているでしょうか?
PEAR.php.net から日本語マニュアルの選択肢が消えたようで。 自分的には全然困らないのですが、これでまた認知/浸透に一つ隔たりが出来ちゃったのかと思うと辛い部分も。 PEAR の各クラスを使ううちにメモ取りして時々公開もしてたんですけど、それを続けていくと「一番いいのは邦訳チームに参加する事」に行き当たって… 参加に際してまとまった時間が作れない事と、プログラマ/Unix歴1年生なので遠慮してましたが、、出来ることあるかな、、
>>280 人手は多いにこしたことないですし経験はあまり気にせずにチャレンジしてみ
てはいかがでしょうか。出来ることはたくさんあると思いますよ。
282 :
280 :03/09/27 06:06 ID:???
QuickFormについて質問させてください。 フォームの出力形式をいじるにはrendererを使えばよく、 rendererには5種類あるらしいというとこまでは分かりま した。テーブルタグを使わないで出力したいんですが、そ れってDefault rendererで出来ますか?英語が苦手なもの で全て読むのがつらいです。どこを読めばいいかだけ教え てもらえないでしょうか?
>>283 renderer って配列作って渡してるだけなので中見たら解るよ。
取り敢えず Smarty 用のレンダラは行ける。 Dynamic より Static の方が構造がシンプル。
>>283 table タグを使わないで出力ってのも Default_renderer で出来ます.
>>273 を参照しつつ,HTML_QuickForm オブジェクトを new して,ひとまず getElementTemplate() の出力を見てみてください.
で,それ見ながら何となーく理解した気になってテキトーに HTML を書き,setElementTemplate() して,
addElement() して display() して,出力された HTML を眺めると,簡単に解るんじゃないかと思います.
# でも,PEAR のマニュアルとかは難しい英語は使われていないので,練習して読めるようになる方がオトクでっせ(w
>>284 >>285 レスサンキューです。ちょっと今から試してみてまた結果
書き込みますね。遅くなるかもしれないですけど。
# 最近がんばって読むようにしてます。マニュアルとかに
よく使われる単語(implementとか)が染みついてきてなんと
か読めるようになってきました。
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 です。
>>287 extension_dir に apc.so は存在しますか?
存在するならパーミッションはどうなっていますか?
289 :
287 :03/10/07 21:38 ID:???
>>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
よろしくお願いします。
php.iniの extension_dirが "./" と、なってません?
.htaccess に include_dir "." とか記述されてて php.ini の設定を上書きしちゃってるとか... 問題のページと同じ場所で phpinfo() して include_dir に /usr/local/lib/php/20020429 が含まれているかどうか確認されてみてはいかがかと. # 既に確認済みだったらすんまそん
>>291 php.iniにinclude_dirというdirectiveは、そもそもありません。
include_pathあるいはsafe_mode_include_dirはありますが、
いずれにせよ、それらは、ここで質問されているモジュール(loadable
extensions)のディレクトリとは無関係です。
仮に、php.iniのパス関係directiveをチェックするのであれば、
extension_dirを確かめなければなりません。
293 :
287 :03/10/10 11:01 ID:???
アドバイスを頂きまして、どうもありがとうございます。 php.iniを確認したところ、 extension_dir = "./" になっていましたので、 extension_dir = "/usr/local/lib/php/20020429/" に書き直して、httpdを再起動したところ、無事にAPCが動き出しました。 本当にどうもありがとうございました。
PHP_Parser 0.1ってすごくねぇ?
脊髄反射で何も調べず書き込み 何するもんなの?>PHP_Parser
PHP のソースを解析して,クラスだのメソッドだの変数だのを細かく情報作成するモジュールなわけですね. ちょうど php-users ML でこれを必要としてそうな人がいたので投稿してしまいました. 「他人の褌で相撲」たぁこのことだ. しかし,すごいんだけど,使うシチュエーションがあまり思い浮かばないな(w
> 使うシチュエーションがあまり思い浮かばないな(w
前に誰かどこかで話してたよな。と思って、、発見。
[pear-php:0057] PHP のリバースエンジニアリングツール
元々はコードからUMLを生成するツールを探していたみたいだけどyacc, lex, javaccとかに話が及んでコードパーサーあると便利だねって話になってる。
上のリバースエンジニアリングの話もあると思うけど、あとはDoxygenのようなツールが出来るよね、とか。
> また、ちょっと複雑な定型フォーマットを汎用的なフォーマットに変換したり、
> DB に格納したりする処理も簡単に対処できるでしょう
重たんが色々つついてくれてるので興味ある人は見てみると良いかも。
[email protected] で探すよろし。
> PHP_Parser の説明にあった phpJay をググってみると phpLex というのがある
> ようですが…
とかも。
ついでにMLに振った話ならヲチスレの方で話題になってます。話題というか餌というか。
あれダメこれダメ言って今の方法にこだわらないならもっと良い方法はいくらでも学べると思うんですよ。
テストやりたいならPHPUnitでいくらでもサンプルがあってもっとスマートでノウハウが公開&共有された方法が構築できるわけで。
何故みんな各論で駆け込んでくるんだろう。せっかくML使うなら達人の考え方や持ってる物を最大限に引き出してパクろうとすればいいのに。
>
[email protected] で探すよろし。
そういえばそんな話をしてたなぁ,と過去ログ漁り.
こういうメタなツールは必要とする人間も少ないのか,話題がぷっつり切れてますね.
面白そうな話題だけに,ちと残念.
各論で来るのは,それ以外の方法を知らないんでしょうねきっと.周囲に「きちんと出来る人」がいないと,きちんとした方法を知ることもできず,かといって考え出すこともできない人たち.
この辺について書こうとしたら pear と全く関係ない上にただの愚痴になったので省略(w
>>297 さんの考えにほぼ同意です.
っていうか,PHP_Parserで解析してそのコードがPHP5(betaだけど)が利用可能かどうか調べることができる。 つまりこのクラスは PEAR自体がPHP5(betaだけど)に対応するためのツールなのだ。
おお! ってあれ? PHP5とPHP4で差違を吸収するって方向で話が進んでいたような。 ネームスペース廃止で結局どうなったのか知りませんけど。
なるほど,目から鱗
>>299 といいつつ,大抵のコードは implicit_clone さえあれば何とかなる気がしますが(w
# っつーか,なきゃ死ぬ
PHP_Parserのパース結果をPEAR Var_dumpで 表示して遊んでるけどなんか楽しいなコレ phpDocumentorと合わせて 何もかもドキュメント化したくなる・・・
>>302 wikiにでもあげてみて。
php -sと比べてみたい。
304 :
303 :03/10/30 10:47 ID:???
var_dumpみたいな出力なのね。誤解してました。
ヴァージョンアップで仕様ころころ変わりすぎなんだよオラ
HTML_QuickForm 3.2 で,rule の callback 仕様が「BC break」とかいってあっさり互換なくしてて, ちと不安に思ってたら,最近 BC 維持のコードが加わった模様. よかったよかった.
HTML_QuickFormでArrayレンダラかけた時の配列内の element配列がname属性のインデックスで取得する事のできる 簡単な方法は今のところ実装されてないんでしょうか・・・ 自前でインデックス用の配列作るしかないのか・・・
308 :
307 :03/11/27 02:34 ID:???
結局Arrayレンダラをちょっといじって element名をキーにしたelement配列を吐く レンダラを自前で用意しました HTML_QuickFormって凄いですね 管理画面とか作る時に 凄い楽になりそうだ・・・
309 :
nobodyさん :03/12/07 03:50 ID:Oq3ugULs
話題は無いのか PEARMLもサッパリだし
最近マニュアルを翻訳してゆ。 phpDocumentorを使うのが楽しくって楽しくって。
phpDocumentorを公式にしたんだから Documentorがエラーはかないように コメント直した方がいいんじゃないのかとちょっと思う せめてコアなモジュールだけでも
上へ参ろうぞ
ひさしぶりにキタ━━━━━(゚∀゚)━━━━━!!! pecl.php.netって紫なのね。 緑のPECLバナーはいまのうちに拾って置かないと無くなるんだろうな。 php.netも www, gtk. smarty. qa. pear. pecl. とカラフルになってきたね。次は赤かな?
PEAR特集キタ━━━━( ゜∀゜)━━━━!!!
Web+DB Vol18、本屋からの掃討作戦きぼんぬ。そして特集第弐弾を。。
>>316 それ以前に不定期刊をやめさせるよう買い占めるべき。
そしてPHPの連載枠を!
うぅ どーしてHTML_Template_IT(X)にはgetBlockTemplate()とゆーメソッドが存在しねーのだ!
まぁ詳しい事は知らないけど子供相談室 vol6 のテキストなら既に古くなってます。多分。 英語マニュアルを読むか、今月中に翻訳の予定があるのでまたーり待ってください。
ちとネタ振ってみます。
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 の実装が多すぎるのが一番辛い...
> フレームワークとか CMS の実装が多すぎるのが一番辛い... 辛いっすねぇ. そのくせ決め手が無いような. たまたまフレームワークの誕生シーンをヲチしてると ・自分が欲しいのは Web アプリケーション開発時に必要なお決まりツールのお膳立て でもデベロッパーが作りたがるのは ・発想やアイデアの検証/実装としてのフレームワーク ってな感じで. その辺がギャップなのかもと思った事があります.
323 :
321 :03/12/22 17:49 ID:???
>>322 そうですね。面白くもないビジネスロジックを書くよりフレームワーク書く方
が楽しいのは解りますけど。どこかの CMS か ERP 系の紹介サイトのトップに
でかでかと、「これ以上新規のものを作らないで下さい」と書いてあるのには
笑ってしまいました。
とにかくある程度のリソースの集中が望まれますね。
>>321 そのサイトのフォントやたら小さいですね。。
325 :
321 :03/12/23 19:52 ID:???
>>324 そこに限らず小さいサイトが多いですよね。 CSS で制御されていてサイズ変
えても効果ないですし。困ったもんです。
>>321 面白そう。
Smarty連携も出来るみたいだし、ちょっとさわってみてます。
ただ、自分みたいに英語苦手だとやっぱ苦しいです(苦笑
// 根本的にMVCモデルに対する理解が浅いし…
327 :
321 :03/12/24 17:35 ID:???
>>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);
328 :
321 :03/12/28 21:55 ID:???
>>328 2.0b1使ってみようとしたけど、
ドキュメントも見あたらず手が出せず(苦笑
おとなしく1.0さわりながら様子見しようかなぁと。
330 :
321 :03/12/29 18:16 ID:???
>>328 先程 1.0 => 2.0 b1 の移行が終わりました。
2ch PEAR Wiki にいい加減なチュートリアルを掲載しておきましたので参考にして下さい。
質問があればなんでもどうぞ。
で、現在試してるんだけど・・・ どうやらPHP5だと駄目っぽい? Fatal error: Class 'Filter' not found in /home/hogehoge/mojavi/mojavi-all-classes.php on line 6 こんな感じ。
Web + DB 発売されたんで立読みしてみました。 なにやら新しいテンプレート(名前わすれた)とかコードを暗号化する やつとか色々あってよさげでしたよん。あの雑誌最近 JAVA ばっかだし 値段もあれなんで買ってないんだけどね。その割に MDB とか興味ある 記事がちょぴっとだけ載っててほんと困ったもんです。。
>>333 今号はPostgreSQLのコネクションプーリングの話とかも乗ってる。
PEARも第2特集だし買ってもいいのでは?
あと俺は著者ではない。
>>333 立ち読みでなく買ってほしいなぁ(苦笑
売れ行きが良ければ、頻繁にPHPのこと掲載されるかも?
自分は著者の一人なので露骨な宣伝ですが。
Linux Magazine みたいに全部 DVD に入れば最高だけど、 それが無理なら PHP のとこだけまとめてムック化してほしい。
>>336 のんのん、月刊専門誌創刊ですよ。
入門/初心者記事切り捨ての歯ごたえ抜群なヤツ。
カナダ、フランス、ドイツじゃぁ専門誌出来てるんだし。
# まぁ無理てのは解ってるけど (´・ω・`) 言わせるだけは言わせて
>>338 それの元はカナダの php|architect
アシアルさんが改訂加えたりオリジナル記事を入れたりといった事があるようなのでその辺期待したいけど。
>>333 新しいテンプレート,「Flexy」ですな。
買って読んだけど,結構面白かった。
しかし・・Web+DB,1480円はちょっと高いよ・・・
>>340 3食 袋ラーメンにして買いますた。
今号が特別に高いワケではなくコンスタントに \1,480 なんだよね。
まぁマイナー雑誌の宿命というか。
LinuxJapan を思い出した。
>>335 誤解を招くような表現でごめんなさい。今回の特集はさすがに
立ち読みで済ませられるような量じゃないしちゃんと買います
よん。英語のドキュメントすら乏しい状況であそこまで記事書
くのって並大抵の苦労じゃないと思いますし。
別に JAVA が嫌いなわけじゃないけど PHP の記事がもっと増
えるといいですね。ムック化されたら絶対買います。
連載じゃないのでムック化されないような。 あとPEARって腐るの早いからムック化作業も死ねそう。 PHP子供相談室の Template_IT 記事とかもう遅れちゃってるし。 修正が多いって事はその分買う価値もあるって事なんだけど。 # 雑誌に \1,480 無理ーってのはよく解る。 # 筆者の人数増やして青マンモス形式で緑マンモスとか? # 雑誌/出版の業態が合致してないんかな。いっそアシアルさんで出版とか。
mojavi + Smartyで少しつまづき中・・・ 1. Smartyでプリフィルタ/ポストフィルタ使いたい時はどうする物? 派生クラス作ってそこで書き換えようと思ったら compile_dirは書き換わってるんだけどフィルタが効いてない様子 2. 他のページへのリンク Aタグとかで他のページに飛びたい時に <a href="/index.php/module/ModuleName/ActionName/"> とかそのまま書いてしまう物なんでしょうか? // というか、これをPEARスレに書くってのも何か違うかな(苦笑
mojavi で Google すると AdWords が出る。金払ってるんだね。
>>343 ムック化は別に連載じゃなくてもいいと思うよ。
PHP 記事は無差別にページスキャンでもして PDF 化、で十分。
日経ソフトウェアも PDF 化してるね。
>>336
347 :
321 :04/01/05 15:45 ID:???
>>344 1 についてです。どういう動作を期待されているのか把握できていませんので推測に
なります。ご了承下さい。
確認のために書きますが、現状のコードでは View の子クラスから Renderer の子ク
ラスのインスタンスが戻ってきた直後に $renderer->execute() によって変数の展開
が行われます。 (ExecutionFilter.class.php の 157 行目以降を参照。)
なのでポストフィルタで $smarty->compile_dir 等を変更することは (可能だとして
も) 意味を持たないように思えます。
Smarty の設定や変数を自由に設定しながらフィルタを使用して最終的に表示させるた
めの私の考えつく要件は、
1. SmartyRenderer (またはその派生) クラスに対して singleton() メソッドを実装
したクラスを用意する。
2. SmartyRenderer (またはその派生) クラスで execute() メソッドで何も行わない
ようにする。あるいは少なくとも $smarty->fetch() メソッドを呼び出さないよう
にする。そして元の execute() 相当のメソッドを別に用意する。
長いので次に続きます。
348 :
321 :04/01/05 15:46 ID:???
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() メソッドを使 用して必要な操作を行う。 長文申し訳ない。あと勘違いしていたらすみません。
349 :
321 :04/01/05 15:59 ID:???
>>344 2 についてです。
現状では下記のメソッドが用意されています。
$controller->getRequestModule()
$controller->getRequestAction()
$controller->getCurrentModule()
$controller->getCurrentAction()
決めうちする場合は現状では便利なものは用意されていません。
自前でユーティリティクラスを用意すると便利かもしれませんね。
関係ないですが、 ActionChain クラスは現在のところ使われていませんね。
あと重複しているメソッドもどうにかしないと混乱を招くと思う...
>// というか、これをPEARスレに書くってのも何か違うかな(苦笑
一応 2ch PEAR Wiki の趣旨には沿っていると思いますが、皆さんいかがでしょうか?
332 の件はもう解決されました?
>>347 う、ちょっとわかりづらかったですか。
えっとやりたいことはテンプレートファイルの文字コード変換で
プレフィルタでテンプレートファイルをUTF-8に変換。
ポストフィルタでSJISに変換、という感じです。
SmartyRendererクラスから派生させたMySmartyRndererクラスを作り、
その中で
$this->_engine->register_postfilter('postfillter01');
とかしてみたんだけど、変化無い様子・・・。
// $smarty->compile_dirの件は一緒に書くべきじゃなかったですね。
// こちらは解決してます。
続き。 >現状では下記のメソッドが用意されています。 このメソッドで返ってきたアドレスを setAttributeメソッドでセットする、というのであってるでしょうか。 >332 の件はもう解決されました? とりあえず時間無かったので環境の方をPHP4に入れ替えてしまい、 原因追いかけてません(苦笑 また時間のあるときに見てみます。
352 :
321 :04/01/05 17:48 ID:???
>>350 なるほど Smarty のフィルタのことでしたか。 Mojavi のフィルタのことだと勘違い
してました。 Smarty のフィルタに関しては素人なので残念ながらアドバイスできま
せん...
>>351 それで良いと思います。
# Smartyという事で反応。
>>350 Smartyのフィルタ関係は、mojaviでもちゃんと動作するようです。
文字コードを変換する目的となる仕様が分からないので何とも言えないんですが、
適用するフィルタの使いどころが適切じゃないかも。
フィルタ動作に関しては、
・prefilter -> {}タグを含む素のテンプレートに対して何かする。
・postfilter -> テンプレートタグがSmartyによってパースされ、php構文とスタティックなhtmlが混在する。
./templates_cに保存される寸前の内容、これに対して何かする。
・outpufilter -> Smartyがdisplay()またはfetch() した時の出力に対して何かする。
(※補足: テンプレートで{include ...}した場合にも、その度にprefilter, postfilterが呼ばれる。)
だと思うので、文字コードをそれらのフィルタで変換するのはマズそう。
Perlのh2xsみたいなのってある?
>>355 perldoc h2xs にある、
h2xs - convert .h C header files to Perl extensions
という機能が Pear にあるかということでしたらありません。
PEAR パッケージは現在のところ Perl のような C エクステンション混在型で
はなく Pure PHP のものばかりです。
スケルトンファイル生成のコマンドも私の知る限りはないようです。
もし C エクステンションに関して知りたいなら PECL の方を調査なさった方
がよいと思います。
お役に立てずに申し訳ない。
CVSでPEARまるごと取得したやつを実際に使いたいんですけど pear install hogehoge としてインストールした時とディレクトリ構成が違います。 HTML_Menu というふうに1つ1つディレクトリが存在してるん です。これってそのままコピーしても問題ないんでしょうか。
>>357 PEAR CVS はパッケージごとにディレクトリが作成されています。
PEAR CVS のパッケージをインストールしたい場合は、下記のようにして下さ
い。
1. インストールしたいパッケージのディレクトリに cd する。
$ cd /path/to/CVSWORK/pear/HTML_Menu
2. pear install package.xml とする。
$ pear install package.xml
あとは同じように使用できます。
ありがとう。 Cならext_skelでひな形には十分なんだけど, pure PHPなパッケージなひな形あるのかなって疑問でした。 sakuraエディタのマクロにPEAR互換のひな形を生成するものがあったので, とりあえず,それでよしとします。
pear download-all pear install package じゃいけんのけ?
>>359 じゃないけど手元のPHP-4.3.4だとpearにdownload-allなんて
オプションないよ?
>>363 情報ありがとうございます。pearあたらしくしてみますね。
おそまきながら本日 WEB+DB 購入予定。
365 :
nobodyさん :04/01/20 12:16 ID:nITe0q1V
QuickFormの話なのですが、お知恵を拝借させてください。 require_once "HTML/QuickForm.php"; $form =& new HTML_QuickForm('form', 'post'); $form->addElement('select', 'test', 'Select:', array('A'=>'A', 'B'=>'B','C'=>'C','DEFAULT'=>'--選択してください--')); $form->addElement('submit', 'mode', 'submit'); $defaultValues['test'] = 'DEFAULT'; $form->setDefaults($defaultValues); $form->display(); submitボタンを押してページが遷移した後に、 再びDEFAULT(--選択してください--)を選択させたいのですが、 setDefaults()が有効にならずに、前の画面で選択された項目が表示されてしまいます。 何か別の方法があるのでしょうか?
>>365 $form =& new HTML_QuickForm('form', 'post');
$form->addElement('select', 'test', 'Select:', array('A'=>'A', 'B'=>'B','C'=>'C','DEFAULT'=>'--選択してください--'));
$form->addElement('submit', 'mode', 'submit');
$element =& $form->getElement('select');
$element->setValue('DEFAULT');
$form->display();
当然、このままだとひたすら DEFAULT になるんで
validate() が true なら本処理、false なら getElement, setValue で値を狙い打ち
みたいな形になるかと。
というか、値を戻したい理由が validate false くらいしか思いつかんのだが。
367 :
365 :04/01/20 17:11 ID:???
>366 ありがとうございます。うまくいきました。 選択肢を「初期値に戻すボタン」をつけてみたかったのです。 で、実際にはフォームのオブジェクが複数あるので、 こんな感じにしてみようと思うのですが、_defaultValues使うのは反則ですよね、、、 function setMyDefaults(&$form) { __foreach ($form->_defaultValues as $key => $var) { ____$element =& $form->getElement($key); ____$element->setValue($var); __} } なにか良い方法をご存じの方いらっしゃいましたらアドバイスお願いします。
>>365 setDefaults() の代わりに setConstants() を使いましょう.
Defaults は SubmittedValues で上書きされますが,Constants は上書きされません.
>>366 の提案の setValue() を使うのとほとんど同じ効果になりますが,
getElement() する手間が省けます(w
ちなみに getSubmittedValues() や process(),validate() 等に渡される値は
setValue() しても setConstants() しても,POST で渡された値になります.
っつーか一番の疑問は,なんで DEFAULT に戻したいのか?ですが……
369 :
368 :04/01/20 17:25 ID:???
すれ違った…… 初期値に戻すボタンなら, $defaultValues['test'] = 'DEFAULT'; $form->setDefaults($defaultValues); のトコを $defaultValues['test'] = 'DEFAULT'; if ($_POST['default_button']) { // 初期値ボタンが押された $form->setConstants($defaultValues); } else { $form->setDefaults($defaultValues); } って感じでしょーかね.
>368 ありがとうございます。setConstantsがまさに望んでいたものです。 アドバイスくださった366さん、368さん、どうもありがとうございました。 以下、同じ悩みに直面した人用のサンプルです。誰かのお役に立てば幸いです。 $form =& new HTML_QuickForm('form', 'post'); $form->addElement('select', 'max', '閾値', array('10'=>'10%', '20'=>'20%','30'=>'30%')); $form->addElement('submit', 'mode', '設定'); $form->addElement('submit', 'mode', '初期値に戻す'); $defaultValues['max'] = '20'; if (isset($_POST['mode']) && $_POST['mode'] == '初期値に戻す') { $form->setConstants($defaultValues); } else { $form->setDefaults($defaultValues); } $form->display();
>>370 input type="reset" じゃだめなの?
>371 レスありがとうございます。 submitする前ならresetで元に戻せば良いのですが、 submitしてページが遷移した後に、再びデフォルトの値に戻したかったのです。 わかりにくい説明ですみません、、、
あらぁぁ……いつの間に MDB2 なんてのが…… どんどん進歩に取り残されていく実感. どなたか使用されてますか? 安定性は実用レベルでしょうか?
あぁ,失礼,MDB2 はまだ alpha なんですね. 安定性が云々って話じゃないか(実際に安定してるかどうかは別として).
pecl についての質問ってここでいいんでしょうか? apd がうまく動いてくれません。 環境: Plamo Linux 3.0 , Apache-1.3.2.8 , PHP-4.3.4 , apd-0.4p2 やったこと: % tar xzf apd-0.4p2.tgz % cd apd-0.4p2 % phpize % ./configure # make install # mkdir /home/httpd/apd php.ini に次を追加 extension=apd.so apd.dumpdir = /home/httpd/apd # apachectl restart apache のエラーログ: PHP Warning: Unknown(): Invalid library (maybe not a PHP library) 'apd.so' in Unknown on line 0 php_info() を実行してみると apd の項目がありません。APC や xdebug なんかは正常に動作 してます。何かアドバイスいただけると嬉しいです。
>>375 PECL は詳しくないですが、 Description に
APD is a full-featured profiler/debugger that is loaded as a
zend_extension.
~~~~~~~~~~~~~~
と書いてあるので、
zend_extension="/path/to/apd.so"
じゃないでしょうか?
>>376 そうでした。zend_extension で指定したらうまく動作しました。ありがとう
ございます。
ついでに質問なんですが xdebug を ON にして php_info() を実行すると次
のようなエラー?が表示されます。これってどういう意味なんでしょうか。
Fatal error: Maximum function nesting level of '64' reached, aborting! in Unknown on line 0
Call Stack
# Function Location
1 {main}() /home/httpd/_local/test/info.php:0
2 {main}() /home/httpd/_local/test/info.php:0
省略
64 {main}() /home/httpd/_local/test/info.php:0
xdebug を OFF にすれば普通に php_info() の結果は表示されるのですが。
デバッガとか使ったことないんでトンチンカンなこと言ってたらごめんな
さい。
>>377 php_info() じゃなくて phpinfo() でした。
ここに書きまちがえただけでコードには正しく書いてます。
pear download-all すると Parse error: parse error in /usr/local/lib/php/XML/RPC.php(689) : eval()'d code on line 79 Notice: Undefined variable: v in RPC.php on line 696 Fatal error: Call to a member function on a non-object in /usr/local/lib/php/XML/RPC.php on line 1018 こんなエラーが出ます。XML/RPC.php だけ手動でダウンロードして上書きして みたんですけど結果は同じでした。何がいけないんでしょうか。
382 :
nobodyさん :04/02/03 12:24 ID:jS8jQfMH
ラージオブジェクトをサポートしてるみたいなんでDBからMDBに移行しようと思って現在勉強中。 誰か PostgresQL + MDB の組合せで使ってる人いませんか?接続時に require_once('MDB.php'); $dsn = "pgsql://user:password@localhost:5432/database"; $db = MDB::connect($dsn); すると Unknown Error と表示されて接続できません。PostgresQLのログを見てみ ると、databaseじゃなくtemplate1に接続を試みてるようです。$dsnのパースに失敗 してるのかと思って次は $dsn = array( "phptype"=>"pgsql", "username"=>"user", "password"=>"password", "hostspce"=>"localhost:5432", "database"=>"database" ); のように配列で指定してみたところ、一応接続には成功しましたが、databaseに接続 する前にtemplate1にも接続しにいってます。ソースを追ってみたけどよく分からず。 うちでは普通に動いてるよっていう情報でもいいんで何か教えて下さい。
>>382 書き忘れましたが MDB-1.2 つかってます。
>>382 MDB 1.2 の MDB/pgsql.php の 333 行目以降で pg_cmdtuples()
(現在の pg_affected_rows()) が使用可能か確認するために template1 に接
続しています。気にする必要はないと思います。
>>384 すいません。過去ログにも同じ内容の書きこみあったみたいですね。
PEAR::MDBを使ってみる
http://angelicwing.net/php/?n=3 ここを参考に修正してみました。ところで、$dsn の指定の件ですが
$dsn = "pgsql://user:password@localhost:5432/database";
$db = MDB::connect($dsn);
これでうまくいってますか?うちの環境だと template1 にしか接続してくれない
んですが。。
>>385 自己レス。
apache と postgresql を再起動したら接続できました。おさわがせしました。
なんだか MDB + PostgresQL 安定しない。 接続できたりできなかったり。とりあえず DB つかっとくかな。
388 :
nobodyさん :04/02/10 00:09 ID:GCC9mdph
Net_UserAgent_Mobileがバージョンアップしてますね。 携帯用のコンテンツ作るのに重宝してます。
>>388 誰も使って無さそうだったので(笑、そういって頂けるとありがたいです。
最近は PC 用の Web アプリケーション開発に掛かりきりで、更新が滞りがち
で申し訳ない。
API の整備やら機能追加やら PEAR ドキュメントやら、やりたいことはたくさ
んあるのですが。
作者タン降臨でつか?こういうのって必ず必要な処理だと思うのでライブラリとして 提供してもらえると非常に助かります。新しい携帯端末は日々発売されていくわけで、 更新大変だと思いますががんばって下さい。 でもこれって日本でしかあまり有用じゃないんでしょうか?コードを追いかけた訳じゃ ないんであまり把握してないんですが。 #imode-vodafone-auの絵文字変換クラスなんてのもpearに登録できるのかな▽
作者タン降臨でつか?こういうのって必ず必要な処理だと思うのでライブラリとして 提供してもらえると非常に助かります。新しい携帯端末は日々発売されていくわけで、 更新大変だと思いますががんばって下さい。 でもこれって日本でしかあまり有用じゃないんでしょうか?コードを追いかけた訳じゃ ないんであまり把握してないんですが。 #imode-vodafone-auの絵文字変換クラスなんてのもpearに登録できるのかな?
絵文字変換ライブラリ、是非!
代替 gif に置き換える仕組みがあると嬉しいです。 例えば imode の絵文字を vofafone, PC なら jpg で表示する機能。
>>394 >絵文字に関しては、キャリア間の変換に加えて
>- データベースや HTML テンプレートへ保存可能な形式へのエンコード
>- 上記からの実際の絵文字コードへのデコード
そうですね。CPANのコード見てみましたが、PHPでの実装も簡単にでき
そうなんでやってみます。絵文字を文字列としてデータベースに組込むに
は色々問題があるみたいですね。変換テーブルはPHP上の配列に保存
するのが無難ですかね。
>>395 速度面を考えると配列が良いでしょうね。がんばって下さい。
DB,QuickForm,Smartyを使ってます。。 これらのクラスはオブジェクト指向で作られてすごいクラスだと思うんですが 利用してる側の自分のプログラムでは、結局は処理手順を羅列してるだけ。 全然オブジェクト指向じゃありません。どうすればオブジェクト指向的な プログラムになるんでしょうか?どうやったらいいのかすらイメージすら沸か なくて。何か参考になるもの教えて下さい。
>>397 どのようなコードがオブジェクト指向的だという認識でしょうか?
それがわからないと答えようがありませんが、もし Struts のような動作を求
められているのでしたら、そのような Web アプリケーションフレームワーク
はたくさんありますので、それらを利用されると良いと思います。
PHP のオブジェクト指向サポートはあくまでも手段のひとつですので、こだわ
りがある方は Java, Ruby, Python あたりを使用すると幸せになれると思いま
す。
>>398 オブジェクト指向が何なのかもよく分かってないです。ただ、1ページ作成する時に
1つのファイルにほぼ全ての処理を詰め混んでしまってる今の状況はオブジェクト指向
とは言えないと自分で思いました。
ご指摘の通り、PHPは純粋なオブジェクト指向言語ではないので、オブジェクト指向を
勉強したいなら他の言語を使ってみたほうがいいですね。Javaでも勉強してみようか
と思います。とりあえずその前に Phrame,props,Mojavi ってのを発見したんで使って
みることにします。
uml関連の本かったほうがいいよ。
>>398 氏のいう通り,まずは「オブジェクト指向っぽいもの」を定義しないといかんですが……
ただ何となく
>>397 氏のいうこともわかる気がするのでアドバイス.
たぶん,DB_DataObject を継承したクラスを作って,ロジックをその中に収めるようにすると,
求めている「オブジェクト指向でコードを書いている気分」になれます(w
推測するに,DB クラスを使って RDBMS へのアクセスを抽象化しても,
SQL を組み立てたりするコード自体が Web 画面のプログラムに記述してあるので,
結局テーブルを操作するロジックは各プログラムにバラバラに撒かれることになり,
それが「全然オブジェクト指向じゃない感」を生んでいるのではないかと.
それで,DB_DataObject を継承したクラスを組んでいて何か違和感を感じたら,
それはたぶんオブジェクト指向的なモデリングがおかしいので,
UML とかの勉強をしてみると良いことでしょう.きっと.
読み違えてハズしてたらごめん.
>>401 DAOっていうやつですか?確かに SQL文をしこしこ書いて db->query() する
のに違和感を感じてるのかもしれません。
DBクラスを使っても、違うデータベースでも動くことぐらいしかメリットを
感じられないんですよね。大抵のデータベースなら、標準的なSQL文は同一
じゃないんでしょうか?INSERT,UPDATE,SELECT あたりをDBクラスがメソッド
を実装してくれると嬉しい気がするんですけど。そうしないことにはきっと
理由があるんですよね。みなさんこういったクラスは自作してるってことで
すか?
オブジェクト指向っていうのは ひとつの設計方法なんですよ。 うだうだ言ってないで UMLの本でも買ってきなさい。 あなたの認識が全く的はずれだった ということに気づけますよ。
わかりました
おすすめは ・おぶじぇくと脳の作り方 ・憂鬱なプログラマのためのオブジェクト指向入門 この2冊です
QuickForm の applyFilter ついて質問です。 1. addGroup で作成したグループにまとめてフィルターを追加する。 2. フィルターとして使用する関数にオプションを指定する。 という処理はできますか? 電話番号と郵便番号フォームを1つのグループとして登録して mb_convert_kana($value, "n") を適用。一気に全角数字を半角数字に 変換する、といった処理を行いたいのですが。
>>406 > 1.
普通にグループの名前で applyFilter() したら全部の値が順々に apply されませんか?
> 2.
出来なかったので,引数付きで呼ぶ別の関数で wrap して使ってます.
<?php
function mb_convert_kana_n( $value )
{
return mb_convert_kana( $value, 'n' );
}
?>
なんていう,みっともない関数を作って(w
>>406 両方の問題が解決しました。てっきり $_POST や $_GET そのものにフィルター
がかかると勘違いしてたので、確認方法が間違ってただけみたいです。
もう1つ質問なんですが、selectフォームを作りたい時に
$form->addElement('select', 'mySelectForm', 'テスト');
とすればいいんですが、これだと HTML_QuickForm_selectクラスの メソッドが
使えないですよね(setSelected() とか)。そういう場合は、別にHTML_QuickForm_selectクラスの
インスタンスを作らないといけないです。
今作ってるプログラムには select,checkbox,radio 用のインタンスが複数存在
しています。require するファイルも増えたし、new するクラスも増えたし、
最後に accept($renderer) も複数実行しなければなりません。
Smartyに配列として渡してるからレイアウトは好きに出来るので問題はないので
すが、普通に $form->display() で出力すると
$form->display();
$selectform->display();
<form>
<input type="text" value="hoge">
</form>
<select name="selectform">
<option = "huga">
</select>
のように困った出力になってしまいます。何か使い方を勘違いしてる気
がしてます。
>>408 <?php
$form = new HTML_QuickForm( 'hoge' );
$form->addElement( 'select', 'mySelectForm', 'テスト' );
$mySelect =& $form->getElement( 'mySelectForm' );
$mySelect->setSelected( 'hogehoge' );
$form->display();
?>
と,たぶん getElement() のようなことを考えておられるのではないかと推測.
あるいは,
<?php
$mySelect = new HTML_QuickForm_Select( 'mySelectForm', 'テスト' );
$mySelect->setSelected( 'hogehoge' );
$form = new HTML_QuickForm( 'hoge' );
$form->addElement( $mySelect );
$form->display();
?>
なんて方式も可能だったと思いますが,メリットは薄いのではないかと.
子ルーチンがそれぞれ独自の HTML_QuickForm_Element 派生クラスを返して,
親ルーチンがそれらをまとめて addElement() する,なんて場合には,
上記のような「addElement() にオブジェクトを直接渡す式」が使えますね.
>>408 なるほど。それでうまくいきますね。ありがとうございます。
ネット上にあるサンプルって
if($form->validate()) {$form->freeze();}
このパターンばかりなんですが、実際に何らかの処理をするサンプルプログラム
どこかにないですかね。最初にフォームにアクセスした時は$form->validate()は
FALSEを返すみたいですが、どの変どういう仕組みになってるのか分からないので
、どういうコードを書けばいいのかイメージが湧かないです。
やっぱりソースコード読むのが一番の近道ってことでしょうか。精進します。
DB_DataObject_Form使ってる人いる?
>>411 FormBuilderね
使ってみようかと思ったんだけどexample動くように設定するのが面倒で放置中(w
使ってみてレポートきぼんむ
>>412 なにやら面倒そうだね。
ところで 2ch pear wiki って誰でも勝手に書きこんでいいの?
DB_DataObject 使ってみました。すごい便利ですねこれ。 DB_DataObjectクラスを継承した daoMytable を作って $dao = new daoMytable; $dao->id = 3; $dao->name = 'mona'; $dao->address = 'tokyo'; $dao->update(); を実行すると、 UPDATE mytable SET name = 'mona', address = 'tokyo' WHERE id = 3; のような SQL文を自動で生成して、DBクラスを使ってそれを実行してくれます。 実行前にテーブルの情報を、データベースにSQL文を使って取り出してる みたいで、文字列のカラムには自動でクォートしてくれると至れりつくれり のようです。 でもこのテーブルの情報を毎回問い合わせるのは勿体無いと思うのですが、 これはクラス定義の際に指定できないんですかね。各カラムの属性をクラス で定義できたらいいなと思うんですが。
追記 あと、int型の列に文字列を挿入しようとすると、勝手に 0 を挿入するような SQL文を実行されてしまうようです。ここらへんの挙動って変更できないので しょうか。PEAR::isError() なんかでエラーを取得できると嬉しいのですが。
>>414 テーブル毎に DB_DataObject の派生クラスを作成して、必要なメソッドを上
書きすればお望みの動作が実現できます。この場合は INI ファイルは必要あ
りません。
最低限の実装はこんな感じです。
class MyApp_DataObject_TableName extends MyApp_DataObject
{
function MyApp_DataObject_TableName()
{
parent::MyApp_DataObject();
$this->tableName('table_name');
}
function table()
{
return array('id' => 1,
'name' => 2,
'description' => 2,
'rdate' => 2,
'mdate' => 2
);
}
function keys()
{
return array('id');
}
function sequenceKey()
{
return array('id', true, false);
}
}
>>416 ありがとうございます。
DB_DataObjectクラスのコメントの部分に思いっきり書いてありましたね。
読んでもよく意味が分かってなかったので助かりました。
>>414 毎回自動でやるより,最初に /usr/local/lib/php/DB/DataObject/createTables.php を使って,
ini ファイルを作ってやった方が,効率も速度も利便性も良いと思います.
でも,oracle だと少しいじってやらないと動かないかもしれません.
以前に比べれば,少しはマシになっているのですが……
pg や my では素のまま動きますね.
mojaviでLiveUser用の権限コンテナってあるんでしょうか?
>>419 ありがとうございます。
Generator.php の使い方がよく分からなくて困ってました。
createTables.php から使ってみたら見事、データベースのテーブル定義を
取得して iniファイルと各テーブル用クラスを出力してくれました。
これは便利です。テーブル定義は iniファイルかクラスの変数のどちらか
に定義しておけばそれを読み込んでくれるってことですよね。ちょっぴり
感激です。
>>421 おめでとうございます.もうコレなしで PHP できません(w
テーブル定義は ini ファイルがメインになり,内部動作もこれに依存します.
例えば setFrom() や toArray() といった「全てのフィールドをアレコレする」というメソッドは,
クラスのコードに書いてあっても ini にないフィールドは無視されます.
テーブルのフィールド名や構成を変更した時は,
必ず createTables.php を再走行しましょう.
この時,クラス定義のコードで AUTOCODE とかなってる部分以外は保存されるので,
安心して上書きできます.
>>422 自分のコードががらりと変わってしまいました(・∀・)イイ!!
ところで DB_DataObject には isError() がないみたいなんで
すがどうやってエラーを検出したらいいんでしょうか。
クラス定義を見ると raiseError() でエラーを作成してる
のですが。
データベースの接続に失敗したときに、問答無用で 「DB Error: connect failed」 と表示されてしまうので、ここらへんを制御したいと 思った次第です。 DB_DataObject::debugLevel(); でも、このエラーは表示されてしまいます。
DB_DataObjectで抽出条件等を設定中に 実際どのようなSQLクエリが発行されるか確認する方法ってありますか? ->update()する前等に生成されるSQLクエリが 正しいかをテストしたいのですが・・・ それらしいメソッドが見当たらない・・・
>>423 PEAR::isError() が使えませんか?
>>425 DB_DataObject::debugLevel() で表示されます.
あと ini で設定する ignore_update とかそんなんも参考までに.
>>426 発行したSQLクエリを表示はできるようなのですが、
->update()を実行した時点で自分の書いたコードに誤りがあると
間違ったSQLクエリを実行してしまう可能性がありますよね。
なので、実質的なデータベースのupdate自体は行わずに
SQLクエリのみを表示するという事は無理でしょうか・・・?
$person = new DataObjects_Person;
$person->get(12);
$person->name='fred';
/* ここで一度確認したい */
//$person->update();
>>427 >>426 > あと ini で設定する ignore_update とかそんなんも参考までに.
正確には debug_ignore_updates だった.
あるいは,全てにおいてとにかくどんなクエリが実行されてるかを知りたいのならば,
_query() を自分のクラスで overload して,特定条件で引数を表示するようにしたら良いかと.
最初に Auth で認証して、各コンテンツで認証済みかどうかチェックする際に どうしてますか? いちいち Auth のインスタンスを作成して getAuth() メソッドを呼出してる のでしょうか。それとも自前で session_start() して $_SESSION['_authsession']['registered'] を調べてますか?自分は後者なんですが何か変ですかね。
auto_prepend_file使ってる
ひとつのディレクトリに要認証なページとそうでないページが混在する場合, auto_prepend_file では不便だったので, auth_check.php なんてファイルを先頭で include してる. そのファイルの中では new Auth したりエラーだったらログイン要求ページに飛ばしたり ログインしてたらグローバル変数にメンバ情報のオブジェクトを入れたりとかしてる.
やっぱり何らかの手段で new Auth するファイルを読み込む のがよさそうですね。参考になりました。 そろそろ LiveUser も試してみようかな。
DB_DataObject の update() メソッドで、$settings に値を設定する 部分に理解できない点がありました。$settings は UPDATE構文での SET に続く部分を設定する変数のようです。 // if の条件部は何を判別してるのか? if ($v & DB_DATAOBJECT_STR) { // name = 'mona' という文字列を追加してるんだろうけど // なぜ末尾に ' ' を追加してる? $settings .= "$kSql = ". $DB->quote($this->$k) . ' '; continue; } if (is_numeric($this->$k)) { $settings .= "$kSql = {$this->$k} "; continue; } // なぜ、どの if にもマッチしなかった場合に intval() するのか? $settings .= "$kSql = " . intval($this->$k) . ' ';
続き 自分なりの理解だと、update() は次のような手順 1. データベースに接続 2. 指定したテーブルが存在するか確認。なければ false を返す 3. テーブル定義を ini ファイルから読み出すか、table() を実行して取得 4. 各カラムの値について 4.1 オブジェクトの変数に保存されてるか調べる 4.2 文字列ならクォートして、数値ならそのままにして、結合する(条件があえば Cast.php を使う) 5. 手順4を元にしてSQL文を生成 6. SQL文を実行する こんな感じだと思うんですが合ってますか? update() を参考にして、SQLを実行しないで表示だけするメソッド作るのと int型のカラムに文字列を挿入しようとすると 0 に変更するのを、NULL に変更したいのです。
>>433 > // if の条件部は何を判別してるのか?
> if ($v & DB_DATAOBJECT_STR) {
フラグが立ってるか見てるだけでそ。そういう意味ではなく?
> // name = 'mona' という文字列を追加してるんだろうけど
> // なぜ末尾に ' ' を追加してる?
> $settings .= "$kSql = ". $DB->quote($this->$k) . ' ';
次の sql構築のための空白を追加してるんでわ?
> // なぜ、どの if にもマッチしなかった場合に intval() するのか?
> $settings .= "$kSql = " . intval($this->$k) . ' ';
コメントが書いてあるね。v1の制限ということにしたいんじゃないのかな。
> update() を参考にして、SQLを実行しないで表示だけするメソッド作るのと
> int型のカラムに文字列を挿入しようとすると 0 に変更するのを、NULL に変更したいのです。
こういうの DataObjectに限らず、PEAR全般的に苦手でしょう。
一つのメソッドに処理詰め込み過ぎ、クラスにメソッド詰め込み過ぎは PEARの十八番。
>>435 ありがとうございます。大体分かったのですが
> if ($v & DB_DATAOBJECT_STR) {
ここの & って && とは違いますよね?
リファレンス以外の & の使用法をマニュアルから発見できませんでした。
あと v1 ってのは DB_DataObject のバージョン 1.x 系列という意味ですか?
>>436 > ここの & って && とは違いますよね?
確かにビット演算するメリットは薄いからね。
> あと v1 ってのは DB_DataObject のバージョン 1.x 系列という意味ですか?
たぶんそうじゃないかな。コメントには V2としか書いてないけど。
正しい解釈は俺が知りたいくらい。
>>437 なるほど。そこは見落としてました。ありがとうございます。
DB_DataObject凄い良さそうで気になってるんですが、joinとかはどーなるんですか?
DB_DataObjectってまだMDBには未対応なんですか?? 使いたすぎるよ・・・
>>442 昔は MDB_DataObject があったのに、どこかに消えたのかな?
MDB_DataObjectはお亡くなりになりました。 ・・・というのは冗談で。 いつの間にか消えてますね。 googleで検索すると残骸らしき物が出てくるけど。 何となく、MDB2に統合される予感が。 pear install MDB2-alphaで確認してみてくださいな。
MDBでDB_DataObject使うとDBに比べてどんなメリットがあるの?
MDB はベンチ結果が場合により DB より良い……らしいので,その恩恵を受けれるのでは.
MDBは操作面が楽だから使いたいんじゃないの? MySQLやPostgreSQLみたいにインスコやDB作成も楽だし 運用面を考えると慎重になるけどね
448 :
447 :04/03/05 12:11 ID:???
間違えた ○MySQLやPostgreSQLみたいにインスコやDB作成も楽だし ×MySQLやPostgreSQLと比べるとインスコやDB作成も楽だし
しかし MDB,getAll() とかの楽ちん系メソッドで param が渡せなくなったのは DB に比べて使いにくいと思うのだが. SQL 解析エリアをケチろうとして ? とか & とか多用すると, いちいち prepare() → query() しなきゃならんですよ. ……もしかしてもっと良い方法がある?
>
http://pear.php.net/package/PHP_CompatInfo > PHP_CompatInfo will parse a file/folder/script/array to find out the minimum
> version and extensions required for it to run.
これ面白いです.まだバグが多いですが(w
このノリで,過去のコードが新バージョンの PHP で問題なく動くかどうか
走査してくれるプログラムがあれば,重宝しそうだなぁ.
保守 age 代わりに質問投入 (´・ω・`) HTML_QuickForm で addElement や addRule 並べるのが鬱陶しくて配列で回してるんですが、もっとお得な方法ありません? 配慮されていてもいい箇所だなーと思ったので、自分が何か見落としているのではないかと思った次第。
>>453 確かに面倒なんだけど,じゃ代わりにどんな機能なら汎用的で納得できるか,と考えると,
意外に思いつかなかったですわ(w
自分は,項目を並べた CSV から QuickForm を自動生成するクラスを自分で作っちまいました.
455 :
453 :04/04/06 04:00 ID:???
>>454 ありがとうございました。
やはりそういう事になりますか。
> 自分は,項目を並べた CSV から QuickForm を自動生成するクラスを自分で作っちまいました.
この辺、車輪の再発明祭になってそうなのですが、そろそろ何か出てくれませんかねぃ。
全然おもわんなー>addRule 並べるのが鬱陶しくて 別にCSV作ってそれ読むクラスとかよりシンプルだと思うんだけど
そらー並べるだけなら CSV 読むクラスよりシンプルに決まってるでしょ,CSV 読まないんだから. CSV 読むクラスを読むだけのソースは addRule() 並べるよりシンプルですよ. それと,CSV をプログラム知識のない人でも書けるので,誰でもある程度好きなフォームを設計できるようになりました. なりました,というか,それが目的で作ったんですけどね.
.
>>458 目的がプログラムの知識のない人が書けることなら構わないと思う。前提条件
が違えば考慮することも違うのは当然なので。
プログラマの視点からすればビジネスロジック以外に時間を掛けるかどうかは
じっくり考慮する必要があると思う。
保守。あんまネタないですかね?
つーか、どのくらいの割合でPEARが使われてんかな。 Perlと違って関数が豊富だから、機会がなければ全然使わない人も多そうな感じ。 あと、速度(負荷低減)重視のため、PEARはあえて使わないってこともあったりする?
>>463 俺の負荷が軽くなる事の方が大事です。
サーバーの負荷は問題になれば相応の投資が為されるしな。(アクセラレーター導入、サーバー買い換え等)
考えないって事じゃなくて優先順位の問題かな。。
PEAR まんせー
1 年前に比べれば爆発的に進んだよね。今頃は PEAR? 何って感じで PEAR = PEAR::DB 的な誤解も多かった。
465 :
nobodyさん :04/04/27 04:15 ID:YGiFCKd6
PEARのMailでメール送信すると日本語が化けるんですが対処法はあるのでしょうか? SMTPで送りたいのでmb_send_mailは使えないんです。
>>465 昔のPHPスレで誰かがまとめてくれてたやつを載せておく。
外部のSMTPサーバを使って日本語でメールを送信する
方法についてまとめてみました。PHPではEUC-JPを使う
と仮定してます。
require_once("Mail.php"); // Mail/mail.php ではない
mb_internal_encoding('EUC-JP'); // PHPで使ってる文字コードを指定
//送り先の設定
$recipients = "
[email protected] "; // エンベローブの設定
//ヘッダーの設定
$headers['From'] = '
[email protected] ';
$headers['To'] = '
[email protected] ';
$subject = 'サブジェクト';
$headers['Content-Type'] = "Text/Plain; charset=iso-2022-jp"; // これはなくてもいいのかも
//サブジェクトののエンコード
$headers['Subject'] = Mb_Encode_Mimeheader($subject,"ISO-2022-JP",B);
//本文
$body = "日本語だよママン";
//本文のエンコード
$body = Mb_Convert_Encoding($body,"ISO-2022-JP","EUC-JP"); // PHPで使ってる文字コードを指定
//SMTPサーバーの設定
$param['host'] = '192.168.0.2';
$param['port'] = 25;
//オブジェクトを生成して送信
$mailer =& Mail::factory("smtp", $param);
$status = $mailer->send($recipients, $headers, $body);
mb_send_mail() でなく PEAR::Mail を使うことのメリットってどんなのがありますか? 見た感じでは普通に mb_send_mail() を使う方が簡単に思える……
>>467 Unix系OSでsmtpをしゃべりたいときとか。
>>466 のコードを見るとまとめとしては古臭さを感じなくもないが、
使い方のサンプルとなるとこんなもんでしょ。
469 :
nobodyさん :04/05/07 13:10 ID:Jax/P/Ee
AuthクラスでgetUsername()みたいにログインした時のパスワードをもってきたいんだけどできないのでしょうか?
メール送信したら女王様を 送っちゃったよ なぜなら SMtpで 送ったから なんちゃって
>>469 無理。以前、CRAM式の認証をしたくて調べたんだが、
認証そのものはAuthクラスから呼び出される各Container側で行っており、
Authクラスにはその結果だけ知らされる仕組みになっていた。
ま、FileだけとかDBだけと決め打ちするのなら、そのContainerだけ改造
すれば可能。
472 :
471 :04/05/07 16:40 ID:???
あ、ログインしたときの$_POST['password']を保持しておけばそれで
>>469 は解決するのか。
>>470 マリモーマ うざいから 氏んでくれ いちいち 単語ごとに 区切るなよ 読みづらいから
474 :
nobodyさん :04/05/11 11:11 ID:dmRD31gk
開発環境だとうまく行くんですが、サーバーにあげると 次のようなエラーになってしまいます。なんででしょう。 Fatal error: Failed opening required 'PEAR.php' (include_path='') in /home/XXXX/XXXX/PHP/DB.php on line 26
>>474 include_pathが開発環境と違うからだろ。
エラーメッセージ嫁よ。
476 :
475 :04/05/11 11:20 ID:???
「開発環境と違う」からではなくて、正しく設定されていない。 が正解かな。スマソ
477 :
nobodyさん :04/05/11 11:46 ID:dmRD31gk
>476 ご返事、ありがとう。 ただ、開発環境もサーバもDB.phpとPEAR.phpは同じディレクトリに おいてあるんだけどうまく行かない。
478 :
nobodyさん :04/05/11 11:53 ID:dmRD31gk
バージョンのせいは考えられるでしょうか。 サーバー PHP Version 4.1.2 開発環境 PHP Version 4.3.4
>>477 include_path が空だということは DB.php は、
require_once('/path/to/DB.php');
でロードしている訳だよね。 PEAR.php は DB.php から、
require_once('PEAR.php');
のようにロードされているから include_path が空の場合は読み込みが失敗す
るのは自明のこと。 include_path に DB.php までのパスを設定できれば解決
する。 ini_set が使えるなら次のようにしてみるといい。
ini_set('include_path', '/path/to');
480 :
nobodyさん :04/05/11 13:52 ID:dmRD31gk
>479 ありがとうございました。 しかし、ini_setはしましたが、まだうまく行きません。 Fatal error: Call to undefined function: is_a() in /home/xxxx/xxxx/PHP/DB.php on line 431 431行目は function isError($value) { return is_a($value, 'DB_Error'); }
>>480 include_pathになんて入れたの?
そのエラー文からだと、/home/xxxx/xxxx/PHP としたのか?
つーか、やる気ある?
ちなみに is_a() の問題は is_a() の
>>482 にあるマニュアルページの contributed notes に下位バージョンでの互換用関数のコードがある.
DB.php を読む前に定義しとけば下位バージョンでもひとまず動作はするよ.
# つーか,エラーメッセージも読まずに「わかりません,やってください」なんてのは php-users でやってくれ(w
あと老婆心ながら.開発環境の方が新しいバージョンなのはトラブルの元になるからヤメた方が良い.
PEARのサイトがUTFになってから IEが何故か自動認識してくれず化けまくり 同じ症状の人います? 何か原因があるのかな・・・
pear install xxxをすると、ダウンロードはしてくれるんだけど、 その後全く動かなくなってしまうのですが、なぜでしょう? pear download xxxでモジュールのみダウンロードして pear install xxx.tgzをしても同じく止まったままになってしまいます
「全く動かなくなる」のところをもうちょっと具体的に. あと,先に手動で Archive_Tar あたりをアップデートしてから再挑戦してみるとか.
485です
環境を書き忘れていました。
サーバ:MacOSXServer 10.2.8
apache1.3.29+php4.3.4
具体的な現象は485に書いた通りです。
こんな感じ
↓
[server:/Users/xxxxxx] xxxxxx# pear install auth
downloading Auth-1.2.3.tgz ...
Starting to download Auth-1.2.3.tgz (24,040 bytes)
........done: 24,040 bytes
これで止まってしまいます。この後、30分待っても応答がありません。
pearcmd.phpのソースを追っかけてみたら、
>>486 さんの言う通りArchive_Tar.phpの
_extractInString内にて処理が返ってこない現象が出ているようです。
(まだその中を追い切れてません)
Archive_Tarの手動アップデートを試してみます。
ありがとうございました。
2ch PEAR Wiki ですが編集しようとすると怒られてしまいます。 エラーメッセージは、 cmd=edit&page=[[xxx]] は有効な WikiName ではありません。 のようなものです。
Powered by PHP 5.0.0RC3-dev つーのが臭い。。。こんなバージョンで運用する管理人さんって?
うあー。 ごめんなさいごめんなさい。 PHP5対応暫定でしました。 HTTP_GET_VARS HTTP_POST_VARS HTTP_SERVER_VARS HTTP_COOKIE_VARS このあたり、PHP5からもう使えないんですね・・・。
DB_DataObjectって複数のデータを一括でinsertする方法は無いですか? query()で書くしかない?
自分が知る限りでは,ないです.
今存在に気付いたんですけど pear.conf なんて前から ありましたっけ?
config-setでsetされるので、4.3以降かな。 このCLIベースの永続セッションってどうやってつかうんだろ?
497 :
496 :04/05/31 02:35 ID:???
やっと理解出来ました…。 これってob_start → ob_get_contentsで そのモジュールのVIEWが出力してる値を保存してるだけだったんですね。
>>492 複数のデータっていうのがどういうものなのかわかりませんが
私は配列で格納された複数のデータをforeachでautoexecuteする
メソッドを用意してそれで一括登録してます。
(って全然スマートじゃないですけど・・)
複数のデータっていうのは多分 MDBで言うExecuteMultipleでinsertみたいな感じかと。 それなら、まあ499さんの言うようなラッパー書くしかないかな・・・。 しかし、DB_DataObject良いね。 今まで使ってなかったのはもったいなかったよ。
ずっと聞こうと思っていた事をようやく思い出しました。 誰かmojavi + QuickFormで使ってる人いますか? 上手くやるとかなり楽出来るかな、とは思うのだけど 綺麗にまとめられない・・・。 良い実装例あったら見てみたいです。
>>501 使いまくってます。アレにも書くつもりですが、 サンプルを Wiki に載っけ
ておきましょうか?
503 :
501 :04/06/04 13:40 ID:???
mojavi.orgがメンテ真っ最中らしい(笑 新しいトップが見えたり、ソースコードが見えたりしてる・・・。 こういう事故があるから、ドキュメントルート以下には最小限のコードしか置かない、 ってことなんでしょうね・・・。 そして www.mojavi.org v2 released June 9th, 2004 ですよ! ついにきたー
>>504 これは Mojavi 2.0 リリースじゃなくてサイトがリニューアルされたというこ
とですよね。
dev.mojavi.org でこっそり公開されていた内容に置換されたみたいです。
>>505 俺が今朝書こうとして送信やめたレスとまったく同じ内容でびびった
>>505 ああ、サイト変わったからそろそろMojavi2.0リリースかなぁという期待です(笑
Mojavi 2.0 リリースでしゅ。
509 :
nobodyさん :04/06/11 23:58 ID:u32wLhvU
510 :
509 :04/06/11 23:59 ID:???
ageてごめん。
>>509 mojavi1からmojavi2が素晴らしい変化だったと思うので、
mojavi3にも超期待ですよ。
ただ、楽は出来るんだけどほんとにする事なくなりそう(苦笑
mojavi3がどんな風に改善されるかってどこかに まとめてありますか?
それよりまずはmojavi2のドキュメントの充実を!!
>>515 その通りで、自分でモジュール作らないとダメです。
で、警告が出ているのは
指定したモジュールが無い場合に表示するモジュール( Default / PageNotFound)が無いために出ています。
例えば、「module=Default&action=Login」と指定してるなら
webapp/modules/Default/actions/LoginAction.class.php
webapp/modules/Default/views/LoginView.class.php
あたりを作らないといけません。
自分は
http://pear.sakura.vg/index.php?%5B%5BMojavi%2FTutorial%5D%5D これ見て覚えました。
それにしても、すっかりmojaviスレ(苦笑
面白そうなPEAR無いですかねぃ。
じゃPEARの話題を無理矢理。というか助言ください。 Console_ColorをしようしてカラフルなCLIアプリを作ったのですが, lessにパイプすると文字化けしてしまいます。 tcshでRedhatでScreenを使用しています。 lessってカラフルにはならなかったような気がするので、 文字化けしないようになれば充分です。 解決方法はあるのでしょうか? // PHPでCLIページャを書くとかしてみようかな
今さらQuickFormの初歩的な質問です。 $elementValid[] = &HTML_QuickForm::createElement('radio', null, null, '確認済み', 'yes'); $elementValid[] = &HTML_QuickForm::createElement('radio', null, null, '未確認', 'no'); $form->addGroup($elementValid, 'valid', '確認:', ' '); こんな風にラジオボタンを作成したんですが、「確認済み」の方を デフォルトでチェックしておきたい場合はどうしたらいいのでしょうか? $elementValid[] = &HTML_QuickForm::createElement('radio', null, null, '確認済み', 'yes', array('checked' => 'checked'); としてもチェックが入りませんでした。
$form->setDefault( array( 'valid' => 'yes' ) ); とかそんなんだった気がするです.
Flexy使ってみたんですが compile() を呼出すとこんなエラーが出ました。 Warning: mb_strpos(): Unknown encoding or conversion error. in /usr/local/lib/php/HTML/Template/Flexy/Compiler/Standard.php on line 667 Warning: mb_strpos(): Unknown encoding or conversion error. in /usr/local/lib/php/HTML/Template/Flexy/Compiler/Standard.php on line 675 その後でこんなエラーが出ます Parse error: parse error in /home/httpd/hoge/compiled_templates/flexy-static.html.en.php on line 51 これはテンプレートにマルチバイト文字が含まれてる場合だけに発生して 全部英数字の場合はうまくいきます。 php.ini で str* 関数をオーバーロードするように設定してたので、一旦 それを外したら上手く動きました。文字化けもしてないようなんで一安心 なんですが、mb_strpos じゃなくて素の strpos を使っててそのうち問題が 起きないか心配です。 このエラーはうちの環境だけで皆さんは普通に動いてますか?
>>521 mb_系関数でのオーバーロードは使わないのが基本だと思う・・・。
mb_系使うときは明示的に指定すればいいわけで、
素の状態の関数が使えないのはやばい。
524 :
520 :04/06/15 11:29 ID:???
setDefault() じゃなく setDefaults() だったーってのはおいといて, うちの環境では以下のコードで期待通りに動きます. <?php require_once 'HTML/QuickForm.php'; $form = &new HTML_QuickForm('test'); $elementValid[] = &HTML_QuickForm::createElement('radio', null, null, '確認済み', 'yes'); $elementValid[] = &HTML_QuickForm::createElement('radio', null, null, '未確認', 'no'); $form->addGroup($elementValid, 'valid', '確認:', '?'); $form->setDefaults(array('valid' => 'no')); $form->display(); ?> これでダメなら H_QF のバージョンが古いとかですかね……
quickform便利だけどpearとの整合性が取れないから 使えない。
pearじゃなくてsmartyデスタ
どゆこと?
HTML_QuickForm_Renderer_ArraySmartyの使い方がわからないから教えてくれってことじゃなかろうか。
$qf =& new HTML_QuickForm_Renderer_ArraySmarty($smarty); $form->accept($qf); $smarty->assign('form', $qf->toArray()); これだけでわかりますかねぃ。 $smartyがsmartyのオブジェクト。 $formがaddElementとかしたQuickFormのオブジェクト。 んで、テンプレート側では <form {$form.attributes}> {$form.name.label} : {$form.name.html} {$form.name.error} {$form.submit.html} </form> みたいに記述。
>>529 こういう風に使う場合、
TML_QuickForm_Renderer_ArraySmartyのコンストラクタって
smartyオブジェクトが引数になってるけど、
水面下のレンダラのクラス内でsmartyオブジェクト使って何やってるんだろう
今ソース追いかけてるんですけど今いちピンとこない・・・
532 :
531 :04/06/16 21:16 ID:???
TML_QuickForm_Renderer_ArraySmartyになってた HTML_QuickForm_Renderer_ArraySmartyです
おーさんくす。 便利だなぁ。 pearのテンプレートもみてみます。
HTML_Template_Flexyがバージョンアップ。 テンプレートにはブロックやプラグインの機能が追加され、 Smartyのassign()のようにデータを登録するメソッドも追加された模様。 プラグインで変数の修正子を拡張できるようになったのが面白いけど とりあえず今作りかけの2chビューワは0.8.2までのAPIだけで行こう。。。
データベース接続用のPEARクラスって いろいろありますけど、 それぞれの違いを解説したサイトなんてありますか?
PEARは配布スクリプトに使うにはあまり適していませんねえ。 というのも、鯖によってPEARがインストールされているかどうかがまちまちだからです。 それなら、配布パッケージにPEARをはじめから添付させればいいじゃないかと 思われるかもしれませんが、 そうすると、 Fatal error: Cannot redeclare class pear in /usr/local/lib/php/... といったエラーがでる可能性があります。 従って、PEARを使う場合にはユーザーにわざわざPEARが インストールされているかどうか確かめてもらって それによってスクリプトの設定を修正してもらう必要がでてきてしまいます。 まぁ、class_exists関数をいちいち書いてやればいいのですが・・ とにかく、何かと面倒ですよねぇ。。。
537 :
536 :04/06/20 08:48 ID:???
すいません、class_exists関数を使っても無理でした。。
>>536 ファイル検索パスをちゃんと設定してやれば無問題。
$_base_dir = dirname(__FILE__);
$_include_path = $_base_dir . PATH_SEPARATOR . $_base_dir . '/lib';
ini_set('include_path', $_include_path);
539 :
536 :04/06/20 09:55 ID:???
おぉっ ありがとうっ
mojavi v2使おうとしても ドキュメントが全くないんじゃないかな・・? みんなどうしてるの。 わざわざコード読むなら、 自分にあった小規模なフレームワークを 自作しちゃえばいい気がするし・・・。
>>536 配布じゃなくてレンサバでなんだけど
.htaccess でinclude_pathを設定して/usr/lib/php/の下を丸ごとうpしたことがある
php_value include_path /home/sites/users/acount/web/lib
542 :
nobodyさん :04/06/22 16:20 ID:s1sNH/Zv
すいません、Pearの質問はここでいいんでしょうか? Pearインストール後、DB接続をしようとすると Call to undefined function: setfetchmode() と出るんですが、setfetchmode()が定義されてないってことですよね? setfetchmode()ってわざわざ手動で定義する必要があるんでしょうか? 原因のわかる方、教えてください。 関連するソースコードは以下の通りです require_once("DB.php"); $config = "mysql://mysql接続設定"; $db = DB :: connect( $config, true ); $db->setFetchMode( DB_FETCHMODE_ASSOC );
>>542 接続に成功しているかどうかを確認するのが先でしょう。
echo DB::isError($db) ? '成功': '失敗';
DB::connect で失敗、とか。
>>542 dsn間違いで接続できてない。
$dbは、DBオブジェクトじゃなくて
DB_Errorオブジェクトが返ってきてるに1票
546 :
542 :04/06/22 16:40 ID:???
>>543-545 その通りでした。
今回Pearを初めて触ってみたんですが、素のPHPと違って
DB接続エラーとかデフォルトで吐き出してくれないんですね。
ありがとうございました。
PEAR::setErrorHandling() あたりも参考にしてみてください. エラー時の振る舞いをこれで変更できます.
548 :
542 :04/06/22 17:48 ID:???
そういや、DB::setErrorHandling() は無くなったのねん。
551 :
542 :04/06/23 11:19 ID:???
>>550 ありがとうございます。
なんだかこのスレは親切な人多いね
>>549 DB クラスは PEAR クラスを継承していないという驚きの事実
DB_xxx を返す factory のためだけのクラスだからですかね.
$db = DB::connect() して $db->setErrorHandling() なら可能なんでしょうかね.試してないけど.
>>552 できる
チェックコード書きたくないので
PEAR_ERROR_CALLBACKにしてる
が
ん
ば
す
た
|
錦
工エェェェ(´Д`)ェェェエ工
562 :
554 :04/07/01 14:18 ID:???
>>554 は実はシメジスレの誤爆だと白状してみる。
先日PHP質問スレでHTML_QuickFormの話がちょろっと出てて、
てか、前々から「便利だよ」と再三再四出ていた訳なんだが、
気にしつつ、マニュアルを見たらサクッと使える気がしなくて
敬遠してた。オサーソはなかなかついていけません。orz
んで、ちょっと使ってみた。スンゲー便利やん。
吐いたHTMLを見ると、タグの属性でalignやvalignを使ってるのねん。
別にW3C信者ってほどではないが、一部はCSSで指定しているんだし、
どうせならここらあたりもstyle属性で指定してくれりゃ... と思うのは
おらだけじゃないはず。きっと、デフォルト設定用メソッドが用意されているとは
思うが、もうどこかに、W3C信者用設定一式みたいなのはどこかに転がって、
Viewクラスのコンストラクタ辺りでHTML_QuickFormのインスタンス生成→Myデフォ設定
ってやってる方も居るはず。
そんなわけで、そこら周りのスクリプトだれか晒しぎぼんぬです。
563 :
554 :04/07/01 15:29 ID:???
あ、Smartyと連携させたらなんも出なくなった。 あーなるほど。
>>562 Default レンダラの吐く HTML は,テーブルレイアウトだし,まぁ「確認用」程度に思っておけばよろしいかと.
565 :
554 :04/07/01 16:38 ID:???
>>564 うぃうぃ、そのようですな。
そして、Smarty用レンダラのtoArray()で吐く変数を見るとheader関係とエレメント関係の配列が
同じ次元に格納されている。つかえねぇー。
エレメント部分だけ一つ掘った配列にしてくれりゃ、{section}でループさせるのに...
submit辺りは自分で書くからさぁ。
もうちっと格闘するか。
566 :
564 :04/07/01 18:52 ID:???
header エレメントって使ったことねーですわ…… 上手な使い方がどーにも思いつかない orz Default レンダラで使うならともかく,テンプレエンジンと組ませると,かなーり不要な気がする. header を活用しまくってるって人いたら使用例を公開きぼむ.
567 :
554 :04/07/01 22:23 ID:???
>>566 チョト言い方悪かった。
headerエレメントというより、form全体のfrozen、javascript、attributes等と
同列の配列に、各エレメントの配列が並んでいるんですよ。
んで、素のtoArrayをみれば、ちゃんとエレメントは一つ掘っていました。
ちょっと何の為にSmarty用のレンダラが用意されているのか疑問。
正しい活用方法があれば教えて欲しい。
それか、toHtmlを書き直してごっそり押し込む方が楽が出来そう。
>>567 おそらく全く同じ疑問で悩んでる人発見
同列に並んでるからエレメントをループして表示させようとすると
いちいちfrozen、javascript、attributesを判断して抜かないとダメじゃん、
ってことですよね
結局俺もこれを解決する事ができずArraySmartyレンダラを諦めて
Arrayレンダラでやってます
ArraySmartyレンダラでこの問題を解決する方法ないもんでしょうか
自前でレンダラ書き直した方が速いのかな・・・
>>562 /lib/php/HTML/QuickForm/Renderer
にW3Cなモノを用意するとか。
ん〜、 is_array($element) && isset($element.html) とかやってたかも スマートじゃないですか、、そうですか |出口| λ............ 昔あった SmartyDynamic レンダラとかはそういう仕様だった気がする。
571 :
570 :04/07/02 03:18 ID:???
そういう仕様ってのは > んで、素のtoArrayをみれば、ちゃんとエレメントは一つ掘っていました。 のことね。 > ちょっと何の為にSmarty用のレンダラが用意されているのか疑問。 ってのは Smarty だけじゃなく、他のテンプレートエンジンを考慮した時に生きてくるんじゃないかなと思ったり。 # 酔いどれ中につき、いろいろと失礼。
自分は Smarty でなく Sigma & (ITStatic or ITDynamic) 使ってるんで外してるかもだけど, ArraySmarty ってソースにも書いてある通り ITStatic をベースにした static レンダラだから, {section} で回せるものを吐くようにはそもそも出来ていない(使い方が違う)ってことではないかと. テンプレートにエレメント名の項目をずらっと書いておけば accept() 一発でいけるわけで, 汎用テンプレートを使えるようにするには SmartyDynamic のようなものが必要,と. どうして SmartyDynamic がなくなって代わりが用意されなかったのかは謎ですが.
573 :
554 :04/07/02 10:59 ID:???
みなさんいろいろどーもです。 今form入力ページがたくさんある業務用サイトを作っていて、 数ページ程度ならエレメントをずらずらと並べるけど、なんだか QuickFormの利点一つ(サンプルスクリプトを動かしてみたときの感動)が スポイルされる気がするし、数十ページになるとループで回せるところは テンプレート側で回したいので、現段階での結論は、汎用テンプレートを 用意しViewクラス内で素のQuickForm::toArray()で得た変数を元に form部分をくみ上げて、メインのテンプレート内に押し込むことにします。 きっともっと便利な方法があるかもしれないけど、これだけ大きなクラスを 掌握する頭も時間もねぇー。 お付き合いありがとうございました。
> Viewクラス内で |_・) 何かのフレームワークですか、、もじゃ?
お疲れさんです. 確かにそういう用途だと Dynamic レンダラじゃないとやってられんですね…… 今の作業が終わって手が空いたら SmartyDynamic を新たに作ってしまうと後が楽かもです(w ArraySmarty を継承して,toArray() をうまいこと自作すれば,意外に簡単にいけそうな気がする.
576 :
554 :04/07/02 15:23 ID:???
スマソ、覚書&質問。 addRuleに独自のものを追加するには、 QuickForm::registerRule()で独自ルールチェック関数を追加する。 最終的にはcall_user_func()を使っている。 addRuleの第4引数はcall_user_funcの第3引数に渡るので、 汎用的なルールチェック関数も書ける。 んだが、QuickForm::registerRule()はViewクラスにあって、 ルールチェック関数はDBに問い合わせる都合上Modelクラスにあって、 スタティックコールできないメソッドの場合、どうすればいい? 強引にViewクラス内から $this->form->registerRule('isUsed_Check','callback','isUsed_Check',&$GLOBALS['model']); として、Modelクラスのメソッドを呼び出すことは出来て、結果正しく動いてますが、 こんなWarningが出ます。 Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /usr/local/apache/htdocs/************* on line 34 とりあえず、.htaccessに php_flag allow_call_time_pass_reference On と書けば Warningは出なくなりますけど、こんなんでいいのか?
やり方違うんで参考になるかどうか知らんけど 自分は QF を extends して CommonForm.class.php を作成し、registerRule はそこでやってる
>>576 ってゆーか、エラー内容だけ出されても、、
どこのフレームワーク使ってるの?
助言出来る/出来ないは別にして興味あるなぁ
>>576 PHP5 で pass by reference が標準になることを考えれば,
allow_call_time_pass_by_reference が true なのが邪道とは言いかねると思う,個人的には.
で,そのフレームワークの構造がわからないとなんともだけど,
DB_DataObject が DB クラスを singleton 的に保持するように,
$GLOBALS をうまく使ってやれば,static に呼んでも動作するチェックコードを書けるのではないかと.
580 :
554 :04/07/02 16:17 ID:???
>>577-579 レスどーもです。
どこかのフレームワークを使っているとかじゃないです。
独りでチマチマやってます。
独学なんでやり方そのものが怪しいのかもしれんが、
siteAを作る場合、それようのVIEWとMODELクラスを作りますが、
必要最低限のCommonViewとCommonModelはあって、それぞれextendsしてます。
QFは今回初めてだし、Form入力の無いページもあるので、
必要なときにだけ生成させようかと。siteA_View->Qfrom
なんで、siteA_View->Qfrom->registerRule() でルールチェック関数に
siteA_Model->isUsed_Checkを指定したいということです。
ご理解いただけましたでしょうか?
> DB_DataObject が DB クラスを singleton 的に保持するように,
> $GLOBALS をうまく使ってやれば,static に呼んでも動作するチェックコードを書けるのではないかと.
うげ、意味がわかんね。orz
>>580 あーなるほど.
とりあえず,
関数名のトコに 'isUsed_Check' でなく array( &$GLOBALS[ 'model' ], 'isUsed_Check' ) を指定すると,
正しくそのオブジェクトのメソッドを叩くようになるんではないでしょーか.
<?php
$this->form->registerRule('isUsed_Check','callback',array( &$GLOBALS[ 'model' ], 'isUsed_Check' ));
?>
みたいな.
でも QF の Rule はある意味でビジネスロジックだから Model に入るのは良いとして,
それなら Model が QF 全部を生成し,それへの参照を View が持つようにする方が良いのではないか,とか,
漠然と思いましたです.
582 :
554 :04/07/02 17:35 ID:???
>>581 あーそっかー。
QFのコードを追っかけながら書いてたから、バカ正直に第4引数を使うことしか頭になかった。
と、言い訳を言ってみたが、あったまかてーわな。
allow_call_time_pass_referenceをoffにしてもエラーが出なくなりました。どうもです。
QFをModelで生成するかどうかは、もう少し様子を見ます。Smartyとの連携もあるし。
あと1点気にしているんですが、そもそもあるメソッドから別クラスのメソッドを呼ぶのに
call_user_func(&$GLOBALS[ 'class_name' ], 'method_name' ); というように、
$GLOBALSを使うのって「あり」ですか? てか、これ以外の手法って知らないんですけど。
1.あり
2.別の正しい方法がある
3.別クラスのメソッドを直接呼び出すのがそもそも邪道。
4.スタティックコールできるように組む。
5.他
独学なんで、ナニが王道なのか気になる。
call_user_func との絡みは別として, あるクラスのインスタンスを共有して使いたい時に $GLOBALS を使う例は PEAR にも多々あります. 例えば DB_DataObject は内部で DB クラスのインスタンスを使うんだけど, $GLOBALS[ '_DB_DataObject_connection' ] みたいのに DB オブジェクトを入れておいて, DB_DataObject クラスの各インスタンスから共通で使用したりしてます. ただ,$GLOBALS の乱用はコードを超見にくくするので, 上記のように特殊かつ限定された利用法に留めるのがよろしいかと.
>>583 話それるけど、ちょっと気になったので。
DB_DataObjectのインスタンスを共通で使うのは何故でしょ?
DB_DataObjectで使っているPEAR::DBのインスタンスはGLOBALSに保持して
中で共通の物使ってるからあまり意味ないような気が・・・。
(DB_DataObject::debugLevel(5)とすればわかるんだけど、
既に一回DataObject(からfactoryした場合も)を使った後は
既に生成済みのDBインスタンスを使ってます。
デバッグメッセージには「Cached Connection」とかそれっぽく出るはず)
>>584 DB_DataObject の複数のインスタンスがひとつの DB のインスタンスを共有する,
って意味のことを書きたかったんで……
おっしゃることと同じ意味のことを書きたかったんですが,文が変でしたかね.すんまそん orz
自作の DB_DataObject 拡張クラスで _connect() を override して ALTER SESSION したりしてるんで
その辺の動作は理解してるつもりですが,説明するための文にするのって難しいですね orz
586 :
554 :04/07/03 09:17 ID:???
>>583-585 なんどか読み直しているうちに
>>579 の意味(手法)がなんとなくわかってきた。
DB_DataObjectを細かく見ていないので、勘違いしているかもしれませんが。
>>582 に対して反論はなさそうだけど、汎用性を考えれば
>>582 の4ってことかな。
いろいろどーもでした。m(_._)m
>>585 ああ。
なるほど。
ちょっと意地悪な言い方でした・・・。
すみませんです(苦笑
>>586 多分、DataObjectのソース読んだ方が理解早いですよー。
588 :
554 :04/07/03 10:20 ID:???
あああ、、、 Rule/Callback.phpのvalidate()は、registerRuleの第4引数がある場合のみ call_user_funcで呼び出していて、なければ直接呼び出しているようです。 だから、 $this->form->registerRule('isUsed_Check','callback',array( &$GLOBALS[ 'model' ], 'isUsed_Check' )); だとFatal errorがでる。やっぱり、 $this->form->registerRule('isUsed_Check','callback','isUsed_Check',&$GLOBALS['model']); こうかかないと、ダメみたいっす。 やっぱstaticで呼び出せるようにしないとあかんのか。 そう思いつつ、今回はこれで逃げる。
589 :
554 :04/07/03 10:24 ID:???
おっと。
>>587 多分そうでしょうねぇ。
急がば回れ、しかし解っていても回れない。
一気に詰め込むと頭がオーバーフローしそうだ。orz
590 :
554 :04/07/03 16:03 ID:???
何度もスマソ。 素のtoArray()は添字配列なんで、単純にループさせる場合はそれでいいが、 ループで済まされない場合は属性(name)を使った連想配列の方が、 やっぱ何かと都合がいい。 そんなわけで、エレメントだけ一つ掘った配列になるよう Smartyレンダラ(ArraySmarty)を継承して作ってみました。 <?php require_once 'HTML/QuickForm/Renderer/ArraySmarty.php'; class HTML_QuickFrom_Renderer_ArraySmarty2 extends HTML_QuickForm_Renderer_ArraySmarty{ function _storeArray($elAry) { if ($elAry) { $sKeys = $elAry['keys']; unset($elAry['keys']); // where should we put this element... if (is_array($this->_currentGroup) && ('group' != $elAry['type'])) { $toEval = '$this->_currentGroup' . $sKeys . ' = $elAry;'; } else { $toEval = '$this->_ary[\'elements\']' . $sKeys . ' = $elAry;'; } eval($toEval); } return; } } ?> [\'elements\']を追加しただけですけどね。とりあえずこれで動いた。
591 :
554 :04/07/03 16:11 ID:???
そうそう、
>>590 はtoArray()を確認しただけで、
他のメソッドまでは確認してません。あしからず。
592 :
554 :04/07/03 16:30 ID:???
連投しているとウザがられそうだが... typoしてました。 ×class HTML_QuickFrom_Renderer_ArraySmarty2 extends HTML_QuickForm_Renderer_ArraySmarty 丸class HTML_QuickForm_Renderer_ArraySmarty2 extends HTML_QuickForm_Renderer_ArraySmarty あと、やっぱりこれだけだと、getElement()等が使えません。orz
上の一連のHTML_QuickFormのレンダラの問題、 自分の使いやすいようにレンダラ修正すりゃいいっちゃいいんだろうけど、 正直これくらいはパッケージ側でクリアにして欲しいよなあ せっかく凄くいいライブラリなのにここだけが微妙に融通利かないってのが歯痒い 作者さんにメールすれば考慮してくれるもんですかねぇ。。
594 :
554 :04/07/06 19:50 ID:???
うーんと、続報?
とりあえず、
>>590 のコードは使えます。(typoはおいといて)
レンダラ側ではtoArray()しか使ってないけど、QuickFrom側は
addGroup,addGroupRule,getElement,createElement等は問題なし。
よくよく考えれば、レンダラ側を弄っただけなんで、本体は関係ないのよね。
Group化が出来れば、自分が作っているフォームならほぼテンプレート側で
ループさせるだけで済みそうです。
各種レンダラの操作を統一する過程で Dynamic が消えたんじゃないかと予想してみる
596 :
nobodyさん :04/07/07 10:50 ID:LF3NmbpZ
QuickFormのRule検証でSubmitボタンを複数用意して、ボタンごとに動作を変えるっ てことはできないんですかね? 極端な例では、ボタンAをクリックしたときにはvalidateするけど、ボタンBをク リックした時にはvalidateしない。みたいなことです。 Documentを見てみたものの、そういった情報が見当たらなかったので。 何か情報があったらお願いします。
>>596 if (isset($_REQUEST('element_name ...
598 :
nobodyさん :04/07/07 17:43 ID:MesltrHS
>596 すみません。ちょっと言葉が足りませんでした。 client側でのRuleチェックをしようかと思っているんですが、 何がうまい方法はないかな、と考えているんです。 Ruleをカスタマイズしようか、と思ってのですがもしもQuickFormで うまい方法があれば、と都合のよいことを考えています。
>>598 Ruleのclientで吐き出してくれるjavascriptコードに満足いかないなら
もう自分でjavascript書いちゃった方がいいんじゃないかな
HTML_QuickFormのclientチェックはあくまで付加的なものかと
JavaScript 切ってる人は今でもそれなりにいそうだし, client side のチェックは,全く動かなくてもサイトとして完動するものじゃないと,ね. で,submit ボタンにしないで,button オブジェクトに自前で onclick に JavaScript 指定し, その中で,onSubmit を無効にしてから form.submit() するようにすれば, 期待の動作をするのではないだろーか.
PEARマニュアルの日本語訳に参加したいんですが どうすればいいんですかね。 マニュアル読んでも何も書いていないし。 ご存じの方教えてください。
PEAR::Calendar無駄にでかすぎるような気がするんですが モース腰シンプルな可憐d−あクラスないかな。
pearマニュアル文字化けする。 IE糞だな。 operaも糞だし。 糞だらけだ。
>>601 ひとまず php-doc ML に参加するよろし
>>601 先ずは[PHP-doc ML]に参加する。で、アーカイブで流れを見る。
# [PHP-doc 213]のツリー辺りからで良いと思う。
なんでmojaviにはcookieをgetするメソッドはあるのに setするのはないんだろう?
リストボックスとかラジオボタンの値の保持ってできんの?
mojaviわかりやすく解説したサイトある?
そんなもの無い。 フォーラム漁るかコード読むか。 8月末の神ムック発売まで待て。
612 :
611 :04/07/16 15:34 ID:???
PECLのSQLiteが1.0.3でSQLite2.8.14になりますた。 でも pear upgrade SQLite-1.0.3.tgz だと sqlite.so の移動に失敗するんでtarballを解凍して 手動でmake installしないといけませんでした。(なぜかこの場合はOK.) PHPのバージョンは4.3.8, OSはMacOS X 10.3.4 と FreeBSD 5.2.1-p9
>>613 確かに、pear upgrade SQLite では、置き換えに失敗して、sqlite.so が消えていた。
こちらは Linux だったけど。
結局、アンインストールしてからインストールした。
pear uninstall SQLite
pear install SQLite
最近、Mojavi のソース読み始めたんだけど、 Mojavi って、 module/***/action/*** っていう形でアクセスするから、どうもURLが長くなりがちだよね? パラメータを渡そうとするとさらに長くなるし、これは、module action の部分を 短くするとかしか、短くする手段ってないのかな? 今まで、 ***.php?para=*** みたいなカンジだったから、一気にURLが長くなるので気になってしまって..
>>615 二通りの対処ができます。
* module, action の部分を変更する。
config.php の MODULE_ACCESSOR, ACTION_ACCESSOR を変更して下さい。
* ページコントローラとして Mojavi を使う。
ディレクトリ毎にコントローラ index.php を置いて、モジュールとアクションを固定しておく。
$controller->dispatch('TargetModule', 'TargetAction');
なるほど、そっか。 dispatch に直接モジュールとアクションを渡せばURLで渡す必要はないのね。 ってことは、別名のファイルでモジュールとアクションを固定してしまえば、 前みたいに、 ***.php?para=*** ってこともできますね。感謝!
Mojaviの神ムックが待ち遠しい・・。 ところで本の名前とかはまだ分からないんでしたっけ?
一冊まるごとmojaviとかpearライブラリを使ったムックが出るのかと思ってたが、 少し記事が載るってだけなんだよね?楽しみな事に違いはないが。
ライター陣は強力だし、期待して良いんでは。
Mojaviの記事に期待されている皆様へ Mojaviの記事を書いた者です。 現在のところ、ムックの発売日や名前に関して、少なくとも私は存じており ません。このことについては、明日確認を取ってみます。
誰?
もじゃう゛ぃ
神イタ━━━━━(゚∀゚)━━━━━!!!!
626 :
622 :04/08/02 18:01 ID:???
確認取りました。 とりあえずムックは出版されるということしか、現在はわかりませんが。。。 続報が報告可能でしたら、後日。
>>626 あのー,出来れば出版社の名前だけでも教えてほしいのですが・・。
628 :
622 :04/08/02 18:20 ID:???
629 :
627 :04/08/02 23:55 ID:???
>>628 ありがとうございます。
てっきり私はWEB+DB PRESSあたりなのかなと思っていたんですが,
PHP専門のムックが発売されるんですね。
楽しみにしてます。
630 :
nobodyさん :04/08/04 18:23 ID:99atDA1b
DB_DataObjectで $id = $table->insert(); で、sequenceの値がとってこれるとマニュアルにあるみたいですが、うまくいきません。 ini に sequence_usr = id ってして createTables.php してもダメです。 ためしに DataObject_Usr クラスに sequenceKey(){return array('id',true,false)} を追加したんですが、 やっぱりうまくいかないです。 なんででしょうか・・・
> sequenceの値がとってこれるとマニュアルにある どこでつか
>>630 とりあえず debugLevel 5 に設定して
DB とどんなやり取りをしてるのかみてみるのがいいかも。
あと sequenceKey() を設定しても、keys() で帰ってくるのが偽だった時
array(false, false, false) を返すみたいなので、念のため
keys() { return array('id') } もあわせてどうぞ。
ついでにいうと、DB は何なのか?ってのも。
おい、ボケども、ムックはどうなってんだ!早く出せ!
ヽ(´ー`)ノ 夏、真っ盛り
Flexy1.0.0がでましたね。 使っている方どれくらいいらっしゃるのでしょう?
>>636 ノシ
0.9.2から大きな変更はなさそうなのですんなりアップグレードできそう。
DB_DataObject 1.7.0も出ましたがChangeLogの
* Result Field names now stored seperately from Result Object
がちょっと気になるのでこっちはコードを見てからアップグレードする予定。
うぉー、1.0 だ! ここまで長かったっすねぇ。 Flexy 使ってます。 でも HTML の文法構造が破綻していると出力がもっと壊れるので HTML の品質が確保出来ないと使いづらいのが (/_;)
|x・)ムックは遅れてます・・・ とりあえず、次のW+D見ながらのんびりお待ちください(ぶ
うるせーボケ!ぐだぐだ云ってないで早く出せ!カス!
本当、夏だな…
>>639 次のW+Dにも何か載るの?
oracleに繋げようとしてんだけど、 dsnにホストの名を設定するとエラーになるけど ホスト名設定しないとつながる。 わけわかんねえな〜。
>>642 Oracleは使ってないんだけど、
ホスト名を書くとTCP/IPで接続、書かないとUNIXドメインソケットで接続するから、
Oracle側の設定でTCP/IPによる接続を許可していないんじゃないかな?
外してたらスマソ
>>642 それは Pear のどのパッケージの話?
もしかして Pear じゃなく oci8 関数の話をしているならスレ違いだが,
その「ホストの名」ってのが tnsnames.ora にサービス名として
きちんと登録されているか確認してみると良い.
>>643 >>644 Oracle9iが入ってるサーバー(RedHat8)と
Oracle8iが入ってるサーバー(WindowsXP)があるのね。
tnsnames.oraに2つともサービス登録してあって、
両方ともSQLPlusでつながるし、PHPのOciLogonでもつながるんだよ。
パッケージはデータベースでいいんじゃないの?
ちなみにPHPとOracle9iは同じサーバー(RedHat8)に入っているよ。
>>641 返事遅れてごめんなさい。
既に告知でてますが、24日発売のW+DにPHPの特集記事があります。
内容はやや初心者よりかな。
立ち読みして買っても損しないと思ったら買ってください(笑
元々オフレコだったのを誰かさんが PHP-users に流して、今度は まーだーちんちん か…
650 :
こやま :04/08/24 18:01 ID:???
いやでも、情報公開の時期としてはそろそろいい頃だし、 鈴木さんはなかなかこういうのを仕掛ける人ではないので、 タイミングとしてはいい質問だったんでないかな。
ひょっとして、自作j(ry
652 :
649 :04/08/24 18:46 ID:???
いやー、迷惑になってないならそれでいいんですが。 最初に PHP-users に流れた時には色々あったので。
653 :
nobodyさん :04/08/30 15:19 ID:s3JBvD0S
DB_DataObject で joinAdd するときの話なんだが、 links.ini には [tb2] tb2_id = tb1:id んで、 $do1 = DB_DataObject::factory('tb1'); $do2 = DB_DataObject::factory('tb2'); $do2->no = 1; $do1->joinAdd($do2,"LEFT"); なとき、 SELECT * FROM tb1 LEFT JOIN tb2 AS tb2 ON tb1.id=tb2.id とかなるんだが、俺としては SELECT * FROM tb1 LEFT JOIN tb2 AS tb2 ON tb1.id=tb2.id AND tb2.no=1 になってほしいんだが。 どうすればいいとおもう?
あ、まちがい [tb2] id = tb1:id だ
風がすごいですなー。
>>653 $do2->whereAdd('no=1'); とか $do1->whereAdd('tb2.no=1'); とかではだめ?
自分はDB_DataObjectのJOIN嫌いなのでテーブル結合はビュー使って
ビューに対してDB_DataObjectのインスタンスを作ってます。
だから↑で書いたのは間違ってるかも。
INNER JOINですが、 [table1] id = table2:table1_id $table1 = new Example_DataObject_Table1(); $table2 = new Example_DataObject_Table2(); $table2->example_field = 5; $table1->selectAs(); $table1->joinAdd($table2); $table1->whereAdd('table1.id = ' . $hoge); $table1->find(); SELECT 〜 FROM example INNER JOIN table1 AS table2 ON table1.id=table2.table1_id WHERE table2.example_field = 5 AND table1.id = xxx な具合に動いています。
>>647 復活したね。
ついでにこれで中の人も分かったので、これだけのドキュメントが行方知らずって勿体ない事態もこの先回避出来るぽい。
最近の関西の盛り上がりをみてるとPHPって 性交童貞もとい、西高東低な気がする。
659 :
nobodyさん :04/09/01 06:56 ID:Mk6yOqMs
すいませんが教えてください PEARを使いたくてインストール方法を調べてたんですが c:\php\go-pear.bat なんてものはないんですが・・・ 環境 WindowsXP PHP4.3.2
>>660 卒研で使うサーバーと同じ環境を構築ってのが理由だったんですけど・・・
みなさんはどこら辺を使ってるんですかね?
>>661 go-pear.batはcli版のphpで、PEARフォルダのgo-pear.phpを実行
しているだけなんだけど、php内のPEARフォルダに go-pear.php
ファイルはある?
663 :
660 :04/09/01 09:21 ID:???
>>661 > みなさんはどこら辺を使ってるんですかね?
私は常に最新版を使っているけど、PHP日本ユーザ会のページに各バージョンの
Release Announcement と ChangeLog(それぞれ和訳あり)、Bug情報が載っている
から、読んで判断されたし。
ttp://www.php.gr.jp/
>>662 それがないんすよ
ぐぐってやり方調べてもそこから始まってて、どうにもならなくてここにきたわけなんですが
cli版のPHPってのも初めて聞きました
>>663 参考にします
665 :
660 :04/09/01 10:06 ID:???
>>664 php-4.3.2-Win32.zipの中にはgo-pear.batが入ってるよ(確認した)。
本家のページからWindows binary(not Windows installer版)を再入手してはいかが?
>661 そのサーバは攻撃されたらあぼーんですね。
669 :
653 :04/09/02 17:40 ID:???
遅くなったが、
>>655 ,656
の通りでうまくいった。ありがとう。
で、質問ばっかりで申し訳ないんだが
CROSS JOIN する場合はどうすりゃいいんだ?
$table1->joinAdd($table2,"CROSS");
ってのはないみたいだし、
INNER JOIN table2 ON TRUE
ってすればいいかなぁとおもったんだが
$table2->whereAdd('true');
$table1->joinAdd($table2,"INNER");
とかしてもJOINされてないんだよね。
links.iniにON条件を書いてないとjoinAddできないのかな・・・
670 :
661 :04/09/03 07:06 ID:???
>>668 すんません、まだです
PEAR自体は入ったっぽいんですけど
プログラム組んでみると動かない・・・
Quick_Formのradioエレメントについてなんですが、 未選択状態を調べるにはどうすればいいのでしょうか? addRuleでrequiredを追加してみたんですが、エラーが発生しないようなんです。 未選択状態だと、以後のチェックも行われないみたいだし。 デフォルトでどれかを選択状態にしておけばいいのですが、 利用者が選択を忘れてデフォのままsubmitしてしまうのを 避ける為、デフォルトは設定せずにしておきたいのですが。。。 $form->addElement('radio','radio_select',NULL,NULL,'A'); $form->addElement('radio','radio_select',NULL,NULL,'B'); $form->addElement('radio','radio_select',NULL,NULL,'C'); $form->addRule('radio_select','選択してください','required'); $form->addRule('radio_select','選択値が異常です','regex','/[A-C]/'); としていますが、どこかおかしいですか?
>>671 うちの HQF 3.2.3 では期待通りに動くっす.
他の element もまじえて $form->validate() した後の $form を Var_Dump::display() したりすると,
何か掴めるかもしれないね.
ただ,'radio' は group の中に入れないと「選択してください」が複数出てきて見た目がちょっと変.
673 :
671 :04/09/03 10:59 ID:???
>>672 さんくす。
デバッグコンソール見て判った。配列を一つ掘っているのね。
どれかを選択すれば全てのエラーは消えるみたいだから、
一つ目のエラーを確認して1行だけ出力します。
あぁ、すっきりしますた。
亀レスですが、radioはこんな感じで動かしてます。ご参考まで。 $examples = array(); array_push($examples, HTML_QuickForm::createElement('radio', null, null, 'ラベルA', '値A', array('id' => 'example1')) ); array_push($examples, HTML_QuickForm::createElement('radio', null, null, 'ラベルB', '値B', array('id' => 'example2')) ); $form->addGroup($examples, 'example', 'Radio Example', " \n"); $form->addRule('example', 'Message for the Required Element', 'required', null, 'client' );
675 :
nobodyさん :04/09/03 17:31 ID:lg7eGDsn
Spreadsheet_Excel_Readerで日本語を表示成功した方いますか
676 :
nobodyさん :04/09/03 17:55 ID:CNeebmaf
Mojaviを学ぼうと思って、まずはphp観測所さんのMojaviサンプルで遊んでます。 とりあえずレンダラとしてSmartyの代わりにFlexyを使うようにしたり PgSQLSessionHandlerを改造してMDBSessionHandlerを作ってみたり。 肝心のアプリはまだまだできてませんが、面白いですね。 ムックを首を長くして待ってます。 あとAuth_Container_MDBやCache_Container_mdb, MDB_QueryTool_Queryとかで MDB::connect($dsn)をMDB::singletonに書き換えるとちょっとだけ幸せになれる気がしますた。
678 :
nobodyさん :04/09/06 08:31 ID:h3KSdOjP
>676 ようするにお前もわかんないだな
>>677 なんでこのスレでそんなこと言ってんの?
まぁネタないんだし…
漏れは
>>677 のコードには興味あるよ。
681 :
nobodyさん :04/09/14 00:59:51 ID:pZNPN1gg
Net_UserAgent_Mobile、最近更新無いなぁ・・・ショボン 確か、ここに作者さん居なかったかな? お元気ですかー。
>>681 お待たせして申し訳ないです。いたって元気にしております。
近々HTTP-MobileAgent 0.22相当をリリース予定です。
最新のDoCoMoディスプレイマップをご希望の場合は、Perlモジュール
HTTP-MobileAgentに付属のmakexmldocomomapスクリプトを使ってXMLファイル
を定期的にアップデートする方法をお勧めします。
683 :
681 :04/09/14 13:30:11 ID:???
>>682 さん
あ、呼び出しちゃって申し訳ないです。
お疲れ様です。有難く使わせてもらってます。
makexmldocomomapで、xml吐き出したんですけど、
これを元に、DoCoMoDisplayMap.phpを書き直す(足す)んですか?
それともphpで参照できるようになってるんでしょうか?
あと、まだ先なのですが、Vodafone新端末でAgentが、
J-PHONE → Vodafoneとかに変わるのがちょっと気になってます。
684 :
682 :04/09/14 13:39:13 ID:???
>>683 はい、PHPからそのまま(HTTP-MobileAgentと共通で)使えます。
具体的には、環境変数DOCOMO_MAPにXMLファイルのパスを記述するだけです。
PHPスクリプトで書くなら、
$_SERVER['DOCOMO_MAP'] = '/path/to/DoCoMoMap.xml';
Apacheの設定ファイルに書くなら(mod_envモジュール)、
SetEnv DOCOMO_MAP "/path/to/DoCoMoMap.xml"
とします。
685 :
681 :04/09/14 14:57:50 ID:???
>>682 さん
ありがとうございますー。
SetEnvでイケました。
これからも、頑張ってください!
Net_UserAgent_Mobile 0.20.0up いつも使わせてもらってます。 作者さん乙。
687 :
682 :04/09/27 11:43:26 ID:???
>>686 ありがとうございます。遅くなって申し訳ない。
安定しているので年内にはエンドユーザドキュメントを書いてstableリリース
(1.0.0)にしようと考えています。
要望等ありましたら遠慮なくここに書いて下さいね。検討させて頂きます。
というか開発手伝ってもらうのも歓迎ですが。
688 :
681 :04/09/27 20:36:55 ID:???
私もpear upgradeさせてもらいました。 ついにstableリリースご検討ですか。 お疲れさまです。 新端末検証ぐらいなら少しお役に立てるかも・・・
ムック キタ━━━━━(゚∀゚)━━━━━!!!! という事で質問なのですが、XML の読み込みには XML_Parser がありますけど、 書き込みも考えた場合、何かいいパッケージか参考になる実装ありますか。 PHP にある libxml ベースの関数はバージョン依存があるので避けようかなと思い PEAR で探しています。
SmartyでHTML_QuickForm_Controller使う方法載ってました?
>>689 ガチャピンとはどういう関係でしょうか?
教えて下さい。お願いします。
693 :
689 :04/10/01 23:04:44 ID:???
>>692 アドバイスありがとうございます。
先ほど猫を買ってきて、スカパーに加入しました。
694 :
689 :04/10/02 01:50:08 ID:???
PEAR::Config で暫くやってみます。どもでした。
しかし、PEARの本家サイトなんであんなに重いの? PEARで作られているからかw
pear.php.netそんなに重いか? 瞬時に返ってくるけどな。
698 :
:04/10/14 18:13:56 ID:???
PEARって使いたいPackageを自分で導入しなきゃ駄目? 全部一括導入はない?
全部導入というのはそもそも無意味。 Packageによっては特定のextensionを前提にしているものもあるので たとえインストールしても動かない場合もあり得る。 (pear インストーラを使えばその辺もチェックしてくれる) パッケージリストを見て 使いたいPackageだけ pear install で入れるのがPEAR流だな。
>>687 使わせてもらってます。
ezでサブスクライバNOを取得するメソッドもできれば・・・
あとezのgetModel()はあの形でstableになっちゃうんでしょうか・・・
701 :
701 :04/10/17 02:14:15 ID:ldM4ELJf
Authを使っているのですが。
これって、usernameとpasword 以外にチェックをする項目を増やせないんですかね?
やりたいことは、下記のようなことです。
データベースで登録されているユーザーの一覧があって、そこには
username/passwordの他に、そのユーザーが有効かどうかのuservalidというフィールドが。
で、このuservalidフィールドがYesの時のみ認証をOKにするというようにしたいのです。
・・・・それとも、Authが作るDBオブジェクトを直接いじれって感じでしょうか。
ちなみに、私もMacOSX10.3.4/PHP4.3.8で
>>485 さんとおなじ症状がでて困っております。
手動しかないかなと、あきらめかけていますが。
継承するか処理系に含めたらいいじゃん ('A` LiveUser には isActive があるが、Auth とは比較にならないくらい困ったちゃんなのでお勧めはしない。
703 :
nobodyさん :04/10/17 04:34:16 ID:4HQJ2MRV
HTML_QuickForm + Smarty + Mojaviのサンプルなんて無いですかね…? 突っ込み方からしてわからない…。
>>703 まるごとPHPにSmartyまでは載ってる。
QFはどうとでもなる。Mojaviの外に追い出すか、initialize,validate辺りに入れる。
705 :
703 :04/10/17 05:22:41 ID:4HQJ2MRV
>>702 Mojavi+Smartyは何とか理解済みです。
多分・・・。
で、
http://mojavi.try-angle.biz/wiki/ ここにあるサンプルで、smartyをfilterでインスタンス化して使おうとしてます。
initialize,validateあたりに入れる…というのはHTML_QuickForm_Renderer_ArraySmartyを・・・でしょうか。
すべてはじめたばかりなので、さっぱり理解できてない…かも。
706 :
703 :04/10/17 05:27:10 ID:4HQJ2MRV
まったく頓珍漢なことを書いていたようです。 QFのinitializeとかvalidate、ですね。
707 :
703 :04/10/17 06:12:03 ID:4HQJ2MRV
$renderer =& $request->getAttribute('SmartyRenderer'); $renderer->setAttribute('name', 'Smarty'); $qf = new HTML_QuickForm_Renderer_ArraySmarty($renderer); $form->accept($qf); $renderer->engine->assign('form',$qf->toArray()); $renderer->setTemplate('template.tpl'); return $renderer; $formはQFでつくったものです。 $rendererに使われている、SmartyRenderを見てみると、 $this->engineにSmartyが読み込まれてたので引っ張ってみました。 こんな感じで、一応表示までは行きました。 が、本当にこれでいいのかどうか・・・。 先人の知恵を借りたいところです。
ちゃいます。 Action::initializeにQFの初期化や設定、 Action::validateにQF::validate、といったマッピングはどうですかー という話です。 QFの制御についてはまだまだ不満なので色んなやり方探して晒してください。 つー事で。
>>707 自分も大体そんな感じだったかと。
表示成功おめでとうです。
710 :
703 :04/10/17 07:16:21 ID:4HQJ2MRV
>>708 改良の余地がすごくあるってことだけわかります(苦笑)
なるほど・・・
>>701 Auth_Container_DB を継承した独自の storage ドライバを作って、
その fetchData メソッドで uservalid を見るようにすればいい。
または Auth そのものを継承するなら、login メソッドを override だな。
712 :
703 :04/10/18 05:02:22 ID:BqY5Q9Lz
mojaviのvalidateの動きがいまいちわからん…。 708の提案のように、initializeでQF設定して、 function validate (&$controller, &$request, &$user) { $form = & $request->getAttribute('form'); return $form->validate(); } って感じで一応動くようになったのだが… 何か間違ってる気がする。 formからの入力は全部QF任せでいいのかな…?
713 :
nobodyさん :04/10/18 08:42:42 ID:Ujo7la6B
PEARの日本語マニュアルがなくなってね?
716 :
701 :04/10/19 00:19:37 ID:jZfyFMX1
>>703 ,711 thx.
loginをオーバーライドは面倒そうだったので、別処理にしました。
最初、コネクションを複数張りそうな気がしてたのですが、
>>217 を参考にして、リソースを使い回して処理できるようになりました。
で、今はHTML_QuickFormに取り組んでいるのですが、これって
入力(&チェック)→ 確認 → 処理
という場合は楽に利用できるのですが、
入力1 → 入力2 → 入力3 → 確認 → 処理
という多段階のフォームは難しいですね。
「まるごとPHP」買って、HTML_QuickForm_Controllerの記事を読んだのですが、
・セッションを使う
・header("Location〜を使う
というのに若干抵抗があるのですが。
(まるごとPHPのサンプルスクリプトがCookie機能OFFではうまく動作しなかったり)
できれば、<input type=hidden〜ででまわしたいなと思っています。
入力1で入力された項目が入力2にhiddenで引き継がれるように
$form_obj = new HTML_QuickForm(...);
.....
foreach($_POST as $key=>$value){
$form_obj->addElement("hidden" , $key , $value) ;
}
とやったのですが、フォームエレメントに加えられないようです。
addElementメソッドが変数を引数にすると、動作しないようなのですが。
それとも、なにかよいメソッドがあるのでしょうか?
マニュアル見回したところでは見つけられなかったです・・・・。
>>716 レンダラを生成する際にcollectHiddenをtrueにしてないとか
はずしてたらスマソ
でもaddElementで変数を引数にしてるから
動作しないってこたぁないと思う
マニュアル消えた?
>>715 なるほど
前のezのgetModel()のXMLファイルサポート実装に
チャレンジしてみるかなぁ・・・
マニュアルはいつになったら復活するんだろう。 ぐぐってミラーしてるところ見つけたから当面は困らないけど・・・。
_______ __ // ̄~`i ゝ `l | / / ,______ ,_____ ________ | | ____ TM | | ___ // ̄ヽヽ // ̄ヽヽ (( ̄)) | | // ̄_>> \ヽ、 |l | | | | | | | | ``( (. .| | | | ~~ `、二===-' ` ===' ' ` ===' ' // ̄ヽヽ |__ゝ ヽ二='' ヽヽ___// 日本 ウェブ イメージ ニュース New! グループ ディレクトリ |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ._________________ |Pear マニュアル. │・検索オプション └────────────────┘・表示設定 | Google検索 | I'm Feeling Lucky | ・言語ツール  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ○ウェブ全体から検索 ◎日本語のページを検索
日本語マニュアル直らないな…… orz 直すために何か自分で動きたいが何をどうしたら良いのか皆目わからん orz
>>726 もちろん、そこでもいいよ。
725のURLのは新しいということと、一次情報源に近いということがあるけど。
diff取って証明してくれ
>>725 情報サンクス
英語書けないヘタレなので英文 ML には加入してなかたよ orz
英語書けないヘタレに、何ができるのかと・・・ 誤訳を読まされるぐらいなら、オリジナルを見た方がマシ。
>>730 724は別に自分が訳すとは言っていないのでは?
あとどうでも良いが、書けなくてもそれなりに訳せるやつは結構いると思う(かくいう自分も)。
まあしかし、オリジナル見れば良いってのには同意。
つーか日本語マニュアル無くなってることに気付かなかったし。
MDB_QueryToolと格闘中・・・
DB_QueryToolのサンプルを参考に(
ttp://opensource.visionp.biz/index.php?id=78 )
簡単なソースを書いてみたんだけど、
Notice: Undefined property: phptype in /usr/local/lib/php/MDB/QueryTool/Query.php on line 1475
Fatal error: Call to undefined function: tableinfo() in /usr/local/lib/php/MDB/QueryTool/Query.php on line 1509
だそうな。
tableinfo() は $this->db->tableinfo() てな感じで呼び出されていて、$db は MDBのオブジェクト。
確かにMDB.phpには定義されていない・・・。
stable バージョンのはずなのにどうなってるんでしょうかね?
普通に使えている方いらっしゃいますか?
PHP-4.3.9
Log 1.8.6
MDB 1.3.0
MDB_QueryTool 0.11.1
733 :
nobodyさん :04/10/28 15:17:36 ID:QKLA96NV
734 :
732 :04/10/28 16:18:34 ID:???
事故レス・・・私が悪うございました。 テストと同時にサーバの設定変更も頻繁に行っており、PHPも何度もビルドしてました。 その過程で --with-mysql オプションのパス設定がおかしかったらしく、MySQLの Client API version が ビルトインの 3.xx になっていたのが原因でした。 お騒がせしました。
>>732 phptype が未定義でNoticeがでているというのが重要。
DSNをちゃんと指定してない気がする。
ちゃんと接続できていれば $db は MDB オブジェクトじゃなくて、
各 DB に対応したドライバー(MDB_mysql等)のオブジェクトになるので
ちゃんとtableInfoメソッドは存在するはず。
どうした
737 :
732 :04/10/28 16:38:31 ID:???
>>735 はい。おっしゃるとおり、ちゃんと接続できていなかった模様です。
ありがとうございました。
事故かよ! MDB_QueryTool は自動でエスケープ処理かからないのが難だと思う… 何かあっても良さそうだけど。
739 :
732 :04/10/28 23:51:57 ID:???
>>738 MDBで定義されているgetTextValueメソッドを使えっていうことなんですかねぇ?
いろいろ触って見ましたが、いまいち使い方が良くわからないですね。
DB_QueryToolのQuick demoにあるような単純なクエリーには威力を
発揮しますが、ちょっと込み入るとめんどくさい・・・。
構造上テーブル毎にクラスを作って、インスタンスを作成する度に
コネクションする必要があるし、いまいちメリットが見えてこないです。
もう少しドキュメントが整備されるまでほっとこうかなちう気になってました。
741 :
738 :04/10/29 00:33:59 ID:???
多謝。
>>740 DB_DataObject の方は whereAdd 等のメソッドを除いて add/stripslashes が自動でかかるのでコード量が低減されていい感じに使えてます。
自分で拡張したらいいんですかね… デザパタを知らないので効率的な実装方法が思い浮かばず。
742 :
nobodyさん :04/11/03 16:42:39 ID:qNk8kqG8
Mojavi+smarty+QuickFormでシコシコやってます。 登録->確認->完了という風にしたいんですが、 QFの表示はできるのですが、Validateがうまくいってないようで 確認画面すらいけてない状況です。 よくわからないのがMojaviとQFの絡み具合で、 登録画面を->IndexView_inputとしたら 確認画面はQFにやってもらえちゃうのか、 それともIndexView_successなどを用意するのかどっちにすれば いいのでしょうか? 初歩的なことですみませんが、ご教授下さいませ。
743 :
nobodyさん :04/11/03 20:28:08 ID:UAoI4xx+
自前mvc QuickForm+Flexyつかってまる。 form action が index.php?act=regi とかだと動いてくれませんか? regi.php とかでリクエストを受付けるようしないとダメっぽいです。
QuickFormを使用しています。 post後に凍結状態にしてユーザにチェックを促す。その後submitでDB書き込み の様にしたいのですが。 validate() 後、freeze()でいきなりDB書き込みをしてしまいます。
QuickFormController
>>742 ご自由に。
俺は VIEW_INPUT に任せてる。
initialize でフォームの初期化、getRequestMethod に REQ_POST セット、
execute で遷移判定行って確認画面なら $form->freez() しておくと勝手に確認画面になる。
>>743 > form action が index.php?act=regi とかだと動いてくれませんか?
> regi.php とかでリクエストを受付けるようしないとダメっぽいです。
?
>>744 > validate() 後、freeze()でいきなりDB書き込みをしてしまいます。
プログラムは願った通りに動くのではなく、書かれた通りに動作します。
自分の書いたコード見直せと。
どこかで $form->process でもしてるんじゃないのかと予想。
>>745 ('A`
>>746 さんどうもです。
form action が index.php?act=regi で動いてくれません。
746さんは動いてますか?
ちなみに、
$form =& new HTML_Quick_Form("contact", "post")でポストソメッドで
リクエストしてます。
>>747 form action って何ですか。
749 :
746 :04/11/04 04:56:57 ID:???
んー、こういう事ですかね。
例えば
edit.php?page=FrontPage
edit.php?page=Menu
等、GET メソッドにより処理の流れが変わるプログラムがあり、
その中で $form = new HTML_QuickForm('formName', 'POST') として QF を扱う場合に問題が起こるか、という事でしょうか。
過去にそういうプログラム書いた事がありますし、特に何で悩んだ記憶もありません。
>>742 以降の質問に共通して自分で書いた処理の流れが追えてなかったり、原因の追及といったデバッグの工夫が足りない気が…
750 :
nobodyさん :04/11/04 10:01:13 ID:KS5MBsCw
>>749 さんどうもです。
できるんですね。
>原因の追及といったデバッグの工夫が足りない気が…
反省・・・・
いや… 取り敢えず $_GET, $_POST, $form->exportValues 辺りを Var_Dump にかければ問題の区分出来ると思うんですけど。 > form action が index.php?act=regi で動いてくれません。 ひょっとして form 要素の action 属性ですか。 自分はプログラム自体は GET/POST に依存しないよう記述し、必要なパラメータは POST に突っ込んで送っていたので何とも。 でも問題が起こるとも思えませんけど。 ひょっとして処理の流れが分かれた後に QF の設定行ってませんか。 $form->addElement(A) のようにセットされた要素でないと受けれなかった気が。 上記の状態でフォームオブジェクト B が送信されても QF からは無視される、という事です。
752 :
nobodyさん :04/11/04 20:14:21 ID:KrYBwtYH
インスタンス作成時に $form = new HTML_QuickForm('form', 'POST', "index.php?act=regi"); で書き出せました。
753 :
742 :04/11/05 03:29:10 ID:???
みなさんの書き込みをみながらなんとかできました。 処理の流れが分かれた後に QF の設定をしてたのが原因でした。 ありがとうございます。
あ,日本語マニュアルが復活してる. いつから復活かわからないけど,尽力された方,ありがとうございました.
755 :
nobodyさん :04/11/26 11:35:54 ID:ZcWiZpx2
天気がいいのでちょっとドラクエ買ってきます
ラスボスはシドー
HTML_QuickForm_Controllerを使って、入力→確認→保存 って感じの一般的なフォームを作っています。 フォームを記述したスクリプトは、index.phpから、?action=form というパラメータを使って呼びだしたいのですが、各ページを作成する HTML_QuickForm_Page(HTML_QuickFormから派生)のコンストラクタが、 function HTML_QuickForm_Page($formName, $method = 'post', $action, $target = '_self' ...) {$this->HTML_QuickForm($formName, $method, '', $target, ...);} ($action抜かしてる) となっていて、>752さんの方法で、action属性のURLが指定できません。 ググってみたところ、上記のコンストラクタを書き換え、$actionを足してやればできるとの報告があり、 実際私の環境でもうまく動いたのですが、正直PEARの中身を書き換えるというのはかなり抵抗がありますし、 $actionをわざわざ除けて書いてるあたりに何らかの意志を感じてしまうのですが、 なにか、他の良い方法はないでしょうか。
759 :
758 :04/11/26 18:12:23 ID:???
間違えた function HTML_QuickForm_Page($formName, $method = 'post', $target = '_self' ...) {$this->HTML_QuickForm($formName, $method, '', $target, ...);} ($action抜かしてる) でした。
DB_DataObjectの話なんだけど、 1つのテーブルに主キー(シーケンスID)とユニークキーがあった場合、 主キーが自動的に振られなくてエラーが出るんだけど、 なんか良い方法ないですか? user_id ... 主キー login_name ... ユニークキー real_name これでlogin_nameとreal_nameに値を入力してinsert()しても user_idが空になります。 主キーをlogin_nameにしてuser_idを削除すればいいってのはナシで。
>>760 on demand で使わずに
きちんと DB/DataObject/createTables.php で ini ファイル作って主キーを正しく設定するか,
あるいは DB/DataObject/Generator.php を inherit して
正しく主キーを認識する Generator を作る
って感じかなぁ……
夏にやったイベントで、XML-RPCを使った対戦ゲームを各言語で作って、
結果的にPEAR::XML_RPCの問題点があぶりだされました。
ttp://ll.jus.or.jp/llw2004/program.html のn-Queensゲーム
このサーバ部分がPEAR::XML_RPCを使って書かれてます。
問題になったのは、受け渡されるXMLの各タグの間に改行も空白もないと
PEAR::XML_RPCは解析に失敗することです。
<methodCall><methodName>method</methodName><params></params></methodCall>
のように改行なしで続けて書くとダメ。
pear-devにえらく場当たりなパッチが流れたのも見ましたが、
たぶんまだ直ってないと思います。
>>763 それは、中で使ってるSAXに依存する部分でもあるしなぁ。
SAXで一度パースしたもんを再度自分でパースするのも馬鹿らしい
つかSAXを利用してる他の言語がどうやって回避してるのか知りたいぐらい。
それか別のパーザ使ってるのかね。
766 :
nobodyさん :04/12/19 07:02:33 ID:QLY6UAMz
>>746 入力、確認が1アクション、登録、完了画面だとしてActionだけ書くと
InputAction.class.php
RegistAction.class.php
ResultAction.class.php
って感じですか?
あとQFの$formは
$request->setAttribute("form", $form);
でいいの?
XML-RPC を使うより SOAP を使った方が安全?
768 :
nobodyさん :04/12/21 17:37:38 ID:G7a/Aasc
いま、pearコマンド使えない? upgrade/installしようとすると、 no signature found for package.info(string,string,bool) とでる。
配布用PHPにてPEARを利用しようとしています。 その際配布PHPにPEARのパッケージも一緒につけて配布する予定です。 こういった場合、各ファイルのパスをすべて いちいち手動で設定しないとだめですか? それともほかにうまいやり方があるんでしょうか?
>>769 ini_set() で include_path を設定する,かな?
一般的なTipsだべ。 今まで読み込んできたコードがあれば幾つかの例が引けるし学習積んできたのなら引き出しがあるはず。 みんなどうしてる?なら分かるが何も出せないのは不味い。人のこと言えないが、仕事で使ってるのならもう少し… 俺なら PEAR へのパスを設定に入れる。例えば define('PEAR_DIR', BASE_DIR .'lib/pear'); として、配布パッケージの lib/pear 以下に必要なパッケージを全部詰めておく。 パッケージのコールには require_once(PEAR_DIR .'HTML/QuickForm.php'); とする。 そのままでさくっと動くし、利用者が自分で用意したパッケージを使いたいならPEAR_DIR書き換えれば済む。 PEAR との依存関係見れるインストーラ付けるってのもスマートでいいかもしれない。 include_path はまるごと PHP のえるふたん記事読んで以来頼らないようにしてる。
772 :
771 :04/12/27 01:18:15 ID:???
ごめん、酔った勢いで要らぬ事書いた。一段落目は無視してくれ。詫びておく。
>> include_path はまるごと PHP のえるふたん記事読んで以来頼らないようにしてる。 それって、123ページの?要は、同じファイル名があると正確には保証できないからって。 >>俺なら PEAR へのパスを設定に入れる。例えば の方法って、lib/pear以下に詰めたPEARパッケージのファイルのinclude/requireしてる部分を すべて書き換えるってこと?かなり面倒じゃないか?自分はQuickForm_Controllerでそれ諦めた。 まぁ、ケースバイケースというのが答えなんだけど。
774 :
769 :04/12/29 03:14:43 ID:???
include_pathか手動か どちらかしか無いようですね・・。 がんばります。 ちなみに学生なので、趣味のプログラミングです。
>>773 まだその記事読んでないから外してるかもだけど,要は include_path が自分の支配下のディレクトリ以外を指さなければ良いわけでしょ?
通常の /usr/local/lib/php とか . (カレント)とかが適切でない順序で入ってたら問題が発生する危険性があるけど,DocumentRoot ごとに個別に PEAR ライブラリ全てのコピーを持つようにすれば,無駄は増えるけど安全だと思う.
システムの PEAR パッケージ更新したら bc break してて昔のサイトが動かん,とかも防げるし一石二鳥w
>>773 PEAR 以下のファイルを書き換えるのは余程を除いて避けたい所。
アプリケーションの中だけで ini_set して include_path をコントロールするという方法もある。
その上で PEAR のライブラリですよ〜と prefix を付けて明示的に require するって事では。
例えば PEAR::Config (pear/Config.php) のように他と名前が被りやすいケースもあるので prefix 付けるのはまぁ悪くないと思う。
define('LIB_DIR', '/path2mylibsdir');
define('PEAR_DIR', '/path2peardir');
とあったら ini_set('include_path', PEAR_DIR . $separator. LIB_DIR);
で、ライブラリ持ってくる時は
require_once(PEAR_DIR .'Config.php');
require_once(LIB_DIR .'Config.php'); // 自分で作成するクラス/ファイル名はユニークな名称を付けた方がいいと思うので悪例だが
みたいな感じか?
Mojavi+QF使ってる方に質問です。 お互いValidationで機能がかぶると思うんですが、 どんな感じでやってますか? QFはフォームのバリデーションは便利だけど、 独自に渡されてきたパラメータとかはできませんよね。 バリデーションを統一したかったので 結局QFを諦めて、mojaviのバリデーションを 扱うクラスを作成したわけですが、みなさんどうしてますか?
>>777 困ることってある?
フォームオブジェクトはQFに処理させ、それ以外はMojaviのバリデータ使ってる。
まるごとに出てくるMappingRequestFilterも選択肢に入れてるけど未だに必要に思ったこと無い。いや、形としてはアレが美しいんだけど。
まぁそんなこんなで俺は困ってない。
>>779 なるほど。
個人的には Mojavi のバリデータが面倒なのと、フォームオブジェクトとルールは一カ所に記述したい事もあって registerValidate は補完的に使う事にしてる。
あとフォームオブジェクトとルールのセットを別アクションで使う事もあるので次第にそうなっちゃった。
その下に validate() 付けて return $qf->validate() とやっておけばコード見て 「QF にもルール記述があるな」 って分かるし。
Mojavi3 はバリデータの仕組みが変わってるらしく、聞いた話では ini ファイルか何かで外部定義出来るらしいから YAML/XML/INI 使ってデータソースを QF と統合できるかもとか妄想してみる。
781 :
780 :04/12/31 17:48:32 ID:???
酒入りまくりで前後不覚。文章が狂ってたらごめん。
pear でSQLite インストールしようとするとどっかのヘッダファイル でエラーが出るって既出ですか? unsignedがunsagnedになってるってやつ
QuickFormでsetConstantsやsetDefaultsでsubmit値が上書きできなくなってますねぇ。 いつからだろう・・・。
785 :
784 :05/01/08 12:11:10 ID:???
自己レスです。 element.phpの441行目を以下のようにして回避しました。 if (null === $value || $value == "" ) { QuickFormのバージョンは3.2.4.pl1です。
QuickFormのFreezeってどういったときに使うんでしょうか。
>>786 確認画面用とか。
で、俺もちょっと気になっている点が。
入力画面→確認画面→処理
↑___|
という画面遷移の場合、どの時点においてもvalidate()はTRUEを
返す場合があるので、どの画面にするかはsubmitボタン(もしくはそれに準ずるボタン)の
valueでvalidate()後振り分けるって形でいいのでしょうか? 例えば、
if ($form->validate()) {
switch($submit){
case '確認':$form->freeze();確認ボタンを消して処理と戻るボタンを表示する処理;break;
case '処理':入力内容を処理;header('Location: ...');break;
}
$form->display();
見たいな感じ?
なんとなく、画面遷移の処理が煩雑、特にボタンを入れ替えるあたりが気になるのだけど、
こんなもんだろうか? まぁ、どのボタンを表示するかは適当な変数を割り当てて、
テンプレート(Smarty)側で判断させてますが...
788 :
nobodyさん :05/01/16 13:28:04 ID:EVWCqEDE
>>787 さん丁寧にありがとうございます。
validate後に Freezeで処理がとまってしまい、その後どうするんだ?と
悩んでました。
789 :
787 :05/01/16 14:39:53 ID:???
>>788 あぁ、いゃ、あなたへの返事は1行目だけだったんだがw
以下の処理は、こんなもんでいいのかという俺の疑問。
まぁ、間違いでは無いだろうから参考になったろうけど。
っと、間違いが一点あった。header()の後はexit;だな。
mojaviとTemplate_Flexyを使っている方いますか? smartyならモジュールが用意されているのみたいなのですが Flexyはないようです。 smartyに乗り換えたほうがいいでしょうか
>>790 自分でFlexy用のレンダラー書けばいいと思うよ。
SmartyRenderer.class.phpを見ながらやれば割とすぐ書けるんじゃないかと思われ。
それが嫌なら乗り換えれ。
792 :
784 :05/01/17 17:41:39 ID:???
追加 QuickForm.phpの451行目に追加 $this->_submittedValues = array_merge($this->_submittedValues, $constantValues);
793 :
784 :05/01/17 17:43:05 ID:???
上の訂正 _submittedValues -> _submitValues
普通のmail 関数と pearの mail 関数どう違うんでしょうか。 普通のmail 関数で十分な気がする。
>>794 驚かないで聞いてくれ。
pearは実はPHPで書かれている。
な、なんだってー!!!(AAry
pear mailいみねーじゃん!
PEAR の Mail は,バックエンドを「フツーの mail() 」とか「自分で SMTP 喋る」とか いろいろ選択できる(自作もできると思う)から, まぁ無意味ってわけじゃないが,普通には使わないな……
UNIX系の場合、mail()はsendmailコマンドに丸投げで、 WindowsはSMTPを一応喋っている形になっている。 で、UNIX系でも直接ISPやレンタルのSMTP鯖へ投げたい場合は Pear Mailを使うのが楽かもね。 ローカルのMTA設定を弄れば同じことも出来るけど、 出来ないorやりたくない人も居るだろうし。
俺はPHPMailerクラス使ってる。 別にPEARのmailクラスに不満がある訳でもないが。
801 :
さちこ :05/01/26 15:00:33 ID:???
HTML_QuickFormでのselectedの利用方法が わかりません。 ご教授お願いいたします。 <私のソース> ・ ・ ・ $status_list = array(1=>"option1", 2>"option2", 3=>"option3"); $attrs = ""; $form->addElement('select', 'status', 'Select status:', $status_list, $attrs); ・ ・ ・
setValue
804 :
802 :05/01/26 17:00:23 ID:???
>>802 合ってるような気もするが。
$status =& $form->addElement('select', 'status', 'Select status:', $status_list, $attrs);
$status->setSelected(2);
806 :
さちこ :05/01/26 17:30:31 ID:???
>804、805 ありがとうございます。おかげで理解することができました!!!
一般向け情報源が初心者とノイズで埋まるくらいでないとマトモな普及なんてありえない ということにして自分を納得させようぜ orz
■(M)DB_QueryToolで、どんなSQLを出力しているか調べる方法はありますでしょうか。 Firebirdを利用していて日付型のINSERTがしたいのですが SQLでは INSERT INTO table (ID, "DATE") VALUES (1, '2005/02/02'); (項目名DATEは予約語なので"でくくる必要があります) でいけるのですがphpで $d = array("ID"=>"1", '"DATE"'=>"'2005/02/02'"); $QueryTool->add($d); としても登録されない状態で困っています。print_r($d)で $d["DATE"]に'2005/02/02'が入っているのは確認したのですが… ■また、(M)DB_QueryToolのエラーはどのように取得すればいいのでしょうか。 どなたかアドバイスいただけないでしょうか。 よろしくお願いいたします。
>>810 ソース見た感じだと、
$QueryTools->setOption('logFile','sql_log.txt'); てな感じにセットしておけば、
sql_log.txtファイルに実行したSQLが保持されるみたい。要Logパッケージ。
エラーした場合も(failed)付きで書き出される模様。
$QueryTools->setOption('verbose',true); しておけば更に詳細に出るっぽい。
812 :
810 :05/02/03 10:35:38 ID:???
>>811 ありがとうございました。試したところばっちりでした。
ただ、Firebird固有なのかもしれませんが、
$d = array("ID"=>"1", "DATE"=>"2005/02/02"); は
INSET INTO table (ID, DATE) VALUES ('1', '2005/02/02'); となり
項目名DATEが予約語のため不可。
$d = array("ID"=>"1", '"DATE"'=>"2005/02/02"); は
INSET INTO table (ID) VALUES ('1'); となり
DATEが無視されてしまう("でくくっても'でくくっても\"でくくっても)ようで
困っています。情報ないでしょうか。
■エラーの取得方法をどなたかご存知ないでしょうか。
よろしくお願いいたします。
>>811 おお、ほんまや。
logfileなんていうオプションがあるの知らんかった。
これは便利ですなぁ。
>>811 ,813
ん?昨年秋に使った頃にはオプションだけあって未実装だったけど。実装されたのかな。
0.10.1 -> 0.11.1 の ChangeLog 見てみたけどロギングについては書いてないので尋ねてみるテスト。
>>812 Java じゃないんだし。返値取って var_dump すれ。
もしくは PHP4 ならまるごと PHP のエラー制御見れ。
815 :
810 :05/02/04 15:24:22 ID:???
>>814 実装されてるみたい。ただ呼び出すファイルと同じ場所に書き出されるので
パーミッション的に嫌な感じ。デバッグ用と割り切ればいいんでしょうけど。
あと、まるごとPHPみて勉強します。ありがとうございました。
>>815 うぁ 乱暴に投げたのに丁寧に返されてしまった… ありがとうございます。
API ドキュメント見るとメソッドの戻り値が載っているのでそれを参考にエラーハンドリング、
PEAR によるエラーハンドリングの詳細はまるごとに載ってるって感じで。
デバッグで var_dump 取る場合は Xdebug か PEAR::Var_dump 突っ込んでおくと幸せかも。
DB_QueryToolのドキュメントサイトが死んでるね。
だね。まぁ大したことは載ってなかった… かな? 同梱のサンプルコードしか記憶に残ってない。
peardocの日本語chm版ってどうやって作るの?PHPDoc使うの? php_manual_jaなら解説サイトがあるんだがpeardocの方の資料少なすぎ・・・
PDO 0.2が出てるけど、使った人いたら感想を聞かせてください。 当方MacOS Xなのですがコンパイルは通るものの pdo_hoge.soを読み込むと dyld: php5 Undefined symbols: _php_pdo_register_driver とエラーが出てPHPが起動しませぬ。(pdo.soはちゃんとロードできてる)
821 :
nobodyさん :05/03/18 19:42:14 ID:OjH/9tRg
HTML_QuickFormでフォームを生成し、エラーがでたら テキストエリアの背景色を赤系の色に替えて表示したいんですがなんかいい方法ないですかねぇ??
822 :
nobodyさん :05/03/18 22:19:05 ID:iQcV2TeE
エラーが出たら、そのtextareaのエレメントオブジェクトをもってきて 属性を適当に書き換えればいいんじゃないの。 いい方法っていうかそのまんまだが、、なにかできない理由でもあるのか?
823 :
nobodyさん :05/03/19 07:06:32 ID:kwTpFIt8
PEAR::DBつかってMySQLにつなげているんですが fetchrow() し続けた後に、カーソルを先頭に戻すにはどうすればいいんですか? PHPは4.2.x系です
>>823 fetchRow($res,0);
じゃぁダメなんかな?
>>821 Renderer に何を使ってるかによる
エラーの時は HTML の class 指定を変更するように書けばいいんじゃないかな
smartyなら、<sapn class="error">error message</span>みたいな プラグインつくるとか。 {$form.name.error|class_error}みたいな感じで。
Smarty使ってます
828 :
nobodyさん :2005/03/24(木) 19:22:19 ID:E7t61Xr3
SpreadSheet_Excel_Writerではき出したものに、 グラフや計算式をいれたいのですが、 SpreadSheet_Excel_Writerから、 VBA書くことって出来ないですかね?
829 :
nobodyさん :2005/03/31(木) 14:49:05 ID:z8YDul0W
HTML_QuickForm使ってるんだけど、radioボタンで困っています。 <input name="hoge" type="radio" value="uki"> <input name="hoge" type="radio" value="foo"> <input name="hoge" type="radio" value="bar"> っていうのを作って、Smartyにレンダリングさせてるんだけど、 valueに日本語を入れたいと思うと、Smarty側で {$form.hoge.日本語.html} って値が割り振られてしまって、Smarty Errorになるんです。 createElement('radio' する時点でvalueの指定するところと、nameの指定しているところが同じになってるのが 原因なんですが、これ回避できないんですかね? なんで、いまは最終的に必要な時は変換を掛けております。
同じじゃない、、 createElement( 'radio', $name, null, $label, $value, $attr );
831 :
829 :皇紀2665/04/01(金) 10:35:03 ID:JGI8hVrJ
>>830 あー、すみません。Smartyにレンダリングされる時のが同じと言う意味です。
$var[] =& createElement( "radio" , "name_dummy" , NULL , "label" , "value_dummy" , array('class'=>"dummy_class") ;
$form->addGroup($var , "$var" ) ;
とすると、このエレメントをSmartyでは
{$form.var.name_dummy.value_dummy.name} を var[name_dummy]
{$form.var.name_dummy.value_dummy.value} を value_dummy
と割り振ってしまいます。
デバッキングコンソールでは
��name_dummy => Array (1)
����バリュー => Array (8)
������name => var[name_dummy]
������value => バリュー
������type => radio
������frozen =>
������required =>
������error => empty
������label => empty
������html => <input class="" name="var[name_dummy]...
となっています。
この状態でvalue_dummyに日本語を入れると、{$form.var.name_dummy.value_dummy.value}の変数が上手く展開できないようでSmarty Errorになってしまいます。
Smarty の Renderer を継承した別のクラスを作って対応するのが もっとも手っ取り早い workaround ではないかしら. 別のレイヤの回答をすると,value に日本語を入れるのはお勧めしない. UA がどんなエンコーディングで入れてくるか判ったものではないから.
833 :
829 :2005/04/02(土) 12:11:32 ID:???
>>832 HTML_QuickForm_Renderer_ArraySmarty::_elementToArrayは
radioの時だけ、特別な処理してますねー。
これ、pearにリクエストした方がいいような気もします。
stripのバグって直す気ないのかしらん?
今月末発売のWEB+DB pressはPEAR::DB特集だそうだ。
MDB2とかPDOな昨今で敢えてPEAR::DBか 期待すべきなのか今更なのか……誰か突撃してくれw
>>836 そう。
セキュリティホール埋めてくれるのはありがたいけど、このバグを
直してもらわんとアップデートできんちゅうねん!!
PEAR::DBってSQLiteは使えないって本当?
どこで聞いたの?
>>841 まるごとPHP!というムックに書いてあったんだけどガセか!
pearのデータベースクラスは色々あるけど、最近はどれが評判いいですか? 現在はpear::DBでMySQLに接続しています。 データベースのパフォーマンスチューニングが終わったので、 こんどはPHP側をいじろうと思っています。 優先順位は、1.速度>2.ドキュメントの充実(英語で可) >3.他のデータベースとの互換性です。
PEAR::DB_DataObject のところにあるな。 これはDB_DataObjectでSQLiteは使えないってことじゃないの。
当時の事情じゃねぇの?PHP5/SQLite がまだ新しいものの部類だったし。 DBDO が SQLite 無視してそのまま突っ走るとは思えない。 今は事情も変わってますよ、という話は大いにあり得るが。 著者の鶴岡たんはライター経験こそ浅いが本人は優秀らしいので間違った事は書いてないだろう。当時動かなかった、ただそれだけな気がする。
SQLite を PHP4 で使用してる人ってどれくらいいるのかな?
DBDO はとても便利に使っているけど,PEAR::DBベースという点を考えても,
強い根拠はないが PHP4 用のものという印象がある.
PHP5 用に pdo ベースで PDO_DataObject みたいのを誰か作ってくれないかなー
(と他力本願丸出しな発言を)
>>844 3.の互換性ってのは各種RDBMSをどれほどシームレスに扱えるかということ?
まぁ順当に MDB で決まりじゃね?
おれは DBDO に頼りきりコーディングが多いので DB 使ってるけど.
>SQLite を PHP4 で使用してる人ってどれくらいいるのかな? )ノシ ただPHP4+SQLiteが流行るかっていうと、 PHP4+MySQL程度にはならないと否定的。 SQLiteをパッケージに含めて配布して、動的にdlして使う っていうのは作る側からすると、インストール環境を考えずに DBを使える点で楽になるんだけどね。
849 :
844 :2005/04/21(木) 22:55:10 ID:???
>>847 >3.の互換性ってのは各種RDBMSをどれほどシームレスに扱えるかということ?
です。サーバのスペックが貧弱なので、MySQLに特化させてでも
スピードを稼ぎたいので。
>まぁ順当に MDB で決まりじゃね?
ありがとうございます。参考にさせていただきます。
今からMDBを使うくらいならMDB2にするかな。
>>847 PHP5用だったらcreole + propelというのがおもしろいよ。
exception/interface/iteratorなどをきちんと使って、
PHP5 nativeで書かれている。
>>850 あー MDB と書いてるが MDB2 のつもりだった.スマソ
propel は面白そうだね.サイトをじっくり読んでみる.情報ありがとう.
後は,自宅の実験サーバ以外 PHP5 なんて全くお目にかかんない現状が何とかされれば……w
みんな 5.1.2 くらいまで待ちかなぁ……
PostgreSQL 8.0.1に、PHP5のPEAR DB_DataObjectで、 createTable.php流したときに、 テーブルの主キーがとれないんだけど、既出?
具体的には、生成された継承クラスで、primary_keyが設定されていなくて、 同時に生成されるiniファイル内の KEY も設定されない。 何回もやりなおしてみたけど。
HTML_QuickFormで input type=textのreadonlyってできますか?
855 :
nobodyさん :2005/04/26(火) 20:14:44 ID:fhmw59us
attributeにdisabledを設定するだけじゃない?
>>851 Propelのサイトにある情報は古いから注意。
Ver1.1向けに今記事かいているんでそのうちどっかに載るかもー。
>>854 RTFM
属性は全て設定可能。style や class の挿入なんかでよく使ってる。
858 :
857 :2005/04/28(木) 13:18:00 ID:???
RTFM って addElement の項ね。
859 :
854 :2005/05/01(日) 16:54:55 ID:???
>>855 >>857 >>858 サンクス
Mojavi + HTML_QuickForm + Smarty
という組み合わせなんですけど、
動的にFormのinput type=textを作成するのは、
どのような方法があるのでしょうか?
860 :
nobodyさん :2005/05/05(木) 21:45:53 ID:KICI+UTU
Authって require_once('Auth/Auth.php'); して普通に使えてますか?僕の環境ではうまくクラスを認識しなかったので ファイルの内容を移し替えたらうまく認識しました。 上でrequireされてる PEAR/Auth/Auth.php自体は include_once('Auth.php'); してるだけだったのでPEAR/Auth.phpの内容を丸ごと PEAR/Auth/Auth.phpに移し替えたら使えるようになりました。 あれはどういうことだったんだろう?ちょっと疑問なので 知ってる人いたら教えてください。 windows環境で、PEARフォルダにはinclude_pathも通ってます。
require_once('Auth.php'); こうすればよくない?
862 :
nobodyさん :2005/05/05(木) 22:54:34 ID:k8Nl2PhY
863 :
860 :2005/05/05(木) 23:24:36 ID:KICI+UTU
>861 PEAR/Auth/Auth/ 以下にコンテナ、コントローラーなどがあるので、 パスの関係上、 PEAR/Auth/Auth.phpに移し替えた移し替えた次第です。
それは何が原因か知らないけどインストールに失敗している可能性が大。 ふつうはphp_dir/Auth以下に展開されるよ。 % ls /usr/local/share/pear/Auth Auth.php Container Container.php
865 :
860 :2005/05/05(木) 23:42:19 ID:KICI+UTU
あ、申し訳ありません。上の書き間違えてました。 Auth.php Container Container.php は PEAR/Auth/以下ですね。 でもいずれにしても require_once('Auth.php'); では読めませんでした。
Auth/ が存在するディレクトリを include_path に加えとかないといけないんじゃ。
include_dirの設定と、pearへのフルパスを書いてみそ
QuickFormにて、addEmptyOption' => true に設定した date項目の初期値を 空白にするには、どうすればよいのでしょうか? 現状、以下のような指定をしていますが、初期値が空白になりません $form->setDefaults(array( 'fmData' => array( 'm' => ' ', 'd' => ' ', 'Y' => ' ' ) )); // 日付 $DayNow=getdate(); $DateOptions= array( 'language' => 'en', 'format' => 'Y年 m月 d日', 'minYear' => $DayNow[year] - 1, 'maxYear' => $DayNow[year] + 2, 'addEmptyOption'=>true ); $form->addElement('date', 'fmData', '開始日', $DateOptions);
869 :
868 :2005/05/10(火) 00:12:19 ID:???
自己レス。解決しました orz $form->setDefaults(array( 'fmData' => array( 'm' => ' ', 'd' => ' ', 'Y' => ' ' ) )); ↓ $form->setDefaults(array( 'fmData' => array( 'm' => '', 'd' => '', 'Y' => '' ) // スペースを詰める ));
DBとMDBの違いって何ですかね? DBはPerlのDBIみたいに洗練されてると思うのですが 新たに別のモジュールを開発する必要があったのでしょうか? それって車輪の再発明・・・
あったから作ったんだろ
872 :
nobodyさん :2005/05/13(金) 15:42:29 ID:OaFXqrM9
HTML_QuickForm と Flexyという組み合わせは使えますか? webで探すとSmartyとの連携ばかりですけど・・・
HTML_QuickFormにFlexy用のレンダラ(HTML_QuickForm_Renderer_ObjectFlexy)入ってるよ。 pear/doc(s)/HTML_QuickForm/docs/renderersにサンプルあるし。
>>871 ねーよタコ助。
PEAR::DBは十分洗練されてるだろ。
洗練されてないやつが欲しかったんだよ
876 :
872 :2005/05/13(金) 16:35:11 ID:???
PDO は PEAR::DB より速いらしいので期待中
DBは速度的に他と比べちゃうとちょっと… コードの洗練具合では圧倒的にMDB2の方が上だね。
879 :
nobodyさん :2005/05/13(金) 19:19:19 ID:SDhwmUt9
PEAR::DB で SQLite を使用してますが、 DSN の "mode" => "0644" というのは書き込みできない という意味でしょうか? 書き込みできるんですが、、、 "mode" => "0666" との違いがわかりません。
>>879 オーナーとグループと他人の違いはわかる?
881 :
879 :2005/05/13(金) 19:53:06 ID:???
>>880 んとわかります。
ファイルの属性? 666にしないとダメですよね?
そうすると "mode" は関係なく動くような気がします。
ファイル属性 644 だと "mode" 関係なしでダメ。
>>881 マニュアルのsqlite_open()のページ
883 :
879 :2005/05/13(金) 20:11:41 ID:???
>>881 解決しました。。。 無視されるんですね。
884 :
nobodyさん :2005/05/13(金) 22:23:33 ID:MPQs+RJ/
HTML_QuickForm触ってみただけど、IEでJavaScriptエラー出るなぁ・・・。 オブジェクトを指定してくださいって出る。
>884 Smarty + QuickForm前提で話し進めちゃうけど。 ルールの指定でclientを選択しながら、 {$form.javascript} を書いていなかったりしません?
887 :
884 :2005/05/14(土) 09:14:50 ID:yiKQRA/S
>>886 書いててもエラー出ます。
インターネットオプションでスクリプトのエラーごとに表示されるように設定していると、
エラーが警告が出ます。そうじゃない場合はエラー表示でません。
(これはたぶんオフにしている人が多いと思う)
freezeさせて、validateが必要なくなった時、form.javascriptはプリントされなくなるのに、
onsubmitの方のvalidate呼び出し関数は残ったままなので、エラーとなるようです。
動作自体に影響はないんだけど、アラートでエラー表示が出るので邪魔になる・・。
>887 あー、なるほど。 自分は時間無くてとりあえずserverでのチェックだけにして逃げちゃったんですよ(苦笑 ちょっと時間見つけてコード追ってみるー。
>>887 あーそれか……
ずっと昔からそうなので,自分はもっのすごくアドホックな対処をしてる.
<script type="text/javascript">if(typeof(validate_フォーム名)=='undefined'){var validate_フォーム名=new Function("return true")}</script>
という HTML を,static エレメントとして追加してやるの.
で,フォーム遷移を管理する自作クラスにそれを組み込んで,
そのままこの問題について忘れてたw
まだ直ってなかったのか……
>887 >889 んー。まだよくわからないけどざっくりと。 ルールを記述しているJavascriptはQuickform.phpの1540行目あたり。 getValidationScript()の初めに if (empty($this->_rules) || $this->_freezeAll || empty($this->_attributes['onsubmit'])) { return ''; } とあるから何も返さなくなる。 しかし、addRule(), addGroupRule()したときに if ('client' == $validation) { $this->updateAttributes(array('onsubmit'=>'return validate_'.$this->_attributes['id'] . '(this);')); } と、onSubmitをつけている=エラーになる。 ここの判定式を$this->_freezeAllがtrueの時に通らないようにすれば大丈夫な気がするです。
891 :
887 :2005/05/16(月) 10:10:54 ID:6UiQU/az
>>889 , 890
ありがとうございます。
結局スクリプト側で、form.JavaScriptが空の時は、
アドホックに
>>889 のコードを入れることで、対応してしまいました。
ところで、HTML_QuickFormで送られた内容の控えをユーザ宛にも
メール送信したいのですが、結果HTMLを表示する要領で、
テキスト形式で結果内容を生成することはできますか?
QuickFormのcheckboxでvalueの値を1以外にする方法をみっけたので書き込んでおく。
(どっかのスレでやり方探してる人いなかったっけ?)
もし既知のことだったら知ってたらスルーして下さい。
$chk =& $form->createElement("checkbox");
$tmp = $chk;
$tmp->setName("chk[1]");
$tmp->setLabel("No. 1");
$tmp->updateAttributes(array("value"=>"NO1"));
$form->addElement($tmp);
$tmp = $chk;
$tmp->setName("chk[2]");
$tmp->setLabel("No. 2");
$tmp->updateAttributes(array("value"=>"NO2"));
$form->addElement($tmp);
名前を[1]、[2]と配列の添字を指定してやれば、GET or POST後にちゃんと
チェック状態になってくれる。
http://www.php.net/manual/ja/faq.html.php#faq.html.arrays ここみたいに添字を指定しないと、HTML_QuickForm_elementの_findValue()が値を返せないみたい。
QuickFormのnewってどれも重い気がするので、フォームが多い画面作るときは
オブジェクトをコピーしたほうがいいね。
HQFって便利なんだけど,全然慣れない・・・ マニュアルか以前に書いたソース見ないと書けない
>>891 つ ob_start();
ってまぁ,Array Renderer 使うのが正統だと思いますが.
895 :
nobodyさん :2005/05/19(木) 21:57:06 ID:ZZw6s72m
PHP4には例外処理が無いのでエラー処理が非常に面倒なので、 PEARの基底クラスを継承してPEAR_Errorを発生させようかと 思ってるのですが使い方間違ってますかね? みなさんそこまでこだわらずにメソッドの戻り値で判断させてます?
PEARのエラー処理メカニズムを使うだけなら、PEARクラスを継承する必要はないよ。 エラーを返したい場所で return PEAR::raiseError('Error message', MY_ERROR_CODE); などとするだけでいい。 呼び出した側でのエラーチェックは、常に if (PEAR::isError($result)) { // エラー処理 } で。
897 :
nobodyさん :2005/05/20(金) 00:01:48 ID:wjKv+x9s
>>896 なるほど、そんな使い方もできたんですね。
ちなみにPAERのエラー処理って、PEARライブラリ製作者用のクラス
であって、PHP4のエラー処理として推奨されているわけではないのかな?
今すごく迷っているんですけど、
PHP4のエラー処理で最も適しているのは以下のどれになりますか?
識者のご意見お聞かせ下さい。
1、メソッドの戻り値で判断する
2、標準のエラー処理用関数郡を使う
3、PEAR基底クラスのエラー処理を使う
>>895 もう 2 年くらいソレでがんがん使ってる。問題ない。っつーか快適。
デバッグ時は backtrace させて (昔は Xdebug とか PEAR::VarDump 無かった)、運用時は小山氏@雑誌連載式にログったりメール飛ばしたり。
>>897 ケースバイケースで組み合わせ。
> 例外処理が無いのでエラー処理が非常に面倒
とか見ると Java の人?と思っちゃう。
PHP の世界に入ってきたのなら、PHP の流儀を意識した方が幸せになれると思う。
ErrorStack いいらしいですね。
最近勉強してないな…
>899 例外処理なんてJava以前から余裕であるわけだが。
例外処理が無いと極端にやり難い、という人には、今まで Java やってましたというパターンが多い、 という話。
PEAR::DBでSQLiteのユーザー定義関数を作る場合、 sqlite_create_functionは使えませんか? 「Warning: sqlite_create_function() expects parameter 1 to be resource 」 というエラーが出るんですけど。 ソースはこんな感じです。 $db = DB::connect($dsn); sqlite_create_function($db, 'NOW', 'time', 0);
var_dump($db); したらnull?
>>903 Nullではないです。
サンプルではsqlite_create_functionを使う場合は
sqlite_open関数を使っているので、PEAR::DBでは
エラーになってしまうのかと思ったのですが。
> Nullではないです。 PEAR なら、エラーオブジェクトという事もある。
>>902 DB::connect() の戻り値はSQLiteのリソースハンドルじゃなくて
DB_sqliteオブジェクトなので、そのままsqlite_xxx関数には渡せないよ。
どうしても使いたいなら
sqlite_create_function($db->connection, 'NOW', 'time', 0);
のようにDB_sqliteから接続ハンドルを取り出さないと。
>>906 おっちゃん〜。できたよー!
ありがとう。助かったよー。
908 :
nobodyさん :2005/05/29(日) 00:33:18 ID:3agdROOk
PearのPHP5対応状況ってどこでわかりますか?
たいていのPEARパッケージはPHP5でも動作します。 というか、動かなかったらおそらくバグなので bugs.php.netに報告よろ
910 :
909 :2005/05/29(日) 01:09:41 ID:???
911 :
nobodyさん :2005/05/29(日) 07:39:53 ID:oziLOzHH
>>909 ありがとうございます。PHP5対応は考慮されているんですね。
それでは逆に、PHP4の互換保持は考慮されているものでしょうか?
912 :
902 :2005/05/29(日) 16:33:06 ID:???
以前、PEAR::DBでSQLiteのユーザー定義関数を作る方法で お世話になった者です。 PEAR::DBを継承させたmyDBクラスを作ってSQLiteで色々な 関数を使えるようにしてみました。 これで他のDBからSQLiteへの移行が比較的楽にできるのではないかと 思うのですがどうでしょうか? ソースは次レスで。
913 :
902 :2005/05/29(日) 16:34:16 ID:???
myDBクラス(myDB.php) <?php require_once("DB.php");// DB require_once("sqlite_func.php");// SQLite用ユーザー定義関数 class myDB extends DB { function connect($dsn) { $db =& parent::connect($dsn); // SQLiteのユーザー定義関数 sqlite_create_function($db->connection, 'NOW', 'time', 0); sqlite_create_function($db->connection, 'DATE_FORMAT', 'date_format', 2); return $db; } } ?> ユーザー定義関数(sqlite_func.php) <?php function date_format($timestamp, $format) { return strftime($format, $timestamp); } ?>
914 :
902 :2005/05/29(日) 16:34:48 ID:???
使い方 <?php require_once("myDB.php");// DB // DBオブジェクトの生成と接続 $db =& myDB::connect(DSN); // エラーチェック if (PEAR::isError($db)) { $this->error($db->getMessage()); } // データ取得 $sql = "SELECT" . " DATE_FORMAT(NOW(), '%Y/%m/%d %H:%M:%S') AS today," . " FROM t_hoge" ; $res = $db->getAll($sql, DB_FETCHMODE_ASSOC); // エラーチェック if (PEAR::isError($res)){ $this->error($res->getMessage()); } // DB切断 $db->disconnect(); ?>
915 :
902 :2005/05/29(日) 16:38:00 ID:???
以上スレ汚し失礼しました。
何がやりたいのかよく分からないが。 抽象化したいなら、抽象化度の高い MDB2、DB/MDB_QueryTool のようなクエリビルダや Propel、DBDO といった ORM 使ってみ。
>916 DBDOって判りづらいだろう。DB_DataObjectのことね。 あと、速度重視するならADODBとPDOも選択肢に追加。
918 :
nobodyさん :2005/05/30(月) 19:32:29 ID:RWhNHsSf
QuickFormでフォームを作成できるのは便利なんだけど、 フォーム中にJavaScriptを埋め込む事って可能? 例えば、select1の選択内容によって、select2の内容を変更するって感じのものを作りたいんだけど、 selectタグの属性に「onChange="hoge()"」って感じに属性を記述することは可能?
>>919 ついでにその方法教えてくれるとうれしい
教えて君でスマソ
>>920 お願いだからマニュアルくらいは読んでくれ
922 :
919 :2005/05/30(月) 21:48:31 ID:???
addElement('hierselect', 'hoge', 'hoge:');
HTML_QuickFormのvalidateだけを使いたいんだが。 なんでvalideteだけを独立して使うことはできんの?
なんでも何も、そういう風に作られてなけりゃ無理だろ
無理だったか? ルールの複数定義を嫌って無理矢理使ったような記憶があるが…
普通に addElement() して addRule() すれば validate() の結果を取れるが……? 単に display() とかを使わなければいいだけでは. addElement() したくない,ってことなら, おとなしく PEAR の Validate を使ってひとつひとつ自分でチェックすべし.
>>892 checkboxの値をupdateAttributesで更新しても、freeze()したときに、
hiddenの値が、1にならないか??
よくよくしらべていると、freeze時にhiddenを生成するときに、
getValueを呼び出してるんだが、
checkboxクラスのgetValueは、getCheckecの戻り値を返すようになってるから、
結局セットされる値が1になってしまう。。。
解決方法ある??
ガイシュツだったらスマソ
単に問題のメソッドをオーバーライドしたクラスを書けばいいだけじゃないか。
なるほど、がんばります。
>>929 PHP4ではメソッドのオーバーライドはできませんよ?
932 :
nobodyさん :2005/06/02(木) 23:12:50 ID:5Bd9W1e0
PHPって標準関数のオーバーライドもできるの?
peclの話題だろ
がいしゅつかも知れんけど、 DB_common::escapeってpregつかってるから、 もしかしてexecuteにEUC-JPな文字列突っ込んでうまくいってるのって たまたまだったのか? orz
>>936 Shift-JISなら問題出るかもしれないけど、EUC-JPやUTF-8なら大丈夫だろ。
基本的に被らないし。
ああ、たしかにそうでした。 自作アンテナなんだけど、たまに止まるからなんでかなーとおもってたんだが、 よく見たら^Mが入ってた。同じURLで改行コード混在してるページが原因。 それとったら動いたよ。 あとpregがあるのはescapeじゃなかったけど、まあいいや。 ありがとう。
....
940 :
nobodyさん :2005/06/24(金) 19:13:08 ID:pYTM6kF2
QUICKFORMの <form action="..." method="...">のname="..."の部分を消すことはできないんでしょうか?
PEAR::Configの使い方が良く分からないんですけど。 誰か実際に使ってる人いたら解説キボンヌ!
なにが分からんの?
>>940 <?php
$qf->removeAttribute('name');
?>
しかし色々とマトモに動かなくなるので実質は消すことは不可能と考えた方が.
なんで消したいのかを提示してみては? 何か別の解決策があるかもしれない.
>>943 XHTML1.0 strictは<form>にnameつけちゃだめっていうルールがあるらしくてそのためにと思ったんですが
>>944 それは,廃止予定だから使用「すべきでない」であって,使用「してはならない」ではないのでは……?
XHTML1.1 では name 属性が廃止されているけど,その場合でも,
適合ユーザエージェントは処理できない属性を無視「しなければならない」ので,問題はおきない.
そこをきちんと処理できない Validator の類ではエラーが出るかもしれないけど.
……と自分は理解しているんだけど,間違ってたら指摘おねがいよー
HTMLのパーサってPEARにあります? あったら教えて下さい。
DB_DataObject が MDB 対応だそうですよもまいら 次は pdo 対応ですかね…… 5 だと DBDO に行っちゃうのかな?
今さらMDBよりMDB2に対応して欲しいと思う今日この頃。 PHP5なら $MDB2->setFetchMode(MDB2_FETCHMODE_OBJECT, "someClass"); して、さらに $result = $MDB2->query($SQL, null, true, "MDB2_Iterator"); foreach($result as $row) { /* あれこれ */ } これ最強。
>>950 なぁ。それのどこがPEAR::DBと違うの?
大して変わらんやん。
952 :
nobodyさん :2005/07/05(火) 23:29:52 ID:BWLWbomG
Spreadsheet_Excel_Writerで format を使用して書式を変更するのは分かったのですが、 // これだと単一のセルになります $WorkSheet->write( 1, 0, "1列目", $Format1 ); シートもしくはブック全体に共通の書式を初期設定する方法がわかりません。 教えてください!
後で見た人が誤解するといかんので補足
>>950 > 今さらMDBよりMDB2に対応して欲しいと思う今日この頃。
DB_DataObject の MDB 対応は MDB2 だわ.
ていうか MDB1 は対応してないのかな.
MDB といえば当たり前のように 2 を指してるかのように書いてある.
pearサイトDB落ちてますYO!
XML_RPCがPHP4.3以降対応になってて pear upgrade-allができない…orz
quickformにて、例えば電話番号を三つのinputフォームを用意し、 三つのフォームのうち一つしか記入されていなかったら JavaScriptでエラーを出したいんだけど、方法はありますか? 三つのフォームにすべて入力されている場合と、 三つのフォームすべてが入力されていない場合は エラーを出さないようにしたいのです。
957 :
956 :2005/07/12(火) 14:06:19 ID:???
解決。 一応載せておきます $areaCode = $form->createElement('text', '', null, array('size' => 4, 'maxlength' => 3)); $phoneNo1 = $form->createElement('text', '', null, array('size' => 4, 'maxlength' => 3)); $phoneNo2 = $form->createElement('text', '', null, array('size' => 5, 'maxlength' => 4)); $form->addGroup(array($areaCode, $phoneNo1, $phoneNo2), 'phoneNo', 'Telephone:', '-'); $form->addGroupRule('phoneNo', 'Please fill all phone fields', 'required', null, 3, 'client'); $form->addGroupRule('phoneNo', 'Values must be numeric', 'numeric', null, 3, 'client');
958 :
956 :2005/07/12(火) 14:28:32 ID:???
あ、ダメだ、すべてのフォームへの入力が必須だ・・・
って、JavaScriptで出したいのか。 それは、自前で書くしかないんじゃないかなぁ?
961 :
956 :2005/07/12(火) 15:24:17 ID:???
>>959 addFormRule()ってJavaScriptでクライアント側にもチェック機能
付けられましたっけ?
962 :
956 :2005/07/12(火) 15:32:52 ID:???
>>960 やっぱりそうですか。
自前で書くのも考えましたが、quickformが吐き出すjavascriptに
書き加えるのは単純には行かないですよねぇ・・・
963 :
nobodyさん :2005/07/14(木) 12:06:23 ID:eHIEjUS2
PEAR::MDB + MySQL でSQLのインジェクション対策ってどうやってますか? DBのときはescapeSimple()関数使ってたんですが・・・。
965 :
nobodyさん :2005/07/18(月) 15:34:03 ID:qAc2zP8J
PHP5+QuickForm3.2.4pl1+Smartyでradioボタンだけ表示されないんだけどどういうこと??
966 :
965 :2005/07/18(月) 15:46:54 ID:???
自己解決しました $radio[] = &HTML_QuickForm::createElement('radio', null, null, 'hoge1', 0); $radio[] = &HTML_QuickForm::createElement('radio', null, null, 'hoge2', 1); $form->addGroup($radio, 'hegohego', 'blah'); $form->addElement('radio','','','','')だけじゃ表示されないのね。。
967 :
nobodyさん :2005/07/20(水) 21:28:44 ID:Qqvr7Dca
PEAR::DBで質問です。 nextId()でシリアル値を生成し、INSERTしているのですが、 INSERTされたシリアル値を取得することはできるのでしょうか。 SQLiteを使っています。 Postgresの場合、oidからselectして取得できるのですが、 せっかくPEARを使っているので、特定DBに依存しないやり方が知りたいです。 よろしくお願いします。
PEAR::DBについて質問させて下さい。 PEAR::DBのquery()または、execute()で実行されたSQL文をログに出力したいと考えています。 現在は、下記のようにquery()またはexecute()を実行する直前でログに出力しています。 $sql = "select * from table"; $logger->debug($sql); // ここでログに出力 $db->query($sql); しかし、このような場合は実行されたSQL文を出力できません。 $sql = "insert into table (col1, col2) values(?, ?)"; $params = array( 'val1', 'val2' ); $sth = $db->prepare($sql); $logger->debug($sql); $db->execute($sth, $params); この場合は、"insert into table (col1, col2) values(?, ?)"がログに出力されますが、 実際に実行されたSQL文(?が実際の値に置換された状態)をログに出力できません。 プレースホルダを使用した場合に、プレースホルダが置換された状態のSQLを取得するには どうすればいいでしょうか。 [環境] PostgresSQL 8.0 PHP 4.3.11 Apache 2.0.52 Windows2000 SP4 よろしくお願いします。
969 :
nobodyさん :2005/07/22(金) 01:20:46 ID:IizYuRm3
>>968 PEAR::DBでは発行されたSQLをログに残す機能はないので、
PostgreSQL側でログに取るほうが楽だと思う。
どうしてもPHP側でやりたければ、DB_pgsql::simpleQuery あたりに
ログを吐くコードを埋め込むのがいいんじゃない?
既存のPEAR::DBのコードを変更したくない場合は、DB_pgsqlを継承したクラスを
つくって、それをDB::connectの返値からうまく生成すればできると思う。
>>968 接続時に、オプションでdebug levelを上げれば、どっかでとれそうな気がする。
気がするだけなんだけど。
$db =& DB::connect($dsn, array( 'debug' => 2));
とか
>>971 > 接続時に、オプションでdebug levelを上げれば、どっかでとれそうな気がする。
それではとれない。
ソース読めば分かるけど、PEAR::DBではdebug levelはあまり使われておらず
2以上を指定したときに、各DBドライバのロード時のエラーが表示される
という目的にしか使えない。つまり役に立たない。
973 :
968 :2005/07/23(土) 00:11:48 ID:???
>>970 できれば、PEAR::DBのコードを修正せずにやりたいので、
DB_pgsqlを継承する方法を試そうとしましたが、
DB::connectの返値からDB_pgsqlを継承したクラスをうまく生成する方法が
思いつきませんでした。
今のところ、PostgreSQL側でログを取るという方法が現実的のようです。
ありがとうございました。
>>968 > プレースホルダが置換された状態のSQLを取得するには
今回は pgsql だけの話でいいのかもしれないけど,
そもそもプレースホルダの機能ってのは,
単純に文字列として ? を何かに置き換えるって話だけじゃない機能なので,
「置換された状態のSQL」なんてものは存在しない RDBMS もある.
つまり,発想自体が誤りなので,その機能を DB に要求するのは無理があると思う.
ところでそろそろ次スレの季節かな?
>>990 あたりが作ればいいのかな.
975 :
nobodyさん :2005/07/27(水) 05:36:52 ID:3RtjRt/f
HTML_QucikFormで、Filterが最後でしか効かないんですけど、 これを入力エラーで修正中や、freezeして確認する時などにも、 随時効かすようにできないですかねぇ。
getSubmitValueを使う方法しか思いつかない
exportValues() した値を最後に setConstants() とか…… ふと思いついただけだがそんな糞コードを書いてはいけないヨ?
Net_UserAgent_Mobile 0.24.0 up
PEAR::Spreadsheet_Excel_Writer使ってみたけどまだまだですな。 縦方向のalignが設定できない(アクセサが無いだけ?)のと、 マージしたセルにフォーマットを適用できないのが致命的。 これならEXCELで作った雛形ファイルをXML形式で保存して、 テキスト置換で編集した方がまし(OfficeXP以降しか読めないけど)。 早くベータ版から正式版にならんかな。
980 :
975 :
2005/07/29(金) 02:58:42 ID:??? 変な小細工するくらいなら、最初からHTML_QuickFormを使わないほうがいいかもしれませんね。 ユーザは、自分がpostした値が、どのようにフィルタされて受け取られるかを 確認できた方がいいんだけどなぁ。 なんだかHTML_QuickForm、便利は便利なんだけど、ぼみょー感を感じます・・。