phonetworks / pho-kernel
一个简单的微内核实现,具有类似Twitter的功能。
Requires
- php: ^7.1
- pho-adapters/database-redis: dev-master
- pho-adapters/events-local: dev-master
- pho-adapters/index-redis: dev-master
- pho-adapters/storage-filesystem: dev-master
- pho-recipes/basic: dev-master
- phonetworks/pho-microkernel: dev-master
- vlucas/phpdotenv: ^2.4
This package is not auto-updated.
Last update: 2024-09-29 04:24:02 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
入门
- 确保您的.env文件功能正常;正确地处理您的服务器。
- 在终端上运行
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());
使用自定义配方
如果您希望内核在自定义配方上运行,则必须
- 克隆此存储库。
git clone https://github.com/phonetworks/pho-kernel
- 更改composer.json文件,并将
pho-recipes/basic
替换为您自定义的配方存储库。 - 运行
composer install
以完成依赖项。 - 按照“入门”部分中描述的步骤操作。
预设目录包含自定义的composer.json文件,您可以将它们复制/粘贴到现有的composer.json文件中。这样,您只需几步就能运行Facebook或Twitter的克隆版。
然而,如果您目标是运行一个完全定制的配方,那么首先您需要
- 形成这个配方(可能通过克隆https://github.com/pho-recipes仓库中的一个现有配方)。
- 通过将其上传到https://packagist.org.cn将您的配方制作成一个composer包。
- 在composer.json中将
pho-recipes/basic
替换为您的自定义配方仓库。 - 运行
composer install
以完成依赖项。 - 按照“入门”部分中描述的步骤操作。
kernel.php文件
如果您在自定义的编译好的pgql文件集上运行pho-kernel,请确保
- Kernel配置中的
default_objects
变量(如kernel.php中的$configs
所示)设置了合适的"graph"和"user"类。 - 在启动内核之前,会初始化一个自定义创始人对象,并将其作为参数传递给
boot
方法。
许可证
MIT许可证,见LICENSE。