This is an old revision of the document!
PHP RFC: LDAP EXOP
- Version: 0.1
- Date: 2017-06-26
- Author: Côme Chilliet, firstname.lastname@example.org
- Status: Draft
- First Published at: http://wiki.php.net/rfc/ldap_exop
LDAP is a broad-use standard for storing information in a tree-style manner and access it efficiently. It is especially famous for storing user accounts. EXOP are extended operations which goes further than reading/writing LDAP nodes. PHP have php-ldap module for connecting to an LDAP server and read/write datas but no way of doing EXOP operations.
This RFC intends to add support for EXOP in php-ldap. It is based on a patch for php-ldap which is more than 10 years old and we are trying to adapt it for current code base.
mixed ldap_exop(resource $link, string $reqoid [, string $reqdata [, string &$retoid [, string &$retdata]]])
Returns FALSE upon failure, TRUE upon success if $retoid is provided, and a result object otherwise (success with 3 params or less).
bool ldap_parse_exop(resource $link, resource $result [, string &$retoid [, string &$retdata]])
Returns TRUE upon success and FALSE upon failure. Fills $retoid and $retdata with the data from $result object.
Backward Incompatible Changes
Proposed PHP Version(s)
7.2 if possible, 7.3/8 otherwise
To Existing Extensions
Only php-ldap will be affected.
The following constants will be added, containing string OIDs for the following extended operations:
- LDAP_EXOP_START_TLS - START_TLS (RFC 4511)
- LDAP_EXOP_MODIFY_PASSWD - PASSWD (RFC 3062)
- LDAP_EXOP_REFRESH - REFRESH (RFC 2589)
- LDAP_EXOP_WHO_AM_I - WHO_AM_I (RFC 4532)
- LDAP_EXOP_TURN - TURN (RFC 4531)
- Should the function names contain the word “exop” or is it a technical detail which should be hidden from the developer?
- Should we include a constant for LDAP_EXOP_REFRESH, for the sake of completeness, even if this EXOP won’t be used by PHP code as all PHP LDAP operations are synchrone (in the current code state).
Unaffected PHP Functionality
All already existing ldap related methods stays the same. This RFC only adds new ones.
Support for more EXOP could be added by adding other helper methods or other oid constants. Support for clients/servers controls should be added but will be part of an other RFC.
Proposed Voting Choices
Include these so readers know where you are heading and can discuss the proposed voting options.
State whether this project requires a 2/3 or 50%+1 majority (see voting)
Patches and Tests
After the project is implemented, this section should contain
- the version(s) it was merged to
- a link to the git commit(s)
- a link to the PHP manual entry for the feature
- a link to the language specification section (if any)