Jaka jest zalecana metoda dostępu do trwałych programów Plone i dlaczego?getToolByName() a inne
getToolByName (kontekście "portal_url")
bezpośredniego pomiaru: context.portal_url interfejs
iTools
itp
Jaka jest zalecana metoda dostępu do trwałych programów Plone i dlaczego?getToolByName() a inne
getToolByName (kontekście "portal_url")
bezpośredniego pomiaru: context.portal_url interfejs
iTools
itp
Myślę, że odpowiedź jest w kodzie samej getToolByName
(http://svn.zope.org/Products.CMFCore/trunk/Products/CMFCore/utils.py?view=markup). Ta metoda działa w ten sposób:
getUtility
i umieszczając je w kontekście (który wydaje się być dobrą rzeczą dla mnie)więc jedyną metodą „by wszystkimi rządzić” wydaje się być: getToolByName
Ale, jak @keul powiedział, istnieje również buforowanie zaangażowany, i patrząc tutaj (http://collective-docs.readthedocs.org/en/latest/misc/context.html#itools-interface) jest jasne, że za pomocą interfejsu ITools, kiedy nie kończy się niepowodzeniem z powodu narzędzi, które jeszcze nie implementują tego interfejsu, jest szybszy.
Z powyższych względów, w końcu sugeruję:
(jako bezpośrednie nabycie jest już wypróbowany przez getToolByName, jeśli zawiedzie, nie będziesz miał więcej fortuny)
Zastanawiam się, dlaczego getToolByName nie wysyła zapytań do ITools. –
ponieważ 'getToolByName' jest metodą w pakiecie CMFCore, podczas gdy' ITool' jest interfejsem w 'plone.app.layout'. Jak wskazuje nazwa domeny, p.a.layout jest pakietem wyższego poziomu i jest specyficzny dla Plona. –
Wykorzystanie iTools narzędzia muszą być najlepszą metodą, ponieważ są buforowane. Jednak czasami powodowało to problemy (związane z narzędziem portal_membership, ale nie pamiętam szczegółów), więc w rzadkich przypadkach przechodzę na getToolByName. Ten ostatni to bezpośrednie przejęcie.
I ostatnie metody plone.api - http://readthedocs.org/docs/ploneapi/en/latest/utilities.html#get-tool –
I nadal uważają, że plon e.api trochę experimetanl, a więc nie polecam ... również chciałbym wiedzieć wgląd za odpowiedź –