http://mojix.org/foo/bar/hoge とかいうURLを呼び出した場合、もし/foo/barフォルダにhogeというobjectがなければ、Zopeは1つ上の/fooフォルダを探す。
もし/fooフォルダにhogeというobjectがあれば、それが呼ばれる。
このとき、/foo/barフォルダは/fooフォルダからhogeというobjectを受けついだかのようにふるまっている。これが「獲得」。
もし/fooフォルダにもhogeがなければ、Zopeは/フォルダ(ルート)まで探しにいく。それでもなければエラー。
なお、ここでobjectと書いているのは、正しくは「objectあるいはプロパティ」。つまりhogeはプロパティでも良い。
(mojix)
以下のようなディレクトリ構造の場合、barという画像オブジェクトをfooというDTML method オブジェクトに張り付けたいとした場合、 fooには<dtml-var "b.bar">と書く。
/
+ a/
+ foo(DTML method) ... <dtml-var "b.bar">
+ b/
+ bar(image/png)
同じくPageTemplateオブジェクトに張り付けたいとした場合、 fooには<img tal:replace="structure container/b/bar" />と書く。
/
+ a/
+ foo(PageTemplate) ... <img tal:replace="structure container/b/bar" />
+ b/
+ bar(image/png)
DTMLでの「"b.bar"」及びPageTemplateでの「container/b/bar」というのは、bというフォルダオブジェクトの下にあるbarというオブジェクトを意味するが、 aにはそのようなフォルダは含まれてはいないのがわか る。そこで、ZORB(Z Object Request Broker)が上の階層を見に行って、 bというフォルダを探す。無ければさらに上を探すと言った感じに、bというフォルダが/(ルートディレクトリ)にまでさかのぼって探す。
これらの例では、一つ上がってすぐにbというフォルダが見つかる。そうすると、次に「bar」というオブジェクトがあるかどうかを探す。 もし、これが今見つかっていたbに無かった場合は、先ほどと同じ動作を行い、ほかのbというフォルダを探しに行く。 今回の例では、barというオブジェクトが含まれているのでそれを貼り付けることになる。
| Last edited Sun, 10 Sep 2006 06:02:58 +0900 | Edit this page |