2011-01-06 17 views
3

PHP 5.3(これは厄介ですが、同時に大丈夫です;私は柔軟性があります)にアップデートすることを拒否するホスティングがありますが、本当に私を驚かせる唯一の事は__callStaticを使用できません。PHP:5.2.xの__callStatic代替

モジュールをロードして、単一のクラスに統合したい(つまり、モジュールをロードするクラスを持っていて、メインクラスの__callStaticメソッドを呼び出すことによってそれらのモジュールの関数にアクセスします)が、明らかに__callStaticメソッドが動作しませんでした。

の代替品がありますか? static? $registry->some_func()の代わりに、二重コロン(つまり、registry::some_func())のクリーンコードの外観が好きです。

これまで別のダウンサイドは、私は今、(私自身の好みによって非常にある、非常に乱雑)関数内globalキーワードを使用するように強制していますということです。

コードは、非静的メソッドの代わりに静的メソッドを使用することで非常に高速であり、さらにはきれいになっています。

も:私は5.2といつものように__callStaticメソッドを記述して、たとえばregistry::__callStatic("some_func"), array("val", "val2", "val3")のために、明示的にメソッドを呼び出すと、単純にそのように物事を保つこと、も、彼らは5.3にアップグレードないときの移行が容易であることについて考えた 。この方法の考え?

ありがとうございます!

答えて

1

これを実行したい唯一の理由が、二重コロンのスピードと主観的な魅力であるならば、私は大括弧のタオを理解し、飛び込んでオブジェクトインスタンスを使用するように成長すると言います。あなたが話す "クリーンコードの外観"は、ハンマーパンツのようなものです... 1年後には涼しく、数年後には老いていて賢い時には涼しくはありません。 __callStatic()(IMVHO)は、せいぜい不要なマイナーな利便性であり、最悪の場合、クラスデザインが悪い場合の回避策です。 :)

+0

非常に賢明に:]私はこの時点で私自身の仕様であるという事実に同意します。私はいつも少しの魔法のlinuxコマンドを一緒にパイプして、コード全体を静的な呼び出しで置き換えることができます( '$'を削除し、 ' - 'を '::'に置き換えるだけです)。 – Qix