stardothosting / pendulum
一个用于将数据导入PHP应用程序的框架无关库
Requires
- mockery/mockery: 1.3.*
Requires (Dev)
- orchestra/testbench: ^3.6
- phpunit/phpunit: ^7.0
README
一个用于将数据导入PHP应用程序的框架无关库
Pendulum 允许您从文件、API、数据存储或其他任何您想要拉取信息的地方导入数据到您的应用程序中。只需指定数据源并提供一个函数,说明如何将数据导入您的特定应用程序,Pendulum 将处理其余部分!
Pendulum 使用 PHP 迭代器 作为数据源,这意味着它将与任何 PHP 标准库迭代器 或任何实现了 Iterator 接口的数据源无缝工作。在大多数用例中,数据源已经存在,因此您需要提供的所有代码只是一个小的函数,说明如何将此数据导入您的特定应用程序。
Pendulum 是框架无关的,这意味着它将与任何PHP 7代码库一起工作,但如果您在使用Laravel或基于Symfony的应用程序,可以使用预制的控制台应用程序从命令行导入数据,甚至可以安排cron作业。
安装
composer require stardothosting/pendulum
该库应通过Laravel包自动发现功能自动安装。
指定您的数据源
Pendulum 使用 PHP 迭代器 作为数据源,这意味着它可以使用任何 PHP 标准库迭代器 或任何实现了 Iterator 接口的自定义对象来导入数据。
创建迭代器听起来太麻烦?Pendulum 还支持 PHP 生成器。您也可以简单地传递 pendulum 一个 PHP 数组,尽管在这种情况下,这个库可能对您的需求来说是多余的。
指定您的导入类
Pendulum 接受任何实现了 Pendulum ImporterInterface 类的对象或类。该接口(如下所示)有一个方法,processItem,它指定了如何将数据导入您的应用程序。
成功、失败和重复都是应用程序特定的信息,因此 processItem 方法期望返回值是以下接口中列出的常量之一。此返回值让 Pendulum 知道您的应用程序是否能够导入此项。
interface ImporterContract
{
// Successfully imported item
const IMPORT_SUCCESS = 1;
// Failed to import item
const IMPORT_FAILED = -1;
// Item was already imported
const ALREADY_IMPORTED = 0;
/**
* Import a single piece of data into your application
* Returns one of the following constants
* ImporterContract::IMPORT_SUCCESS -- We imported the data sucessfully
* ImporterContract::IMPORT_FAILED -- We failed to import this item
* ImporterContract::ALREADY_IMPORTED -- This is a duplicate item
*
* @param PendulumContract $item The item you want to import into the system
* @return integer returns one of the constants listed in the ImporterContract Interface
*/
public function processItem(&$item);
}
指定输出写入器
Pendulum 可以通过提供实现了 Pendulum OutputContract 接口的类来将当前导入的信息输出给用户。只需在您选择的对象中实现此接口,并在实例化基本 Pendulum 类时将此对象作为依赖项传递。有关更多信息,请参阅“在您的应用程序中实例化和使用 Pendulum”。如果没有提供实现了 Pendulum OutputContract 的类,则默认使用 NullOutputWriter,并将丢弃任何打算供用户使用的输出。
在您的应用程序中实例化和使用 Pendulum
实例化 Pendulum 时,我们需要指定
- 一个实现 PHP 迭代器 接口的类,该类将用作数据源来提取我们希望导入到应用程序中的数据
- 一个实现 Pendulum ImporterContract 接口的数据导入类。将保存我们想要导入到应用程序中的数据
- (可选)一个实现 Pendulum OutputWriter 接口的输出写入器类,将向最终用户显示数据。
这些接口可以通过单个“大类”实现,也可以根据需要拆分为多个类。摆锤构造函数可以接受任意数量的参数,因此您可以根据需要拆分接口,只要您提供实现上述接口的对象即可。