PEAR::Log::priorityToString() -- ログレベルの文字化

 ログレベルやハンドラ、実際のログ書き込みメソッド(log()等)をさしおいて、まずはあまり重要でないPEAR::Logの基底publicメソッドをつぶしておきます。
 まずはpriorityToString()。
 PEAR::Logのログレベル定数値をStringで表すためのメソッドです。
 通常は内部的にのみ使われるものですので独自にハンドラを組む人以外には使う用途はないと思います。

続きを読む

PEAR::Log::singleton() -- Singleton Method

 GoFデザインパターンのうちのひとつであるシングルトンパターンはこのPearLogにも実装されています。
 ただし、1クラス1インスタンスではなく、`全く同じ引数群`につき1インスタンスです。ここがこのSingletonの使い勝手の悪いところです。
 引数はfactory()と同じになるので省略します。

続きを読む

PEAR::Log::factory() Factory Method

PEARの中で好んで使っているものにLogがあります。
ロギングの実装は面倒ですから。
ところで、このPEAR::Logは日本語のマニュアルが用意されていません。*1
http://pear.php.net/manual/ja/package.logging.log.php
ですので、何回かにわけてLogのことについていくつか書いておこうと思います。
オンラインドキュメントの順番に沿って、まずは Log::factory()から。

*1:PEAR本には載ってるのでそちらも読んでみるといいでしょう

続きを読む

タイプヒンティング使用上の注意

intやstringといったプリミティブ型には使用できないタイプヒンティング。*1
そんなタイプヒンティングを使っていく中で知ったことを書き残しておきます。
とは言っても、マニュアルページの`User Contributed Notes`に書かれていることの焼き直しです。

*1:PHP5.1よりarrayが使用できるようになったとはいえ「何の」arrayかまでは見てくれないので事実上、使い勝手が向上していません。

続きを読む

PHP5はimmutable不可能?

元々マニュアルで「PHP 5はオブジェクト指向言語ではありません。」と宣言しているのだから、仕方ないといえば仕方ないんですが。

  • privateで宣言したメンバを守ってくれる。
  • finalで宣言したクラスは拡張できない。
  • privateコンストラクタ宣言可能

こういう実装なのにimmutableなクラスを作ることができない。
次のようなことをすると簡単にimmutableを破れたので開いた口がふさがらなくなってしまった。

続きを読む