[dev] [commits] Horde branch master updated. 549a1a57841717f032d1d95e86d10679297356e1

Gunnar Wrobel p at rdus.de
Mon Sep 13 08:06:00 UTC 2010


Quoting Jan Schneider <jan at horde.org>:

> Zitat von Gunnar Wrobel <p at rdus.de>:
>
>> Quoting Jan Schneider <jan at horde.org>:
>>
>>> Zitat von Gunnar Wrobel <p at rdus.de>:
>>>
>>>> commit 549a1a57841717f032d1d95e86d10679297356e1
>>>> Author: Gunnar Wrobel <p at rdus.de>
>>>> Date:   Mon Aug 30 09:12:59 2010 +0200
>>>>
>>>>  Added the Interfaces package.
>>>>
>>>>  Rationale:
>>>>
>>>>  When looking at the Kolab_Session package I realized that
>>>>  "Horde_Auth::getAuth()" calls have been converted to
>>>>  "$GLOBALS['registry']->getAuth()". While this may be fine on the
>>>>  application level I don't think it is acceptable on the level of a
>>>>  framework package.
>>>>
>>>>  "$GLOBALS['registry']->getAuth()" does pretty much the same as
>>>>  "Horde_Auth::getAuth()" did before and the move of the functionality
>>>>  into the registry is absolutely fine.
>>>>
>>>>  For Kolab_Session this does however mean that the dependency on that
>>>>  functionality gets further obscured. Something has to setup
>>>>  $GLOBALS['registry'] before Kolab_Session is called into the mix.
>>>>
>>>>  At the same time I think the package would now need to pull in Core as
>>>>  a dependency which I wouldn't like much either.
>>>>
>>>>  I think it is a cleaner solution to provide the Interfaces package. It
>>>>  can be used to clearly define the communications between Core and the
>>>>  other framework packages. This also allows to declare the dependencies
>>>>  in an obvious manner and decouples low level libraries from the BIG
>>>>  Core thing.
>>>
>>> I still don't get the rationale, because you add yet another  
>>> interface level - the registry and injector objects already are  
>>> interface between packages and between applications and packages.
>>>
>>> In this certain case, you shouldn't access getAuth() in your  
>>> package at all, but get the authenticated user injected at some  
>>> point.
>>>
>>
>> "the authenticated user" seems to be represented by Horde_Registry  
>> though. If it would be represented by Horde_Auth then I could  
>> inject it without adding the Core dependency. I'm currently not  
>> deep enough in the authentication layer to determine what would be  
>> needed to move getAuth() back to the Auth package.
>>
>> What I could however do would be to check if the functionality I  
>> need the getAuth() information for couldn't be replaced/removed.  
>> This is only a sanity check after all and it might not be necessary  
>> anymore. Will look into that.
>
> The point is that you shouldn't *pull* in the user name through  
> getAuth() at all, no matter which interface defines this method. If  
> a user name is required for a package, it should be *injected*, e.g.  
> into the constructor from the consumer code.

Ah, now I get it. Sorry for being slow. Will fix ASAP.

Cheers,

Gunnar

>
> Jan.
>
> -- 
> Do you need professional PHP or Horde consulting?
> http://horde.org/consulting/
>
>
> -- 
> Horde developers mailing list - Join the hunt: http://horde.org/bounties/
> Frequently Asked Questions: http://horde.org/faq/
> To unsubscribe, mail: dev-unsubscribe at lists.horde.org
>







More information about the dev mailing list