phonetworks/pho-kernel

一个简单的微内核实现,具有类似Twitter的功能。

资助包维护!
Open Collective

安装量: 5,353

依赖项: 2

建议者: 0

安全: 0

星标: 4

关注者: 2

分支: 1

开放问题: 3

类型:项目

3.0.0 2018-10-26 23:47 UTC

README

pho-kernel

默认情况下,pho-kernel是一个简单的微内核实现,具有类似Twitter的功能。您可以通过从预设目录中复制/粘贴新的配方来简单地更改功能。有关更多信息,请查看README文件下面的“使用自定义配方”。

要求

默认的pho-kernel需要

您也可以使用Vagrant来测试pho-kernel。有关更多信息,请查看“测试”部分。

Pho-Kernel曾经依赖于Neo4j服务器3.1+进行索引。从版本3.0开始不再依赖。但如果您更喜欢更高级的Cypher查询,仍然可以使用它。

如果您将使用Neo4J进行索引,请确保将您的.env文件更改为包含INDEX_TYPE="neo4j"而不是INDEX_TYPE="redis"。

测试

测试允许您在没有用Redis和Neo4j等服务器膨胀系统的情况下了解pho-kernel。但是,您仍然需要安装Vagrant

一旦您有了Vagrant,只需在pho-kernel安装目录中输入以下内容

vagrant up
vagrant ssh # this will open a new session, continue from there.
cd /opt/pho-kernel
yes | cp presets/basic ./composer.json
composer install # this may take a while to operate
php -a # this will also open a new session.
include("kernel.php");

现在您可以对内核进行操作。有关更多信息,请查看“入门”部分。

安装

推荐通过composer安装pho-kernel。

假设,您想在名为test-dir的目录下安装内核。在终端中输入以下内容

composer create-project -s "dev" phonetworks/pho-kernel test-dir

这将安装pho-kernel及其依赖项。安装完成后,阅读/编辑引导脚本kernel.php。引导脚本的唯一目的是

  • 设置服务器(例如Neo4J、Redis、记录器等),这些服务器由在.env文件中设置的环境变量给出。
  • 提供给您$kernel,您可以使用它来与您的图进行交互,或嵌入另一个环境(例如REST服务器)以获得更多功能。

您还需要设置一个.env文件来指导内核使用哪些服务。一个示例.env文件作为.env.example提供。只需将其复制/粘贴为.env,即可开始使用基本功能。

cp .env.example .env
# vi .env # if necessary

入门

  1. 确保您的.env文件功能正常;正确地处理您的服务器。
  2. 在终端上运行php -a以切换到PHP外壳。然后,
include("kernel.php"); // this will set it up.

echo $founder; // will dump the founder's ID.
echo $graph; // will dump the graph's ID.

$tweet = $founder->post("My first tweet"); // let's create a tweet.

$new_user = new \PhoNetworksAutogenerated\User($kernel, $graph, "my_password"); // let's create our first user object.
$new_user->like($tweet); // the user likes the one and only tweet in the graph.

// Now examine these:
var_dump($tweet->getLikers());
var_dump($tweet->getAuthors());
var_dump($new_user->getLikes());
var_dump($founder->getPosts());

使用自定义配方

如果您希望内核在自定义配方上运行,则必须

  1. 克隆此存储库。 git clone https://github.com/phonetworks/pho-kernel
  2. 更改composer.json文件,并将pho-recipes/basic替换为您自定义的配方存储库。
  3. 运行composer install以完成依赖项。
  4. 按照“入门”部分中描述的步骤操作。

预设目录包含自定义的composer.json文件,您可以将它们复制/粘贴到现有的composer.json文件中。这样,您只需几步就能运行Facebook或Twitter的克隆版。

然而,如果您目标是运行一个完全定制的配方,那么首先您需要

  1. 形成这个配方(可能通过克隆https://github.com/pho-recipes仓库中的一个现有配方)。
  2. 通过将其上传到https://packagist.org.cn将您的配方制作成一个composer包。
  3. composer.json中将pho-recipes/basic替换为您的自定义配方仓库。
  4. 运行composer install以完成依赖项。
  5. 按照“入门”部分中描述的步骤操作。

kernel.php文件

如果您在自定义的编译好的pgql文件集上运行pho-kernel,请确保

  1. Kernel配置中的default_objects变量(如kernel.php中的$configs所示)设置了合适的"graph"和"user"类。
  2. 在启动内核之前,会初始化一个自定义创始人对象,并将其作为参数传递给boot方法。

许可证

MIT许可证,见LICENSE