正如标题所说,当我尝试使用ldap_sort()它返回的方法时deprecated method
为什么 ?有同等的吗?
是否可以在过滤器中对 AZ 进行排序?
ldap_sort基于现已弃用多年的 C 函数。由于ldap_sort通常不会像大多数人想象的那样,我们决定也弃用 PHP 函数。
特别是当结果也可以通过用户态代码实现时。请查看https://github.com/zendframework/zend-ldap/blob/master/src/Collection/DefaultIterator.php#L379-L403,了解我们如何在 zend-ldap 中解决此问题。您可以使用任何排序函数来获得您喜欢的排序,并且不受内部实现的排序算法的约束ldap_sort,但没有人真正知道它是如何排序的。
当您使用用户土地功能进行排序时,您可以准确地实现特殊情况所需的排序。按多个属性排序、排序不区分大小写等等。
另一种方法是使用服务器端排序
a) 需要我们在 PHP C 代码中实现 LDAP-COntrols(目前尚未完成),b) 需要服务器来实现
此功能当前在 PHP 中不可用,因为我们(尚未)设法完成该功能。这是更好的解决方案,但由于它不一定在服务器上可用,您可能仍然希望在客户端进行排序。当您使用分页结果进行多次搜索时,您仍然需要手动对结果进行排序。
因此ldap_sort由于某些原因已被弃用,但它仍然可用。它将在所有 PHP 7.x 分支中可用。但您应该使用不同的排序解决方案。我们希望能够在 PHP 8 中提供服务器端排序(虽然不知道何时到期),但这可能对您没有帮助,因为它取决于服务器的功能。
因此,获取结果,将它们添加到数组中并为该数组实现排序函数是您可以做的最简单的事情,并且排序算法正是您想要的!
免责声明:我是实施 DEPRECATED-Warning 的人
您可以看到,根据PHP ldap_sort 文档:
对 ldap_search() 返回的 LDAP 搜索结果进行排序。
由于此函数在客户端对返回值进行排序,因此如果达到服务器或 ldap_search() 中定义的大小限制,您可能无法获得预期结果。
警告:自 PHP 7.0.0 起,此功能已被弃用。强烈建议不要依赖此功能。
另外,根据Github 中的 PHP Compatibility DeprecatedFunctionsSniff Doc:
'ldap_sort' => array(
'7.0' => false,
'alternative' => null,
),
Run Code Online (Sandbox Code Playgroud)
在此测试用例中,它的编写方式
ldap_sort将从 PHP 7.0 版本开始弃用,并且意味着alternative = NULL没有其他选择
回答你的另一个问题
是否可以在过滤器中对 AZ 进行排序?
RFC 2891中定义的 LDAP 协议LDAP Control Extension for Server Side Sorting of Search Results。如果实现了此控制,您将必须检查您使用的 LDAP 实现(因为它没有标记在问题上)
| 归档时间: |
|
| 查看次数: |
8119 次 |
| 最近记录: |