alaneor / ldap
Requires
- php: >=5.4.0
- ext-ldap: *
- dreamscapes/enumeration: ~0.2
This package is not auto-updated.
Last update: 2022-02-01 12:26:54 UTC
README
这个库提供了php的ldap函数的类封装。这可能对单元测试期间的模拟或如果你更喜欢OOP的美丽非常有用。
弃用通知
此库不再维护,其使用被建议。作为替代,请查看Dreamscapes/Ldap-Core,它提供了类似的功能。
功能
- Ldap\Ldap类提供了所有重要的php ldap_* 函数的封装
- Ldap\Option类为您提供了已知的ldap选项作为类常量
- Ldap\Response类提供了一个处理服务器响应的好方法
- Ldap\ResponseCode定义了您在实现中使用的已知服务器响应代码的大部分
安装
要求
通过Composer
composer require alaneor/ldap:dev-master
(访问Packagist获取所有可用版本的列表)
文档
您使用Ldap\Ldap类连接到ldap服务器。只需使用适当的服务器主机名/IP地址和可选端口(默认为389)构造实例,然后使用以下描述的任何函数来处理连接。
示例代码
// 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 );
方法命名
有一些规则通常适用于方法名称及其参数。
- 方法名称是函数名称,去除了前缀ldap_。在可能发生语法错误的地方(例如,ldap_list -> list 或 ldap_8859_to_t61 -> 8859_to_t61),保留前缀。
- 在所有情况下省略了参数
resource $link_identifier
(链接标识符存储在Ldap\Ldap类的实例中)。 - 当期望
resource $result_identifier
时,您传递一个Ldap\Response类的实例(例如在Ldap\Ldap::sort()方法中),该实例返回所有ldap方法调用。 - 对于所有其他函数参数及其默认值,适用标准的PHP文档。
以上命名规则有两个例外
分页控制请求更短,方便您使用
ldap_control_paged_result
-> Ldap\Ldap::paged_result()
由于list
不能用作方法名称,所有查找函数都使用其前缀定义,以保持一致性
ldap_search
-> Ldap\Ldap::ldap_search()
ldap_list
-> Ldap\Ldap::ldap_list()
ldap_read
-> Ldap\Ldap::ldap_read()
定义的方法
以下是您可以使用的函数列表。
类方法
类方法不会返回 Ldap\Response 的实例,而是直接返回映射函数的输出。
Ldap\Ldap::dn2ufn()
Ldap\Ldap::err2str()
Ldap\Ldap::explode_dn()
Ldap\Ldap::ldap_8859_to_t61()
Ldap\Ldap::t61_to_8859()
实例方法
Ldap\Ldap::resource()
-> 获取 ldap 资源标识符Ldap\Ldap::rootDSE()
-> 读取 ldap 服务器的 rootDSE 条目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()
响应结构
每次方法调用都会返回 新的 Ldap\Response 类实例。
响应的结构如下
Ldap\Response::result
- ldap 函数返回的任何内容,无论是布尔值、资源还是其他内容Ldap\Response::data
- 如果函数返回资源,实际 ldap 数据将已提取并存储在这里Ldap\Response::code
- 执行操作时返回的 ldap 响应代码Ldap\Response::message
- 对应于响应代码的 ldap 响应消息Ldap\Response::referrals
- 如果服务器返回引用,您将在这里找到它们Ldap\Response::cookie
- 对于分页结果响应,如果服务器返回,则将在这里找到 cookieLdap\Response::estimated
- 在进行分页搜索时,从服务器返回的剩余对象估计数量(并非所有 ldap 实现都返回此值)Ldap\Response::matchedDN
- 这里了解不多;请参阅 php 的文档关于 ldap_parse_result()
并非所有属性在所有情况下都有值 - 一些属性仅在执行特定操作时才存在,例如 cookie - 它仅在启用分页且执行了查找操作且服务器返回了 cookie 时才存在。
许可
本软件根据 BSD (3-Clause) 许可证 许可。有关更多信息,请参阅 LICENSE 文件。