lin3s / knowledge-base
构建知识库的PHP组件
Requires
- php: >=5.4
- erusev/parsedown: ^1.5
- symfony/filesystem: ^2.7
- symfony/finder: ^2.7
Requires (Dev)
- phpspec/phpspec: ^2.3
This package is not auto-updated.
Last update: 2024-09-14 18:20:27 UTC
README
##知识库组件
PHP组件,可轻松从您的标记文件构建知识库。
##安装 确保您的计算机已安装composer。
运行以下composer命令安装组件
$ composer require lin3s/knowledge-base
为您的知识库安装主题。我们在LIN3S使用以下主题
$ composer require lin3s/knowledge-base-GFMTemplate
将文档(以markdown格式)添加到您稍后将其添加到配置的文件夹中。
##集成到您的代码库 前端控制器应如下所示
<?php require_once __DIR__ . '/../vendor/autoload.php'; use LIN3S\KnowledgeBase\Configuration; use LIN3S\KnowledgeBase\Controller\PageController; use LIN3S\KnowledgeBaseGFMTemplate\Template; use Symfony\Component\HttpFoundation\Request; $buildPath = realpath(dirname(__FILE__)) . '/build'; // Folder where all the cached files will be stored $docsPath = realpath(dirname(__FILE__)) . '/docs'; // Folder where all the docs are located $configuration = new Configuration($docsPath, $buildPath, new Template()); $controller = new PageController($configuration); $request = Request::createFromGlobals(); if (preg_match('/\.(?:png|jpg|jpeg|gif|css|js)$/', $request->server->get('REQUEST_URI'))) { $response = $controller->assetAction($request); } else { $response = $controller->documentAction($request); } $response->send();
您可以根据需要编辑以匹配您的需求
##生成文档 LIN3S知识库,将所有已生成的markdown文件缓存为html以提高性能。
只需创建一个docs.php
文件,包含以下内容以从markdown文件生成菜单和html
#!/usr/bin/env php <?php require_once __DIR__ . '/../vendor/autoload.php'; use LIN3S\KnowledgeBase\Configuration; use LIN3S\KnowledgeBaseGFMTemplate\Template; use LIN3S\KnowledgeBase\Registry\GeneratorRegistry; use LIN3S\KnowledgeBase\Generator\HTMLGenerator; use LIN3S\KnowledgeBase\Generator\MenuGenerator; use LIN3S\KnowledgeBase\Builder\DocumentationBuilder; use LIN3S\KnowledgeBase\Iterator\DocumentIterator; $docsPath = realpath(dirname(__FILE__)) . '/../docs'; $buildPath = realpath(dirname(__FILE__)) . '/../build'; $configuration = new Configuration($docsPath, $buildPath, new Template()); $generatorRegistry = new GeneratorRegistry(); $generatorRegistry ->add('html', new HTMLGenerator($this->configuration)) ->add('route', new MenuGenerator($this->configuration)); $builder = new DocumentationBuilder( new DocumentIterator($this->configuration), $generatorRegistry ); $builder->build();
现在只需运行以下命令
$ php docs.php
您需要创建一个符号链接以匹配您使用的模板的资产url。
##主题 创建自己的主题,只需创建一个实现LIN3S\KnowledgeBase\Templating\TemplateInterface
的类,并将其作为命令和控制器使用的配置类的第三个参数传递。
模板渲染与Loader
类协同工作。此类负责获取生成页面所需的所有数据。`DefaultLoader`生成一个包含菜单树、转换为html的文档和配置类的数组。
###文档构建 文档构建的入口点是位于`DocumentationBuilder`类中的,它接收一个`DocumentIterator`和一个`GeneratorRegistry`实例。前者包含需要解析的所有文档的引用,后者包含构建过程中所需的所有生成器。
如果您想添加自定义生成器,实现`GeneratorInterface`并将其添加到`GeneratorRegistry`中,然后再传递给`DocumentationBuilder`。
上面的“生成文档”部分以代码描述了整个流程。