lin3s/knowledge-base

构建知识库的PHP组件

v0.1.6 2015-10-05 09:25 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:20:27 UTC


README

##知识库组件

PHP组件,可轻松从您的标记文件构建知识库。

SensioLabsInsight Build Status Scrutinizer Code Quality Total Downloads      Latest Stable Version Latest Unstable Version

##安装 确保您的计算机已安装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`。

上面的“生成文档”部分以代码描述了整个流程。

## 许可选项 License