Pear
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
NGNG0375nobodyさん
04/01/22 20:34ID:???環境:
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 なんかは正常に動作
してます。何かアドバイスいただけると嬉しいです。
0376nobodyさん
04/01/22 20:49ID:???PECL は詳しくないですが、 Description に
APD is a full-featured profiler/debugger that is loaded as a
zend_extension.
~~~~~~~~~~~~~~
と書いてあるので、
zend_extension="/path/to/apd.so"
じゃないでしょうか?
0377nobodyさん
04/01/23 07:53ID:???そうでした。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() の結果は表示されるのですが。
デバッガとか使ったことないんでトンチンカンなこと言ってたらごめんな
さい。
0380nobodyさん
04/01/30 22:54ID:???あとここもおすすめ。
http://www.phpdeveloper.org/
pearのMLで流れたBlogのいいね。
0381nobodyさん
04/02/01 10:18ID:???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 だけ手動でダウンロードして上書きして
みたんですけど結果は同じでした。何がいけないんでしょうか。
0382nobodyさん
04/02/03 12:24ID:jS8jQfMH誰か 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にも接続しにいってます。ソースを追ってみたけどよく分からず。
うちでは普通に動いてるよっていう情報でもいいんで何か教えて下さい。
0384nobodyさん
04/02/03 12:47ID:???MDB 1.2 の MDB/pgsql.php の 333 行目以降で pg_cmdtuples()
(現在の pg_affected_rows()) が使用可能か確認するために template1 に接
続しています。気にする必要はないと思います。
0385nobodyさん
04/02/03 13:03ID:???すいません。過去ログにも同じ内容の書きこみあったみたいですね。
PEAR::MDBを使ってみる
http://angelicwing.net/php/?n=3
ここを参考に修正してみました。ところで、$dsn の指定の件ですが
$dsn = "pgsql://user:password@localhost:5432/database";
$db = MDB::connect($dsn);
これでうまくいってますか?うちの環境だと template1 にしか接続してくれない
んですが。。
0387nobodyさん
04/02/04 17:06ID:???接続できたりできなかったり。とりあえず DB つかっとくかな。
0388nobodyさん
04/02/10 00:09ID:GCC9mdph携帯用のコンテンツ作るのに重宝してます。
0389nobodyさん
04/02/10 00:28ID:???誰も使って無さそうだったので(笑、そういって頂けるとありがたいです。
最近は PC 用の Web アプリケーション開発に掛かりきりで、更新が滞りがち
で申し訳ない。
API の整備やら機能追加やら PEAR ドキュメントやら、やりたいことはたくさ
んあるのですが。
0390nobodyさん
04/02/10 03:55ID:???提供してもらえると非常に助かります。新しい携帯端末は日々発売されていくわけで、
更新大変だと思いますががんばって下さい。
でもこれって日本でしかあまり有用じゃないんでしょうか?コードを追いかけた訳じゃ
ないんであまり把握してないんですが。
#imode-vodafone-auの絵文字変換クラスなんてのもpearに登録できるのかな▽
0391nobodyさん
04/02/10 04:00ID:???提供してもらえると非常に助かります。新しい携帯端末は日々発売されていくわけで、
更新大変だと思いますががんばって下さい。
でもこれって日本でしかあまり有用じゃないんでしょうか?コードを追いかけた訳じゃ
ないんであまり把握してないんですが。
#imode-vodafone-auの絵文字変換クラスなんてのもpearに登録できるのかな?
0392nobodyさん
04/02/10 09:41ID:???0393nobodyさん
04/02/10 09:42ID:???例えば imode の絵文字を vofafone, PC なら jpg で表示する機能。
0394nobodyさん
04/02/10 11:54ID:???どうもです。もちろん海外でも有用だと思いますよ。
公開直後に海外の方から打診はありましたが、その後音信不通になってます。
PEAR へのパッケージの登録についてはまずこちらに目を通して下さい。
http://pear.php.net/manual/en/guide-developers.php
http://pear.php.net/manual/ja/guide-developers.php
現在ではパッケージ提案の処理は PEPr というツールで行われています。
絵文字に関しては、キャリア間の変換に加えて
- データベースや HTML テンプレートへ保存可能な形式へのエンコード
- 上記からの実際の絵文字コードへのデコード
があるといいのではないでしょうか。
参考
http://search.cpan.org/~miyagawa/HTML-Entities-ImodePictogram-0.06/
0395nobodyさん
04/02/11 23:57ID:???>絵文字に関しては、キャリア間の変換に加えて
>- データベースや HTML テンプレートへ保存可能な形式へのエンコード
>- 上記からの実際の絵文字コードへのデコード
そうですね。CPANのコード見てみましたが、PHPでの実装も簡単にでき
そうなんでやってみます。絵文字を文字列としてデータベースに組込むに
は色々問題があるみたいですね。変換テーブルはPHP上の配列に保存
するのが無難ですかね。
0397nobodyさん
04/02/12 17:57ID:???これらのクラスはオブジェクト指向で作られてすごいクラスだと思うんですが
利用してる側の自分のプログラムでは、結局は処理手順を羅列してるだけ。
全然オブジェクト指向じゃありません。どうすればオブジェクト指向的な
プログラムになるんでしょうか?どうやったらいいのかすらイメージすら沸か
なくて。何か参考になるもの教えて下さい。
0398nobodyさん
04/02/12 18:07ID:???どのようなコードがオブジェクト指向的だという認識でしょうか?
それがわからないと答えようがありませんが、もし Struts のような動作を求
められているのでしたら、そのような Web アプリケーションフレームワーク
はたくさんありますので、それらを利用されると良いと思います。
PHP のオブジェクト指向サポートはあくまでも手段のひとつですので、こだわ
りがある方は Java, Ruby, Python あたりを使用すると幸せになれると思いま
す。
0399nobodyさん
04/02/12 18:24ID:???オブジェクト指向が何なのかもよく分かってないです。ただ、1ページ作成する時に
1つのファイルにほぼ全ての処理を詰め混んでしまってる今の状況はオブジェクト指向
とは言えないと自分で思いました。
ご指摘の通り、PHPは純粋なオブジェクト指向言語ではないので、オブジェクト指向を
勉強したいなら他の言語を使ってみたほうがいいですね。Javaでも勉強してみようか
と思います。とりあえずその前に Phrame,props,Mojavi ってのを発見したんで使って
みることにします。
0400nobodyさん
04/02/12 21:38ID:???0401nobodyさん
04/02/12 22:36ID:???ただ何となく>>397氏のいうこともわかる気がするのでアドバイス.
たぶん,DB_DataObject を継承したクラスを作って,ロジックをその中に収めるようにすると,
求めている「オブジェクト指向でコードを書いている気分」になれます(w
推測するに,DB クラスを使って RDBMS へのアクセスを抽象化しても,
SQL を組み立てたりするコード自体が Web 画面のプログラムに記述してあるので,
結局テーブルを操作するロジックは各プログラムにバラバラに撒かれることになり,
それが「全然オブジェクト指向じゃない感」を生んでいるのではないかと.
それで,DB_DataObject を継承したクラスを組んでいて何か違和感を感じたら,
それはたぶんオブジェクト指向的なモデリングがおかしいので,
UML とかの勉強をしてみると良いことでしょう.きっと.
読み違えてハズしてたらごめん.
0402nobodyさん
04/02/13 20:52ID:???DAOっていうやつですか?確かに SQL文をしこしこ書いて db->query() する
のに違和感を感じてるのかもしれません。
DBクラスを使っても、違うデータベースでも動くことぐらいしかメリットを
感じられないんですよね。大抵のデータベースなら、標準的なSQL文は同一
じゃないんでしょうか?INSERT,UPDATE,SELECT あたりをDBクラスがメソッド
を実装してくれると嬉しい気がするんですけど。そうしないことにはきっと
理由があるんですよね。みなさんこういったクラスは自作してるってことで
すか?
0403nobodyさん
04/02/13 21:10ID:???ひとつの設計方法なんですよ。
うだうだ言ってないで
UMLの本でも買ってきなさい。
あなたの認識が全く的はずれだった
ということに気づけますよ。
0404nobodyさん
04/02/13 21:59ID:???0405nobodyさん
04/02/14 00:26ID:???・おぶじぇくと脳の作り方
・憂鬱なプログラマのためのオブジェクト指向入門
この2冊です
0406nobodyさん
04/02/14 03:40ID:???1. addGroup で作成したグループにまとめてフィルターを追加する。
2. フィルターとして使用する関数にオプションを指定する。
という処理はできますか?
電話番号と郵便番号フォームを1つのグループとして登録して
mb_convert_kana($value, "n") を適用。一気に全角数字を半角数字に
変換する、といった処理を行いたいのですが。
0407nobodyさん
04/02/14 04:21ID:???> 1.
普通にグループの名前で applyFilter() したら全部の値が順々に apply されませんか?
> 2.
出来なかったので,引数付きで呼ぶ別の関数で wrap して使ってます.
<?php
function mb_convert_kana_n( $value )
{
return mb_convert_kana( $value, 'n' );
}
?>
なんていう,みっともない関数を作って(w
0408nobodyさん
04/02/14 16:47ID:???両方の問題が解決しました。てっきり $_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>
のように困った出力になってしまいます。何か使い方を勘違いしてる気
がしてます。
0409nobodyさん
04/02/15 00:53ID:???<?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() にオブジェクトを直接渡す式」が使えますね.
0410nobodyさん
04/02/16 01:49ID:???なるほど。それでうまくいきますね。ありがとうございます。
ネット上にあるサンプルって
if($form->validate()) {$form->freeze();}
このパターンばかりなんですが、実際に何らかの処理をするサンプルプログラム
どこかにないですかね。最初にフォームにアクセスした時は$form->validate()は
FALSEを返すみたいですが、どの変どういう仕組みになってるのか分からないので
、どういうコードを書けばいいのかイメージが湧かないです。
やっぱりソースコード読むのが一番の近道ってことでしょうか。精進します。
0411nobodyさん
04/02/19 07:22ID:???0412nobodyさん
04/02/19 11:22ID:???FormBuilderね
使ってみようかと思ったんだけどexample動くように設定するのが面倒で放置中(w
使ってみてレポートきぼんむ
0414nobodyさん
04/02/19 19:09ID:???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文を使って取り出してる
みたいで、文字列のカラムには自動でクォートしてくれると至れりつくれり
のようです。
でもこのテーブルの情報を毎回問い合わせるのは勿体無いと思うのですが、
これはクラス定義の際に指定できないんですかね。各カラムの属性をクラス
で定義できたらいいなと思うんですが。
0415nobodyさん
04/02/19 19:11ID:???あと、int型の列に文字列を挿入しようとすると、勝手に 0 を挿入するような
SQL文を実行されてしまうようです。ここらへんの挙動って変更できないので
しょうか。PEAR::isError() なんかでエラーを取得できると嬉しいのですが。
0416nobodyさん
04/02/19 19:28ID:???テーブル毎に 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);
}
}
0418nobodyさん
04/02/19 19:48ID:???ありがとうございます。
DB_DataObjectクラスのコメントの部分に思いっきり書いてありましたね。
読んでもよく意味が分かってなかったので助かりました。
0419nobodyさん
04/02/19 20:04ID:???毎回自動でやるより,最初に /usr/local/lib/php/DB/DataObject/createTables.php を使って,
ini ファイルを作ってやった方が,効率も速度も利便性も良いと思います.
でも,oracle だと少しいじってやらないと動かないかもしれません.
以前に比べれば,少しはマシになっているのですが……
pg や my では素のまま動きますね.
0420nobodyさん
04/02/21 00:03ID:???0421nobodyさん
04/02/21 04:11ID:???ありがとうございます。
Generator.php の使い方がよく分からなくて困ってました。
createTables.php から使ってみたら見事、データベースのテーブル定義を
取得して iniファイルと各テーブル用クラスを出力してくれました。
これは便利です。テーブル定義は iniファイルかクラスの変数のどちらか
に定義しておけばそれを読み込んでくれるってことですよね。ちょっぴり
感激です。
0422nobodyさん
04/02/21 11:06ID:???おめでとうございます.もうコレなしで PHP できません(w
テーブル定義は ini ファイルがメインになり,内部動作もこれに依存します.
例えば setFrom() や toArray() といった「全てのフィールドをアレコレする」というメソッドは,
クラスのコードに書いてあっても ini にないフィールドは無視されます.
テーブルのフィールド名や構成を変更した時は,
必ず createTables.php を再走行しましょう.
この時,クラス定義のコードで AUTOCODE とかなってる部分以外は保存されるので,
安心して上書きできます.
0423nobodyさん
04/02/22 17:42ID:???自分のコードががらりと変わってしまいました(・∀・)イイ!!
ところで DB_DataObject には isError() がないみたいなんで
すがどうやってエラーを検出したらいいんでしょうか。
クラス定義を見ると raiseError() でエラーを作成してる
のですが。
0424nobodyさん
04/02/22 18:03ID:???「DB Error: connect failed」
と表示されてしまうので、ここらへんを制御したいと
思った次第です。
DB_DataObject::debugLevel();
でも、このエラーは表示されてしまいます。
0425nobodyさん
04/02/22 18:45ID:???実際どのようなSQLクエリが発行されるか確認する方法ってありますか?
->update()する前等に生成されるSQLクエリが
正しいかをテストしたいのですが・・・
それらしいメソッドが見当たらない・・・
0426nobodyさん
04/02/22 18:51ID:???PEAR::isError() が使えませんか?
>>425
DB_DataObject::debugLevel() で表示されます.
あと ini で設定する ignore_update とかそんなんも参考までに.
0427nobodyさん
04/02/22 20:27ID:???発行したSQLクエリを表示はできるようなのですが、
->update()を実行した時点で自分の書いたコードに誤りがあると
間違ったSQLクエリを実行してしまう可能性がありますよね。
なので、実質的なデータベースのupdate自体は行わずに
SQLクエリのみを表示するという事は無理でしょうか・・・?
$person = new DataObjects_Person;
$person->get(12);
$person->name='fred';
/* ここで一度確認したい */
//$person->update();
0428nobodyさん
04/02/22 22:38ID:???>>426
> あと ini で設定する ignore_update とかそんなんも参考までに.
正確には debug_ignore_updates だった.
あるいは,全てにおいてとにかくどんなクエリが実行されてるかを知りたいのならば,
_query() を自分のクラスで overload して,特定条件で引数を表示するようにしたら良いかと.
0429nobodyさん
04/02/22 23:44ID:???どうしてますか?
いちいち Auth のインスタンスを作成して getAuth() メソッドを呼出してる
のでしょうか。それとも自前で session_start() して $_SESSION['_authsession']['registered']
を調べてますか?自分は後者なんですが何か変ですかね。
0430nobodyさん
04/02/23 00:08ID:???0431nobodyさん
04/02/23 00:12ID:???auto_prepend_file では不便だったので,
auth_check.php なんてファイルを先頭で include してる.
そのファイルの中では new Auth したりエラーだったらログイン要求ページに飛ばしたり
ログインしてたらグローバル変数にメンバ情報のオブジェクトを入れたりとかしてる.
0432nobodyさん
04/02/23 00:57ID:???のがよさそうですね。参考になりました。
そろそろ LiveUser も試してみようかな。
0433nobodyさん
04/02/24 04:09ID:???部分に理解できない点がありました。$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) . ' ';
0434nobodyさん
04/02/24 04:17ID:???自分なりの理解だと、update() は次のような手順
1. データベースに接続
2. 指定したテーブルが存在するか確認。なければ false を返す
3. テーブル定義を ini ファイルから読み出すか、table() を実行して取得
4. 各カラムの値について
4.1 オブジェクトの変数に保存されてるか調べる
4.2 文字列ならクォートして、数値ならそのままにして、結合する(条件があえば Cast.php を使う)
5. 手順4を元にしてSQL文を生成
6. SQL文を実行する
こんな感じだと思うんですが合ってますか?
update() を参考にして、SQLを実行しないで表示だけするメソッド作るのと
int型のカラムに文字列を挿入しようとすると 0 に変更するのを、NULL に変更したいのです。
0435nobodyさん
04/02/24 11:16ID:???> // 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の十八番。
0436nobodyさん
04/02/24 20:17ID:???ありがとうございます。大体分かったのですが
> if ($v & DB_DATAOBJECT_STR) {
ここの & って && とは違いますよね?
リファレンス以外の & の使用法をマニュアルから発見できませんでした。
あと v1 ってのは DB_DataObject のバージョン 1.x 系列という意味ですか?
0437nobodyさん
04/02/24 20:27ID:???& はビット演算子の AND です。
http://www.php.net/manual/ja/language.operators.bitwise.php
0438nobodyさん
04/02/25 02:00ID:???> ここの & って && とは違いますよね?
確かにビット演算するメリットは薄いからね。
> あと v1 ってのは DB_DataObject のバージョン 1.x 系列という意味ですか?
たぶんそうじゃないかな。コメントには V2としか書いてないけど。
正しい解釈は俺が知りたいくらい。
0440nobodyさん
04/03/02 22:11ID:???0441nobodyさん
04/03/02 23:33ID:???MySQL や pgsql では,けっこうマトモに動きます.
ttp://pear.php.net/manual/ja/package.database.db-dataobject.db-dataobject.joinadd.php
ここの「例」を見ればだいたい解ることでしょう.
ただ,こういう単純なの以外は「query() で直接 SQL 叩いた方が良いよ」とマニュアルにありますね(w
0442nobodyさん
04/03/03 10:02ID:???使いたすぎるよ・・・
・・・というのは冗談で。
いつの間にか消えてますね。
googleで検索すると残骸らしき物が出てくるけど。
何となく、MDB2に統合される予感が。
pear install MDB2-alphaで確認してみてくださいな。
0445nobodyさん
04/03/05 05:53ID:???0446nobodyさん
04/03/05 10:17ID:???0447nobodyさん
04/03/05 12:10ID:???MySQLやPostgreSQLみたいにインスコやDB作成も楽だし
運用面を考えると慎重になるけどね
0448447
04/03/05 12:11ID:???○MySQLやPostgreSQLみたいにインスコやDB作成も楽だし
×MySQLやPostgreSQLと比べるとインスコやDB作成も楽だし
0449nobodyさん
04/03/05 15:33ID:???DB に比べて使いにくいと思うのだが.
SQL 解析エリアをケチろうとして ? とか & とか多用すると,
いちいち prepare() → query() しなきゃならんですよ.
……もしかしてもっと良い方法がある?
0450nobodyさん
04/03/09 16:18ID:???pearでよく↑みたいなスキーマ図を見るけど、結構きれいだよね。
これって何のツールで出力してるんですか?
0451nobodyさん
04/03/10 14:01ID:???> PHP_CompatInfo will parse a file/folder/script/array to find out the minimum
> version and extensions required for it to run.
これ面白いです.まだバグが多いですが(w
このノリで,過去のコードが新バージョンの PHP で問題なく動くかどうか
走査してくれるプログラムがあれば,重宝しそうだなぁ.
0453nobodyさん
04/04/02 16:49ID:???HTML_QuickForm で addElement や addRule 並べるのが鬱陶しくて配列で回してるんですが、もっとお得な方法ありません?
配慮されていてもいい箇所だなーと思ったので、自分が何か見落としているのではないかと思った次第。
0454nobodyさん
04/04/03 00:54ID:???確かに面倒なんだけど,じゃ代わりにどんな機能なら汎用的で納得できるか,と考えると,
意外に思いつかなかったですわ(w
自分は,項目を並べた CSV から QuickForm を自動生成するクラスを自分で作っちまいました.
0455453
04/04/06 04:00ID:???ありがとうございました。
やはりそういう事になりますか。
> 自分は,項目を並べた CSV から QuickForm を自動生成するクラスを自分で作っちまいました.
この辺、車輪の再発明祭になってそうなのですが、そろそろ何か出てくれませんかねぃ。
0456nobodyさん
04/04/11 20:04ID:???別にCSV作ってそれ読むクラスとかよりシンプルだと思うんだけど
0458nobodyさん
04/04/11 22:00ID:???CSV 読むクラスを読むだけのソースは addRule() 並べるよりシンプルですよ.
それと,CSV をプログラム知識のない人でも書けるので,誰でもある程度好きなフォームを設計できるようになりました.
なりました,というか,それが目的で作ったんですけどね.
0459nobodyさん
04/04/11 23:05ID:???0461nobodyさん
04/04/12 09:33ID:???目的がプログラムの知識のない人が書けることなら構わないと思う。前提条件
が違えば考慮することも違うのは当然なので。
プログラマの視点からすればビジネスロジック以外に時間を掛けるかどうかは
じっくり考慮する必要があると思う。
0462nobodyさん
04/04/27 01:15ID:???0463nobodyさん
04/04/27 01:26ID:???Perlと違って関数が豊富だから、機会がなければ全然使わない人も多そうな感じ。
あと、速度(負荷低減)重視のため、PEARはあえて使わないってこともあったりする?
0464nobodyさん
04/04/27 03:38ID:???俺の負荷が軽くなる事の方が大事です。
サーバーの負荷は問題になれば相応の投資が為されるしな。(アクセラレーター導入、サーバー買い換え等)
考えないって事じゃなくて優先順位の問題かな。。
PEAR まんせー
1 年前に比べれば爆発的に進んだよね。今頃は PEAR? 何って感じで PEAR = PEAR::DB 的な誤解も多かった。
0465nobodyさん
04/04/27 04:15ID:YGiFCKd6SMTPで送りたいのでmb_send_mailは使えないんです。
0466nobodyさん
04/04/27 04:25ID:???昔の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);
0467nobodyさん
04/04/27 10:16ID:???見た感じでは普通に mb_send_mail() を使う方が簡単に思える……
0468nobodyさん
04/04/27 10:38ID:???Unix系OSでsmtpをしゃべりたいときとか。
>>466のコードを見るとまとめとしては古臭さを感じなくもないが、
使い方のサンプルとなるとこんなもんでしょ。
0469nobodyさん
04/05/07 13:10ID:Jax/P/Ee0470マリモーマ ◆perlnoUpCk
04/05/07 13:13ID:???0471nobodyさん
04/05/07 14:12ID:???無理。以前、CRAM式の認証をしたくて調べたんだが、
認証そのものはAuthクラスから呼び出される各Container側で行っており、
Authクラスにはその結果だけ知らされる仕組みになっていた。
ま、FileだけとかDBだけと決め打ちするのなら、そのContainerだけ改造
すれば可能。
0474nobodyさん
04/05/11 11:11ID:dmRD31gk次のようなエラーになってしまいます。なんででしょう。
Fatal error: Failed opening required 'PEAR.php' (include_path='') in /home/XXXX/XXXX/PHP/DB.php on line 26
■ このスレッドは過去ログ倉庫に格納されています