[Zope3-dev] Re: registerUtility(component, interface) vs provideUtility(interface, component) vs provideUtility(component, interface)

Philipp von Weitershausen philipp at weitershausen.de
Sat Sep 2 11:45:39 EDT 2006


Christian Theune wrote:
> Philipp von Weitershausen wrote:
>> Christian Theune wrote:
>>> see subject. What's the reason that all three flavours (still?) exist? I
>>>  just had a really hard time finding the spelling I need.
>> ztapi.provideUtility(interface, component) is discouraged and should go
>> away. I didn't do this for Zope 3.3 because of a lack of time.
>>
>> zope.component.provideUtility(component, interface=optional) is a
>> convenience spelling for:
>>
>>   zope.component.getGlobalSiteManager().registerUtility(
>>       component, interface=optional).
>>
>> The order of arguments is the same. I think Jim wants the convenience
>> functions in zope.component (provide*) to go away in favor of the
>> explicit spelling through the global site manager. I think that before
>> we do that, we should first abolish the term "site manager" from the
>> zope.component API (because we don't call it site manager anymore).
> 
> Hmm. Hmm. zope.component.provide* is *very* convenient. What would the
> new spelling be?

Look two paragraphs above:

 >>   zope.component.getGlobalSiteManager().registerUtility(
 >>       component, interface=optional).


> Isn't the global site manager something else then zope.component?

No. The global site manager (we prefer to call it global component 
registry nowadays) is defined in zope.component. It is always htere.

> Because zope.component uses the current thread-local site-manager,
> depending on what was set during traversal etc., isn't it?

Nope. zope.component knows nothing about thread-local site managers. 
That's zope.app.component (which hooks its knowledge of thread-local 
site managers into zope.component).

Philipp


More information about the Zope3-dev mailing list