Zend Framework 日めくり Calendar 2012の5日目としてZend_Dateの話です。
PHP Advent Calendar jp 2011のエントリーにDateTimeクラスの落とし穴と対策にZend_Dateの紹介がありました。
なるほど、Zend_Date 使っていきたいですね!
早速2012年年初めを確認しましょう。
<?php
$datearray = array(
'year' => 2012,
'month'=>1,
'day'=>1,
'hour'=>1,
'minute'=>0,
'second'=>0
);
$date = new Zend_Date($datearray);
$format1 = 'yyyy-MM-dd HH:mm:ss';
$format2 = 'YYYY-MM-dd HH:mm:ss';
echo $date->toString($format1), // 2012-01-01 01:00:00
PHP_EOL,
$date->toString($format2), // 2011-01-01 01:00:00
PHP_EOL;
$datearray['day'] = 2;
$date = new Zend_Date($datearray);
$format1 = 'yyyy-MM-dd HH:mm:ss';
$format2 = 'YYYY-MM-dd HH:mm:ss';
echo $date->toString($format1), // 2012-01-02 01:00:00
PHP_EOL,
$date->toString($format2), // 2012-01-02 01:00:00
PHP_EOL;
あれれ?これはマニュアルにも注意書きがある通り、
YYYYではISO書式となるためです。
http://framework.zend.com/manual/ja/zend.date.constants.html#zend.date.constants.selfdefinedformats
この点についてはZF-5297で議論もされてるので参照ください。
※以下私見でのZF2への開発の話
ところで、最近こんなお便りをいただきました。
@kazusuke JIRAのProject名がZF2なようなので、多分この検索結果であっているとおもうのですが…。あんまりZendFrameworkあたりの開発スタイルが分かっていないのでもし違っていたら教えてもらえると嬉しいです
ZF2はZF1からのアップデートです。
まずZF1で再現するか確認したほうが良いと思います。
バグ報告をして、
で、
http://zend-framework-
https://github.com/sasezaki/
注意として、
http://framework.zend.com/
…..あ、
ちなみに、ZF2への開発(コントリビュート)
Zend Framework 2 beta1 がリリースされましたね。
リリースアナウンス
http://framework.zend.com/zf2/
10月のZendConでの講演
2.0ではhttpに大幅なリファクタリングが施され、HTTPクライアントで、リクエストボディがある場合にcontent-lengthを設定する箇所がprepareHeadersに移動になったのですが、mbstring.func_overloadの設定が行われていて、かつmb_internal_encodingでUTF-8のときなどのmb_strlenでバイトサイズでない場合(ようするにたぶんレアケース)に問題があったのですが、直してるので、最新のブランチを使った方がいいです。
https://github.com/
ということで、問題点↓のと”content-
CakePHP2.0.1がリリースされましたが、
http://d.hatena.ne.jp/
現行のpearパッケージマネージャに対する不備については、最近だと
How Would You Engineer A PEAR2/Pyrus Distribution Architecture?
の記事とかでバンバン議論されてる通りですが、問題点の一つはあるプロジェクトに対するパッケージ管理の場合でしょう。
(ここから先はパッケージマネージャとしてのpearについては小文字のpearと書いていきますが)
単にpearでinstallする場合は、システム上の固定のパスに(ubuntuだと/usr/share/php)、sudoでいれなきゃなりません(pear download使ってうんぬんとかだとバージョン管理の話外なのでおいといて)。また、pear後継のpyrusでは、ユーザローカルに設定するためのmypearっての用意してますが、もちろんユーザ固定になってしまいます。
そのためあるプロジェクトで必要なパッケージを設定する場合は、Cakeやsymfonyだとvendorっていうなぞフォルダを用意するってのはよく知られてる話だと思います(もちろんrails由来でしょうけど)。んで最近だとsymfony一派の皆様方がgit submoduleとか色々駆使してるなあとか遠目で見てます。
pyrusはvendorディレクトリ対策も考えていて、
https://github.com/pear2/PEAR2_VendorCommands
というプラグインでは、その名前の通りvendorディレクトリに設定するためのコマンドを用意してます(まだ開発途中)
使い方はインストールからだと、現在pear2リポジトリにはないっぽいので上記のをpullして
$php pyrus.phar package package.xml
$php pyrus.phar install -p PEAR2_VendorCommands-0.1.0.tgz
として、VendorCommandsをインストールします。インストールが成功していればvendor-updateが追加されているはずなので、
$php pyrus.phar help vendor-update
とヘルプを確認したあとは、任意のディレクトリで
$php pyrus.phar generate-pear2 FOO
などとして単純なpackage.xmlを取得します。(gpしなくても良いですけど)
で、このpackage.xmlに依存するパッケージを書きます。
このpackage.xmlを対象のプロジェクトに配置し、
$php pyrus.phar vendor-update -f
と実効すれば、そのプロジェクトのvendorディレクトリにインストールされます!!
ってことで、package.xmlはnpmのpackage.jsonの先取りだったんですね!!!!!!!cool!!!
似たようなバンドル対策として、
といったライブラリがでてきてますが、やはりpear本家が提供しようとしてるものを改善するのが先じゃないんですかね?(ちなみにさっきインストールに問題あったんでissueあげたら速攻で修正してもらえましたよ。)
Nowadays, we know pyrus is so goooood!!!!!!!!!!!!!!!
But, Javascript is most major programming language
So PHP developer should porting JavaScript’s gems!!!!( I don’t refer to Ruby’s.)
One of JavaScript’s gem is npm!!!!!!!!!!!!!!!!
Awesome!
$ npm xmas
What’s happen?
We get signal!!!!!!!!!!!!! Main screen turn on!
Awesome!!!!
Actually, I can’t wait xmas command on pyrus!!!!!!!!!!!!!!
Fortunatly, pyrus has plugin architecture.
So, we can make xmas-command quickly! Following url is a sample plugin.
https://github.com/sasezaki/Acme_Pyrus_Xmas
Let’s try !
$php pyrus.phar xmas
Enjoy!