The peer.ldap package implements LDAP (Lighweight Directory Access Protocol) access.
use peer\ldap\LDAPConnection;
use util\cmd\Console;
$l= new LDAPConnection('ldap://ldap.example.com');
$l->connect();
$search= $l->search(
'ou=People,dc=OpenLDAP,dc=Org',
'(objectClass=*)'
);
Console::writeLinef('===> %d entries found', $search->numEntries());
foreach ($search as $result) {
Console::writeLine('---> ', $result->toString());
}
$l->close();
use peer\ldap\{LDAPConnection, LDAPEntry};
$l= new LDAPConnection('ldap://uid=admin,o=roles,dc=planet-xp,dc=net:[email protected]');
$l->connect();
with ($entry= $l->read(new LDAPEntry('uid=1549,o=people,dc=planet-xp,dc=net'))); {
$entry->setAttribute('firstname', 'Timm');
$l->modify($entry);
}
$l->close();
use peer\ldap\{LDAPConnection, LDAPEntry};
$l= new LDAPConnection('ldap://uid=admin,o=roles,dc=planet-xp,dc=net:[email protected]');
$l->connect();
with ($entry= new LDAPEntry('uid=1549,o=people,dc=planet-xp,dc=net')); {
$entry->setAttribute('uid', 1549);
$entry->setAttribute('firstname', 'Timm');
$entry->setAttribute('lastname', 'Friebe');
$entry->setAttribute('objectClass', 'xpPerson');
$l->add($entry);
}
$l->close();
If the LDAP queries need to be constructed dynamically the LDAPQuery class provides a printf-style syntax to do so:
use peer\ldap\LDAPQuery;
$res= $ldap->searchBy(new LDAPQuery(
'o=people,dc=planet-xp,dc=net',
'(&(objectClass=%c)(|(username=%s)(uid=%d)))',
'xpPerson',
'friebe'
1549
));
When using the "%s" token, the value passed is escaped according to rules in LDAP query syntax. The %c token copies as-is, and %d handles the argument as numeric value.