indiana-university / iukb-api-php
一套类,用于将IU知识库中的文档拉取到您的应用中
v2.3
2021-10-18 17:12 UTC
Requires
- php: ^7.1 | ^8
- doctrine/cache: ^1.8
- guzzlehttp/guzzle: ^7
Requires (Dev)
- phpstan/phpstan: ^0.12
- phpunit/phpunit: ^9
- squizlabs/php_codesniffer: ^3.6
This package is auto-updated.
Last update: 2024-09-18 23:28:29 UTC
README
一套类,用于将IU知识库中的文档拉取到您的PHP应用中
要求
- PHP 7或8
- Composer
- 知识库REST账户
- 有关更多信息,请参阅知识库REST API文档
用法
要实例化KB类,您只需提供一个提供者。这是一个实例,它将从某个地方拉取KB数据并将其馈送到主KB类。目前有三种不同的提供者,但其中一个是提供缓存的中间类。两个实际的数据提供者是Filesystem
和Web
。
Filesystem
Filesystem
类用于测试目的,但也可以以与缓存类中实现不同的方式提供缓存。例如,如果您需要在显示KB文档之前修改其内容。您可以在磁盘上的某个位置保存结果,并通过Filesystem
提供者加载它。
require(__dir__ . '/vendor/autoload.php'); use \Edu\Iu\Uits\KnowledgeBase\Provider\Filesystem\Filesystem; $provider = new Filesystem(__dir__ . '/kbCache/');
Web
Web
类用于从知识库REST API加载数据。它需要凭据以认证到REST API。
require(__dir__ . '/vendor/autoload.php'); use \Edu\Iu\Uits\KnowledgeBase\Provider\Web\Web; $provider = new Web('https://rest.kb.iu.edu', 'username', 'password');
实例化KB类
require(__dir__ . '/vendor/autoload.php'); use \Edu\Iu\Uits\KnowledgeBase\KnowledgeBase; use \Edu\Iu\Uits\KnowledgeBase\Provider\Web\Web; $provider = new Web('https://rest.kb.iu.edu', 'username', 'password'); $kb = new KnowledgeBase($provider);
缓存
在之前的版本中,缓存是内置于主类中的,但最终的实现相当混乱。它还迫使用户使用缓存,即使他们不想这样做。现在,缓存由一个单独的中间提供者提供。
缓存类需要提供者、缓存对象和TTL。默认的TTL时间为3600秒。
请注意,缓存提供者还会缓存搜索结果。它将在TTL后始终刷新搜索结果缓存,因为没有方法检查搜索结果是否已更改。
require(__dir__ . '/vendor/autoload.php'); use \Doctrine\Common\Cache\ApcuCache; use \Edu\Iu\Uits\KnowledgeBase\KnowledgeBase; use \Edu\Iu\Uits\KnowledgeBase\Provider\{ Caching\Caching, Web\Web, }; $kb_provider = new Web('https://rest.kb.iu.edu', 'username', 'password'); $cache = new ApucCache(); $provider = new Caching($kb_provider, $cache); $kb = new KnowledgeBase($provider);
获取文档
$doc = $kb->getDocument('rest'); echo $doc->getContent();
搜索KB
$search = $kb->getSearch('outlook'); foreach ($search->getResults() as $result) { echo "[{$result->getDocid()}] {$result->getTitle()}" . PHP_EOL; }
贡献
以github pull request的形式欢迎贡献。请注意,为了保持一致性,请在您希望为此项目贡献的任何代码上运行composer check
和composer run-tests
,并修复和解决找到的任何问题。