PHP 4.3.2 リリース 18
ストーリー by Oliver
<?PEAR?> 部門より
<?PEAR?> 部門より
dseg 曰く、 "PHP 4.3.2 が29日にリリースされた(リリースノート、変更点一覧)。主にバグフィクス中心だが、画像を扱う為のライブラリである GD の同梱バージョンが最新の2.0.12 になった事、Apache2用の SAPI の新規追加、DBA拡張モジュールの修正と強化といったところが目に付く。
また、今バージョンより、Unix版では既に標準配布に含まれていた 『PEAR』がWindows版(の.zipパッケージの方)にも同梱されるようになった事は要注目だろう。
PEAR は PERL にとっての CPAN にあたる、PHP4用の標準クラスライブラリで、コアコンポーネントと拡張パッケージ、PECLと呼ばれるCで書かれた拡張モジュールからなる。標準でパッケージインストール/管理用のコマンドラインツールが付属するが、最近ではPEAR_Frontend_Webという、Webブラウザ経由でのPEAR のインストールを可能にするモジュールも開発されており、従来に比べるとインストールのプロセスがより分かり易くなって来ている。未だPEARを使っていない開発者にとっては、そろそろ試してみるちょうど良い頃合かもしれない。ところで、PEAR...使っていますか!?"
動いていたものが動かなくなる (スコア:3, 参考になる)
・#21820 [php.net]のバグ修正 ("$arr['foo']"が本来E_PARSEとなるべきところで不要なE_NOTICEを発生させる) (Jani)
というのが、今回の変更点の一番のネックかもしれません。
実行中の軽微なエラーとしてWarning未満の扱いで通常(デフォルトで)エラーメッセージなしで動いていたものが、実行前の構文エラーとして扱われることになりました。
今まで動いていたものが突然うんともすんとも言わなくなる変更なので、注意すべきところだと思います。
#日頃、丁寧なコーディングを心がけていないと、これの対策にしばらく時間をつぶされることになるかも。
Re:動いていたものが動かなくなる (スコア:0)
おーできるできる。
ってレベルで、本気で構文とか覚えずに使ってきた人間としては脅威です。(^^;
Re:動いていたものが動かなくなる (スコア:0)
エラーチェックが厳しくなっただけでは (スコア:2, 参考になる)
まあでも適当に書いたコードが動かなくなってきた傾向は確かにありますね。main.cgi?cmd=delete みたいに呼び出されると自動的に $cmd = 'delete' になると思ってた頃に書いてたコードが、バージョンアップによるデフォルト状態の変更で動かなくなっててあせったりとか。
PHP は際立った魅力に欠ける言語だと思います。私は好きで使っていますけど、セッション管理とかが楽だし、クラスも簡単に使えるし、データベースも楽だし、そつのない言語だからです。
なぜ使いやすいのか考えてみると、Perl の CPAN のような周辺ライブラリをチェックすることなく、標準あるいは標準拡張ライブラリが充実しているからだと思います。最近 IMAP をいじってみているのですが、別途入れる拡張ライブラリではなく標準になっており、ドキュメントも本体に含まれています。
ちゃんと情報を追える人なら、拡張ライブラリの充実している言語のほうが良いのだとは思いますが、そうでない人にとっては本体でやってくれたほうがわかりやすくていいです。
ベンダごとにデータベースを扱う関数系が本体で用意されており、汎用的に DB を扱うクラスが拡張ライブラリで用意されています。この場合、もちろん拡張ライブラリを使用する方が良いと思います。私は最近まで知りませんでしたので、私の今までのコードは MySQL の関数群をじかに使っています。本体のドキュメントしか読んでいなかったので、その存在に気が付きませんでした。今回から本体に含まれるようになるとのことで、ドキュメントでの言及もあったらよいと思います。
PHP は、「特に使わない理由はない」という感じの言語です。実際便利ですし。積極的に使う理由が少ないので、マニアウケはしないんですけどね。そういう人は、Scheme とかでウェブアプリ作っちゃえ、とかやって自己満足してればいいんです。と煽ってみる。
About PEAR (スコア:1)
> 汎用的に DB を扱うクラスが拡張ライブラリで用意されています。
今、汎用DBクラス使って開発しています。
DB差し替えが容易なので結構いい感じです。
たとえば、MySQL用PHPコード->PostgreSQL用PHPコードへの
移植とか、作業を軽減できます。
PCにECC Registeredメモリの利用を推奨します。
Re:動いていたものが動かなくなる (スコア:1)
PHPを知らないので、以下の警句がPHPに当てはまるのかどうかは俺には判断できませんが、
この警句、一応挙げておきます。
「プログラミング言語は満載した機能を特色の第一とするものではない。
あとになって機能の追加が必要と判明するような弱点と制限を取り除いて設計すべきである。」
(アルゴリズム言語Schemeに関する第五改訂報告書、犬飼 大訳 [1]) [dreamhost.com]
sprintf にもバグ || PEAR も美味しいですよ (スコア:3, 参考になる)
PEAR は英語版マニュアル [php.net]が改訂され PEAR::DB のようないくつかのクラスはかなり使いやすくなっています [php.net]。
また PHP-Magazine [php-mag.net] が PEAR を全面的にプッシュしており、PEAR コミュニティも積極的に利用していく [sakura.vg]ようです。日本からも取り寄せ可能です。
今 PEAR でお手軽にかじれて美味しいのは PEAR::DB のようにドキュメントが充実して安定しているクラスと PEAR 基底クラスの辺りだと思います。後者は各クラス間で統一的なエラー制御と getStaticProperty による設定の一元化等に使えます。
2ch PEAR スレッド [2ch.net]やそのスレッドから派生した Wiki [sakura.vg] もあり、いくつかの翻訳が進んでいます。
英語と日本語の情報格差も気になっているのでありがたい存在に思えます。
面白そう美味しそうなクラスはいっぱいあります。けど情報が少ない。
兎に角人手が足りていないように思えます。ドキュメントがまだ充実しておらず、色々なクラスを使って評価を行おうという人も少なく使おうと思っても習得コストがお高い状況に思えます。
今は投資&勉強&貢献だと思って半ば無理矢理使っています。自分で組んだ方が早いと思う事もしばしばですが一度学べば次から楽になると自分に言い聞かせつつ。
ドキュメントやレビューなどの情報が充実すれば改善されるのか、それともこんなものなのか。PHP 以外の言語経験がほとんど無く分からないのですが CPAN とかはもっと使いやすいのでしょうか。隣の芝生は青いなぁ、、;
Re:sprintf にもバグ || PEAR も美味しいですよ (スコア:1)
XML/XSLTの充実に期待。
Re:sprintf にもバグ || PEAR も美味しいですよ (スコア:1)
Var_Dump は知らなかったので早速試してみました。
require_once('Var_Dump.php');
Var_Dump::display($object);
これいいですね。解析やデバッグに重宝しそうです。
情報感謝です。=)
# デスマーチ気味なので Benchmark は次のサイクルにでも..
Re:sprintf にもバグ || PEAR も美味しいですよ (スコア:1)
Var_Dump::display($obj,'',VAR_DUMP_DISPLAY_MODE_HTML_TABLE);
など感動モノです。
引数としてobject型の変数をを与えてやると効果的です。
r_display()メソッドで出力をバッファリングせずとも
変数として結果を利用できる点も面白いと感じています。
Re:sprintf にもバグ || PEAR も美味しいですよ (スコア:0)
遊び心で実装する程、手間が掛かったり面白いモノでもないし。
# syntax hilighting の時にも思ったけど、そんなものを実装する暇があったら、
# 仕様変更が極力起こらな
Re:sprintf にもバグ || PEAR も美味しいですよ (スコア:0)
Re:sprintf にもバグ || PEAR も美味しいですよ (スコア:1)
A.「sprintfにバグ」または、「PEARが美味しい」 のどちらかが
真であれば、この条件は真である。
B.「sprintfにバグ」があった場合、「PEARが美味しい」が実行される。
C.「sprintfにバグ」の言い換えが「PEARが美味しい」である。
上記、A,B,Cの3つの解釈のどれかが真であるのかなーと思って・・。
式: A&&(!B&&!C) || (!A&&!C)&&B || (!A&&!B)&&C
単なるいらんつっこみです。ごめんなさい。
でもでも、以下の語法は、一般的であると私も思いますので、
ここにもbitwise演算がっ!(笑)とまでは、さすがに思わず:
今は投資&勉強&貢献だと思って半ば無理矢理使っています。
Re:sprintf にもバグ || PEAR も美味しいですよ (スコア:0)
sprintf (にもバグ || PEARも美味しいですよ)
散々使ってきてるんですけど…… (スコア:1)
ですねぇ……。
つい最近、競馬関係のデータの処理で"ヴァース"(何のことかは競馬好きじゃなきゃ
分からないでしょうが)という文字列を表示すると、"ヴゼス"になっちゃって困って
しまいました。
しょうがないので、
if(preg_match("ァース",$str){
処理……。
}
みたいな処理をカマしてしまいました。これって悲しい。
Re:散々使ってきてるんですけど…… (スコア:0)
くわしくはこのへん [php.gr.jp]かな?
初歩的すぎる指摘でバカにしてると思われるかもしれませんが、私も「そんなこと」で悩んだことがあるので…。
#ヴァースって、雲じゃない土地のことでしょ?
Re:散々使ってきてるんですけど…… (スコア:1)
動かしているのはLinuxでPHP-4.3.2RC3なんですが、ヴァーチャルサイトでSJIS使ってる人がいまして、php.iniは
[mbstring]
output.buffering = Off
default.charset = Shift_JIS
mbstring.language = Japanese
mbstring.encoding_translation = On
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.substitute_character = none;
なんて設定になってます。もちろん./configure時には
--enable-mbstring
をカマしてます。
>>#ヴァースって、雲じゃない土地のことでしょ?
いや、今年のダービー馬の名前が“ネオユニヴァース”っていうんです。:D