Ldap :: Object encapsulation of php's ldap functions
This library provides a class encapsulation of php's ldap functions. This might be very useful for mocking during unit testing or if you simply prefer the beauty of OOP., (*1)
DEPRECATION NOTICE
This library is no longer maintained and its usage is discouraged. As a replacement, please take a look at Dreamscapes/Ldap-Core which offers similar functionality., (*2)
Features
- Class Ldap\Ldap provides function encapsulation of all important php ldap_* functions
- Class Ldap\Option provides you with a known ldap options as class constants
- Class Ldap\Response provides a nice way to handle server responses
- Class Ldap\ResponseCode defines most of the known server response codes for you to use in your implementations
Installation
Requirements
Via Composer
composer require alaneor/ldap:dev-master
( visit Packagist for list of all available versions ), (*3)
Documentation
You use the Ldap\Ldap
class to connect to an ldap server. Simply construct the instance with the proper server hostname/IP address and optional port ( default is 389 ) and then use any of the below described functions to work with the connection., (*4)
Example code
// Include Composer's autoloader
include 'vendor/autoload.php';
// Open the ldap connection
$link = new Ldap\Ldap( 'example.com', 389 );
// Authenticate the connection with the Admin account
$link->bind( 'CN=Admin,DC=example,DC=com', 'MySecretPwd!' );
// List the items that are in the baseDN
$response = $link->ldap_list( 'DC=example,DC=com', 'objectclass=*', ['name', 'objectclass'] );
// Take a look at the structure of the Ldap\Response instance
print_r( $response );
Method naming
There are a few rules that generally apply to the method names and their parameters., (*5)
- A method's name is the function's name, stripped of the leading ldap_ prefix. Where a syntax error would occur ( e.g. ldap_list -> list or ldap_8859_to_t61 -> 8859_to_t61 ) the prefix is kept.
- The
resource $link_identifier
parameter is omitted in all situations ( the link identifier is stored in the instance of Ldap\Ldap
class ).
- Where a
resource $result_identifier
is expected, you pass an instance of Ldap\Response
class ( e.g. in the Ldap\Ldap::sort()
method ) that is returned for all ldap method calls.
- For all other function parameters and its default values, standard php documentation applies.
There are two exceptions to the above naming rules:, (*6)
The pagination control request is even shorter, for your convenience:
ldap_control_paged_result
-> Ldap\Ldap::paged_result()
, (*7)
Since list
cannot be used as method name, all lookup functions are defined with their prefixes to keep them consistent:
ldap_search
-> Ldap\Ldap::ldap_search()
ldap_list
-> Ldap\Ldap::ldap_list()
ldap_read
-> Ldap\Ldap::ldap_read()
, (*8)
Defined methods:
Here's a list of methods you can use., (*9)
Class methods
Class methods do not return an instance of Ldap\Response but directly the output of the mapped function., (*10)
Ldap\Ldap::dn2ufn()
Ldap\Ldap::err2str()
Ldap\Ldap::explode_dn()
Ldap\Ldap::ldap_8859_to_t61()
Ldap\Ldap::t61_to_8859()
Instance methods
-
Ldap\Ldap::resource()
-> get the ldap resource identifier
-
Ldap\Ldap::rootDSE()
-> read the rootDSE entry of the ldap server
Ldap\Ldap::add()
Ldap\Ldap::bind()
Ldap\Ldap::compare()
Ldap\Ldap::delete()
Ldap\Ldap::get_option()
Ldap\Ldap::ldap_list()
Ldap\Ldap::ldap_read()
Ldap\Ldap::ldap_search()
Ldap\Ldap::mod_add()
Ldap\Ldap::mod_del()
Ldap\Ldap::mod_replace()
Ldap\Ldap::modify()
Ldap\Ldap::paged_result()
Ldap\Ldap::rename()
Ldap\Ldap::sasl_bind()
Ldap\Ldap::set_option()
Ldap\Ldap::set_rebind_proc()
Ldap\Ldap::sort()
Ldap\Ldap::start_tls()
Ldap\Ldap::unbind()
Response structure
Each method call returns new instance of the Ldap\Response
class., (*11)
The structure of the response is as follows:, (*12)
-
Ldap\Response::result
- Whatever the ldap function returned, either a boolean, a resource or anything else
-
Ldap\Response::data
- If a function returned a resource, the actual ldap data will be already extracted here
-
Ldap\Response::code
- The ldap response code of the operation performed
-
Ldap\Response::message
- The ldap response message that corresponds to the response code
-
Ldap\Response::referrals
- If the server responds with referrals, you will find them here
-
Ldap\Response::cookie
- For paged result responses, a cookie will be here, if returned from server
-
Ldap\Response::estimated
- The estimated number of objects remaining to return from server when doing paged searches ( not all ldap implementations return this value )
-
Ldap\Response::matchedDN
- Not much is known here; read php's documentation about ldap_parse_result()
Not all properties have values in all situations - some of them are only present when doing specific actions, like the cookie - it will only be present when pagination is enabled, a lookup operation has been executed and the server returned a cookie., (*13)
License
This software is licensed under the BSD (3-Clause) License.
See the LICENSE file for more information., (*14)