免責事項:はい、私はPHP4.3.0をサポートすることを余儀なくされています。私はそれが死んでいることを知っています。いいえ、アップグレードできません。複数のサーバーを扱っているため、一部のサーバーにはアクセスできません。
さて、self::
PHP5固有であるため使用できないので、PHP4クラスに静的を実装するにはどうすればよいですか?私の研究からこれまでのところstatic
、関数のコンテキストでのみキーワードを使用できるようです。$ _ GLOBALSを使用する別のメソッドを見ましたが、それを使用することはないと思います。
同じページにいるので、4でこれらのPHP5統計にアクセスする必要があります。
public static $_monthTable = array(
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
public static $_yearTable = array(
1970 => 0, 1960 => -315619200);
これまでのところ、静的変数が見つからない場合は基本的に静的変数を設定する独自の関数を考え出し、すべての静的プロパティをその関数にハードコーディングしています。ただし、インスタンス化されておらず、コンストラクターが起動されていない、つまりを使用できないと仮定すると、同じクラスのantherメソッド内でこれらの静的なものを参照する方法が完全にはわかりません$this
。
class DateClass {
function statics( $name = null ) {
static $statics = array();
if ( count( $statics ) == 0 ) {
$statics['months'] = array(
'Jan', 'Feb'
);
}
if ( $name != null && array_key_exists($name, $statics ) ) {
return $statics[$name];
}
}
};
var_dump( DateClass::statics('months') );
質問1:これは実行可能ですか?別の方法を試してみる必要がありますか?
質問2:同じクラスのメソッドから統計をどのように参照しますか?試しましたが、単なる文字列__CLASS__::statics
だと思う__CLASS__
ので、実際にはメソッドを呼び出していません。
注:これは、Apache2 + / IIS6 +、PHP4.3.0からPHP 5.2、OSX / Linux/Windowsで使用されるフレームワークに実装します。