alaneor/ldap

该软件包已被废弃,不再维护。作者建议使用dreamscapes/ldap-core软件包。

php的ldap函数的简单类封装

0.4.1 2013-10-28 17:29 UTC

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 );

方法命名

有一些规则通常适用于方法名称及其参数。

  1. 方法名称是函数名称,去除了前缀ldap_。在可能发生语法错误的地方(例如,ldap_list -> listldap_8859_to_t61 -> 8859_to_t61),保留前缀。
  2. 在所有情况下省略了参数resource $link_identifier(链接标识符存储在Ldap\Ldap类的实例中)。
  3. 当期望resource $result_identifier时,您传递一个Ldap\Response类的实例(例如在Ldap\Ldap::sort()方法中),该实例返回所有ldap方法调用。
  4. 对于所有其他函数参数及其默认值,适用标准的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 - 对于分页结果响应,如果服务器返回,则将在这里找到 cookie
  • Ldap\Response::estimated - 在进行分页搜索时,从服务器返回的剩余对象估计数量(并非所有 ldap 实现都返回此值)
  • Ldap\Response::matchedDN - 这里了解不多;请参阅 php 的文档关于 ldap_parse_result()

并非所有属性在所有情况下都有值 - 一些属性仅在执行特定操作时才存在,例如 cookie - 它仅在启用分页且执行了查找操作且服务器返回了 cookie 时才存在。

许可

本软件根据 BSD (3-Clause) 许可证 许可。有关更多信息,请参阅 LICENSE 文件。