icewind / searchdav
sabre/dav 插件,用于实现 rfc5323 SEARCH
v3.1.0
2023-11-14 22:32 UTC
Requires
- php: >=7.3 || >=8.0
- sabre/dav: ^4.0.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2
- php-parallel-lint/php-parallel-lint: ^1.0
- phpstan/phpstan: ^0.12
- phpunit/phpunit: ^8
- psalm/phar: ^4.3
README
一个 sabre/dav 插件,用于实现 rfc5323 SEARCH
使用方法
该插件实现了 rfc 中的 DAV 特定部分,但将实际的搜索实现留给插件的用户。
这是通过实现 \SearchDAV\Backend\ISearchBackend
接口并在构造过程中传递给插件来完成的。
基本使用
$server = new \Sabre\DAV\Server(); $server->addPlugin(new \SearchDAV\DAV\SearchPlugin(new MySearchBackend())); $server->exec();
术语
rfc 使用以下术语来描述搜索处理的各个部分
-
搜索范围:被查询的 DAV 资源。
-
搜索仲裁者:SEARCH 请求可以发送到的端点。
注意,单个搜索仲裁者可以支持在多个范围内进行搜索
-
搜索语法:某个范围内支持的类型搜索查询
rfc5323 要求任何实现至少实现 "basicsearch",这也是该插件目前唯一支持的语法
-
搜索模式:如何使用搜索语法的详细信息,例如可以搜索的支持属性
ISearchBackend
ISearchBackend
定义了仲裁端点、有效的查询范围、支持的搜索模式和实现了实际的搜索。
有关所需方法和其描述的完整列表,请参阅 ISearchBackend.php
查询
Query
类定义了客户端执行的查询,由四个部分组成
- 选择:请求的属性。
- 从:搜索应进行的范围。
- 条件:搜索的过滤参数。
- 排序:搜索结果应如何排序。
有关这些元素的更多信息,请参阅 Query.php
、Scope.php
、Operator.php
和 Order.php