「ゴースト」パッケージとサブを作成できるようにしたいと思います。次のようなエントリを含む構成(ini)ファイルがあります。
[features]
sys.ext.latex = off
gui.super.duper.elastic = off
user.login.rsa = on
このファイルは解析され、後の開発者は次のような質問をすることができます。
if ( MyApp::Feature->enabled ( 'user.login.rsa' ) { ... }
(全体のアイデアは、MartinFowlerのFeatureTogglehttp : //martinfowler.com/bliki/FeatureToggle.htmlに基づいています)
MyApp :: Featureで呼び出しをキャッチするためにAUTOLOADを使用し、iniファイルを解析するためにBEGINブロックを使用すると、次のAPIを提供できます。
if ( MyApp::Feature->user_login_rsa ) { ... }
問題は次のとおりです。次のAPIを作成することは可能ですか。
if ( MyApp::Feature::User::Login::RSA ) { ... }
MyApp :: Featureだけを持っていますか?
小文字、大文字は設定ファイルで変更できますが、ここでは問題になりません。そして、明確にしてください。実装は構成から切り離されており、MyApp :: Feature :: User :: Login :: RSAはなく、決してそうなることはありません。この機能の実装は、MyApp::Humansにあります。
MyApp :: Feature :: Foo :: Barを配置すると、そのようなパッケージが必要であることがわかります。しかし、開発者は、フィーチャーパッケージがフィーチャートグルを管理するという慣習を知っており、問題はありません。私は最初の例を見つけました(enabled($ string)ビットを使用すると複雑すぎて読むことができません
if ( package::package->method ( string ) )
2番目の方が良い:
if ( package::package->method )
3番目はさらに簡単です:
if ( package::package::package )
では、パッケージレベルでAUTOLOADをシミュレートすることは可能ですか?
あいさつ、ロブ。