[dev] Newbie

Chuck Hagenbuch chuck at horde.org
Sun Apr 30 14:21:46 PDT 2006


Quoting Raphael Melo de Oliveira Bastos Sales <raphael.melo21 at gmail.com>:

> I understand. And I do intend to do this. But I think that designing
> the API is a good way to start.

I guess my reaction to that is that you need to have a sense of what  
you want the API to _do_ before you design it. A general LDAP  
administration tool is a different beast than an API intended for use  
in writing LDAP drivers for other applications.

> As promised, the interface I was thinking. I'm hoping to increase it
> as I get a better understanding the necessities of other Horde
> developers:
>
> <?php
> class HordeLDAPDriver{
>
>     function HordeLDAPDriver( $ldap_host, $base_dn, $user = "",   
> $password ="" ){
>         /* Do LDAP connection and binds stuff here.
>          * If user and password are not set, tries anonymous bind */
>     }

You should avoid doing connection stuff in the constructor - it makes  
error handling difficult in PHP 4. If it was just PHP 5 code, you  
could throw an exception. But until we go PHP 5-only, you need to use  
an initialize() or similar function to do things that can fail.

>     function authenticateUser( $user, $password ){
>         /* Tries to authenticate an user that is in one of the
> assigned groups */
>     }
>
>     function authenticateUserByGroup( $user, $password, $groups ){
>         /* Tries to authenticate an user that is in one of the
> assigned groups */
>     }

Any reason not to have $group as an optional argument to the first  
method instead of having two methods? And how are these user/password  
variables different from the ones provided in the constructor?

Looks like an okay start to me. But I'm not an LDAP expert. :)

-chuck

-- 
"we are plastered to the windshield of the bus that is time." - Chris


More information about the dev mailing list