"ゴースト"パッケージとサブを作成したいと思っています。私はこのようなエントリを持つ設定(INI)ファイルを持っている:このファイルは解析されPerl5で機能トグルを実装する
[features]
sys.ext.latex = off
gui.super.duper.elastic = off
user.login.rsa = on
を、以降の開発者は、次のような質問尋ねることができます:
if (MyApp::Feature->enabled ('user.login.rsa') { ... }
(全体的なアイデアは、Martin Fowler氏のFeatureToggleに基づいていますがhttp://martinfowler.com/bliki/FeatureToggle.html)
のMyApp ::機能で呼び出しをキャッチするためにAUTOLOADを使用して、そして私たちは、このAPIを提供することができますiniファイルを解析するためのブロックをBEGIN:
を質問です:
if (MyApp::Feature::User::Login::RSA) { ... }
のみのMyApp ::機能を持つ:それは、次のAPIを作成することは可能ですか?
大文字小文字は、設定ファイルで変更できますが、これは問題ではありません。そして、実装が設定から切り離されていることを明確にすると、MyApp :: Feature :: User :: Login :: RSAは存在せず、決してなりません。この機能の実装はf.eです。 MyApp :: Humanでは
私は、MyApp :: Feature :: Foo :: Barを置くことで、そのようなパッケージが存在することが示唆されています。しかし、開発者は、フィーチャー・パッケージがフィーチャー・トグルを管理しており、フィーチャー・パッケージがそれに問題がないという規則を知っています。私は読むためには複雑すぎる有効($文字列)ビットを使用して(最初の例を見つける
if (package::package->method (string))
秒1よりよい:第三はさらに容易になるだろう
if (package::package->method)
:
if (package::package::package)
パッケージレベルでAUTOLOADをシミュレートすることは可能ですか?
Greetings、 Ro b。
細部に悪魔: 'のMyApp ::機能::ユーザー::ログイン:: RSA'はしていません厳密に言えば、それは裸足です。最後の部分を関数呼び出しにすることができます: 'MyApp :: Feature :: User :: Login :: RSA()' – daxim