2016-07-02 9 views
4

これらのブロックがMasonコンポーネントに存在する場合、実行順序はどのようになりますか?コンポーネント内のMasonブロックの実行順序は何か

  • %args
  • %init
  • %once
  • %shared
  • %attr
  • %flags
+1

テストテンプレートを作成して実行し、コードキャッシュでコンパイルしてみてください。私はそれのためにプラグインを作ったときにそれをやった。しかし、今覚えていない:)ここでは階層です:https://github.com/Camelcade/Perl5-IDEA/issues/905 –

+0

リンクを共有していただきありがとうございます。 %attrについて知りたかっただけです。 %attrはその階層にどこに収まるのですか? – Sunil

+0

あなたが言及した方法を考えてみましょう。 – Sunil

答えて

5

そのリスト内のブロックの2種類があります。実行可能なperlコードを含む "実行可能"ブロックと、キー値ペアを含む非実行ブロック(perlハッシュと違っていない)。

実行ブロック

<%一度>

コンポーネントがメモリにロードされるたびに、このブロックが実行されます。 他のブロックの前に実行されます。共有

<%>

このブロックは、一度リクエストごとに実行されます。これは<%init>ブロックの前に実行されます。

<%のINIT>

このブロックは、コンポーネントが呼び出されるたびに実行されます。 <%once>または<%shared>ブロック内のコードを除く他のコードの前に実行されます。

非実行ブロック

<%の引数>

このブロックは、コンポーネントが期待する引数を宣言するために使用されます。 また、コンポーネントの呼び出し時に が指定されていない場合、デフォルト値を指定するために使用することもできます。このブロックは に使用されている特殊なメイソンフラグを宣言するために使用される

<%フラグ>

は、コンポーネントの動作に影響を与えます。現在、フラグ が定義されているのはinheritです。

<%のATTR>

このブロックは、任意のキーと値のペアを宣言するために使用されます。 <%flags>ブロックとは異なり、内容はMasonでは使用されませんが、 コードで使用される可能性があります。

詳細については、Mason bookを参照してください。上記のうちのいくつかがコピーされてから変更されました。