kunicmarko/importer 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

kunicmarko/importer

最新稳定版本:0.2.0

Composer 安装命令:

composer require kunicmarko/importer

包简介

Importer that can handle different file types.

README 文档

README

Easier import from multiple file types (csv, json, xml, excel).

Support for Symfony, Lumen and Laravel.

PHP Version Latest Stable Version Latest Unstable Version

Build Status Coverage Status

Documentation

Installation

1. Add dependency with composer

composer require kunicmarko/importer

Symfony

Register the bundle in your config/bundles.php

return [
    //...
    KunicMarko\Importer\Bridge\Symfony\ImporterBundle::class => ['all' => true],
];

By default, excel import is disabled, install "phpoffice/phpspreadsheet" to enable it.

Laravel

Register the service provider in your config/app.php

providers' => [
    //...
    KunicMarko\Importer\Bridge\Laravel\ImporterServiceProvider::class,
],

By default, excel import is disabled, install "phpoffice/phpspreadsheet" to enable it.

Lumen

Register the service provider in your bootstrap/app.php

$app->register(KunicMarko\Importer\Bridge\Lumen\ImporterServiceProvider::class);

By default, excel import is disabled, install "phpoffice/phpspreadsheet" to enable it.

Without Framework

Add the Readers you want to use to a Factory and get your Importer:

use KunicMarko\Importer\ImporterFactory;
use KunicMarko\Importer\Reader\CsvReader;
use KunicMarko\Importer\Reader\JsonReader;
use KunicMarko\Importer\Reader\XmlReader;
use KunicMarko\Importer\Reader\XlsxReader;

$importerFactory = new ImporterFactory();

$importerFactory->addReader(new CsvReader());
$importerFactory->addReader(new JsonReader());
$importerFactory->addReader(new XmlReader());
$importerFactory->addReader(new XlsxReader());

$importer = $importerFactory->getImporter('csv');
$importer->fromString('some,csv,string')
    ->useImportConfiguration(new YourImportConfiguration())
    ->import();

If you want to use excel import, install "phpoffice/phpspreadsheet".

How to use

ImportConfiguration

ImportConfiguration defines how should the data be mapped and saves the data. They have to implement KunicMarko\Importer\ImportConfiguration interface.

use KunicMarko\Importer\ImportConfiguration;

class ImportUserConfiguration implements ImportConfiguration
{
    public function map(array $item, array $additionalData)
    {
        $user = new User();
        
        $user->setUsername($item['username']);
        //..

        return $user;
    }

    public function save(array $items, array $additionalData): void
    {
        //save your users
    }
}

BeforeImport

BeforeImport allows your ImportConfiguration to do something with data before the mapping starts.

use KunicMarko\Importer\ImportConfiguration;
use KunicMarko\Importer\BeforeImport;
use Iterator;

class ImportSomethingConfiguration implements ImportConfiguration, BeforeImport
{
    public function before(Iterator $items, array $additionalData): Iterator
    {
        //start from 2nd line
        $items->next();

        return $items;
    }
}

ChunkImport

ChunkImport allows your configuration to define a number of items that the save method will receive, instead of receiving all at once.

use KunicMarko\Importer\ImportConfiguration;
use KunicMarko\Importer\ChunkImport;

class ImportChunkSomethingConfiguration implements ImportConfiguration, ChunkImport
{
    public function chunkSize(): int
    {
        return 50;
    }

    public function save(array $items, array $additionalData): void
    {
        //save will be called multiple times with 50 or less items
    }
}

Import

After you have defined your import configuration, you can import from a file or from a string. You HAVE to provide one of those 2 options and your import configuration.

Import From File

use KunicMarko\Importer\ImporterFactory;

class UserImport
{
    private $importerFactory;

    public function __construct(ImporterFactory $importerFactory)
    {
        $this->importerFactory = $importerFactory;
    }
    
    public function import()
    {
        $importer = $importerFactory->getImporter('csv');

        $importer->fromFile('path/to/file.csv')
            ->useImportConfiguration(new YourImportConfiguration())
            ->import();
    }
}

Import From String

use KunicMarko\Importer\ImporterFactory;

class UserImport
{
    private $importerFactory;

    public function __construct(ImporterFactory $importerFactory)
    {
        $this->importerFactory = $importerFactory;
    }
    
    public function import()
    {
        $importer = $importerFactory->getImporter('csv');

        $importer->fromString('some,csv,string')
            ->useImportConfiguration(new YourImportConfiguration())
            ->import();
    }
}

Excel import does not support import from a string.

Pass Additional Data

Sometimes you may want to pass additional data to your import configuration.

use KunicMarko\Importer\ImporterFactory;

class UserImport
{
    private $importerFactory;

    public function __construct(ImporterFactory $importerFactory)
    {
        $this->importerFactory = $importerFactory;
    }
    
    public function import()
    {
        $importer = $importerFactory->getImporter('csv');

        $importer->fromString('some,csv,string')
            ->useImportConfiguration(new YourImportConfiguration())
            ->withAdditionalData(['user' => 'kunicmarko20'])
            ->import();
    }
}

Extending

You can always add your own custom readers, just implement KunicMarko\Importer\Reader\Reader interface and call addReader() method on ImporterFactory.

统计信息

  • 总下载量: 10.3k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 4
  • 点击次数: 0
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 4
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-07-09

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固