Skip to content

Commit ae90e49

Browse files
authored
Add AfterBatch and AfterChunk event and refactor events (SpartnerNL#3993)
* Add AfterBatch and AfterChunk event and refactor events * Don't use reflection * Make protected * phpcs
1 parent d69d5d0 commit ae90e49

18 files changed

+302
-119
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ All notable changes to this project will be documented in this file.
44

55
## [Unreleased]
66

7+
### Added
8+
- AfterChunk and AfterBatch events
9+
710
### Fixed
811
- Bug preventing WithChunkReading from working with multiple sheets when using ToCollection or ToArray
912
- Row::toArray() now always respects the endColumn

src/ChunkReader.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
use Maatwebsite\Excel\Concerns\WithEvents;
1515
use Maatwebsite\Excel\Concerns\WithLimit;
1616
use Maatwebsite\Excel\Concerns\WithProgressBar;
17-
use Maatwebsite\Excel\Events\BeforeImport;
1817
use Maatwebsite\Excel\Files\TemporaryFile;
1918
use Maatwebsite\Excel\Imports\HeadingRowExtractor;
2019
use Maatwebsite\Excel\Jobs\AfterImportJob;
@@ -42,7 +41,7 @@ public function __construct(Container $container)
4241
*/
4342
public function read(WithChunkReading $import, Reader $reader, TemporaryFile $temporaryFile)
4443
{
45-
if ($import instanceof WithEvents && isset($import->registerEvents()[BeforeImport::class])) {
44+
if ($import instanceof WithEvents) {
4645
$reader->beforeImport($import);
4746
}
4847

src/Concerns/RegistersEventListeners.php

Lines changed: 19 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace Maatwebsite\Excel\Concerns;
44

5+
use Maatwebsite\Excel\Events\AfterBatch;
6+
use Maatwebsite\Excel\Events\AfterChunk;
57
use Maatwebsite\Excel\Events\AfterImport;
68
use Maatwebsite\Excel\Events\AfterSheet;
79
use Maatwebsite\Excel\Events\BeforeExport;
@@ -17,34 +19,25 @@ trait RegistersEventListeners
1719
*/
1820
public function registerEvents(): array
1921
{
22+
$listenersClasses = [
23+
BeforeExport::class => 'beforeExport',
24+
BeforeWriting::class => 'beforeWriting',
25+
BeforeImport::class => 'beforeImport',
26+
AfterImport::class => 'afterImport',
27+
AfterBatch::class => 'afterBatch',
28+
AfterChunk::class => 'afterChunk',
29+
ImportFailed::class => 'importFailed',
30+
BeforeSheet::class => 'beforeSheet',
31+
AfterSheet::class => 'afterSheet',
32+
];
2033
$listeners = [];
2134

22-
if (method_exists($this, 'beforeExport')) {
23-
$listeners[BeforeExport::class] = [static::class, 'beforeExport'];
24-
}
25-
26-
if (method_exists($this, 'beforeWriting')) {
27-
$listeners[BeforeWriting::class] = [static::class, 'beforeWriting'];
28-
}
29-
30-
if (method_exists($this, 'beforeImport')) {
31-
$listeners[BeforeImport::class] = [static::class, 'beforeImport'];
32-
}
33-
34-
if (method_exists($this, 'afterImport')) {
35-
$listeners[AfterImport::class] = [static::class, 'afterImport'];
36-
}
37-
38-
if (method_exists($this, 'importFailed')) {
39-
$listeners[ImportFailed::class] = [static::class, 'importFailed'];
40-
}
41-
42-
if (method_exists($this, 'beforeSheet')) {
43-
$listeners[BeforeSheet::class] = [static::class, 'beforeSheet'];
44-
}
45-
46-
if (method_exists($this, 'afterSheet')) {
47-
$listeners[AfterSheet::class] = [static::class, 'afterSheet'];
35+
foreach ($listenersClasses as $class => $name) {
36+
// Method names are case insensitive in php
37+
if (method_exists($this, $name)) {
38+
// Allow methods to not be static
39+
$listeners[$class] = [$this, $name];
40+
}
4841
}
4942

5043
return $listeners;

src/Events/AfterBatch.php

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<?php
2+
3+
namespace Maatwebsite\Excel\Events;
4+
5+
use Maatwebsite\Excel\Imports\ModelManager;
6+
7+
class AfterBatch extends Event
8+
{
9+
/**
10+
* @var ModelManager
11+
*/
12+
public $manager;
13+
14+
/**
15+
* @var int
16+
*/
17+
private $batchSize;
18+
19+
/**
20+
* @var int
21+
*/
22+
private $startRow;
23+
24+
/**
25+
* @param ModelManager $manager
26+
* @param object $importable
27+
* @param int $batchSize
28+
* @param int $startRow
29+
*/
30+
public function __construct(ModelManager $manager, $importable, int $batchSize, int $startRow)
31+
{
32+
$this->manager = $manager;
33+
$this->batchSize = $batchSize;
34+
$this->startRow = $startRow;
35+
parent::__construct($importable);
36+
}
37+
38+
public function getManager(): ModelManager
39+
{
40+
return $this->manager;
41+
}
42+
43+
/**
44+
* @return mixed
45+
*/
46+
public function getDelegate()
47+
{
48+
return $this->manager;
49+
}
50+
51+
public function getBatchSize(): int
52+
{
53+
return $this->batchSize;
54+
}
55+
56+
public function getStartRow(): int
57+
{
58+
return $this->startRow;
59+
}
60+
}

src/Events/AfterChunk.php

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
3+
namespace Maatwebsite\Excel\Events;
4+
5+
use Maatwebsite\Excel\Sheet;
6+
7+
class AfterChunk extends Event
8+
{
9+
/**
10+
* @var Sheet
11+
*/
12+
private $sheet;
13+
14+
/**
15+
* @var int
16+
*/
17+
private $startRow;
18+
19+
public function __construct(Sheet $sheet, $importable, int $startRow)
20+
{
21+
$this->sheet = $sheet;
22+
$this->startRow = $startRow;
23+
parent::__construct($importable);
24+
}
25+
26+
public function getSheet(): Sheet
27+
{
28+
return $this->sheet;
29+
}
30+
31+
public function getDelegate()
32+
{
33+
return $this->sheet;
34+
}
35+
36+
public function getStartRow(): int
37+
{
38+
return $this->startRow;
39+
}
40+
}

src/Events/AfterImport.php

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,14 @@ class AfterImport extends Event
1111
*/
1212
public $reader;
1313

14-
/**
15-
* @var object
16-
*/
17-
private $importable;
18-
1914
/**
2015
* @param Reader $reader
2116
* @param object $importable
2217
*/
2318
public function __construct(Reader $reader, $importable)
2419
{
2520
$this->reader = $reader;
26-
$this->importable = $importable;
21+
parent::__construct($importable);
2722
}
2823

2924
/**
@@ -34,14 +29,6 @@ public function getReader(): Reader
3429
return $this->reader;
3530
}
3631

37-
/**
38-
* @return object
39-
*/
40-
public function getConcernable()
41-
{
42-
return $this->importable;
43-
}
44-
4532
/**
4633
* @return mixed
4734
*/

src/Events/AfterSheet.php

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,14 @@ class AfterSheet extends Event
1111
*/
1212
public $sheet;
1313

14-
/**
15-
* @var object
16-
*/
17-
private $exportable;
18-
1914
/**
2015
* @param Sheet $sheet
2116
* @param object $exportable
2217
*/
2318
public function __construct(Sheet $sheet, $exportable)
2419
{
2520
$this->sheet = $sheet;
26-
$this->exportable = $exportable;
21+
parent::__construct($exportable);
2722
}
2823

2924
/**
@@ -34,14 +29,6 @@ public function getSheet(): Sheet
3429
return $this->sheet;
3530
}
3631

37-
/**
38-
* @return object
39-
*/
40-
public function getConcernable()
41-
{
42-
return $this->exportable;
43-
}
44-
4532
/**
4633
* @return mixed
4734
*/

src/Events/BeforeExport.php

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,14 @@ class BeforeExport extends Event
1111
*/
1212
public $writer;
1313

14-
/**
15-
* @var object
16-
*/
17-
private $exportable;
18-
1914
/**
2015
* @param Writer $writer
2116
* @param object $exportable
2217
*/
2318
public function __construct(Writer $writer, $exportable)
2419
{
2520
$this->writer = $writer;
26-
$this->exportable = $exportable;
21+
parent::__construct($exportable);
2722
}
2823

2924
/**
@@ -34,14 +29,6 @@ public function getWriter(): Writer
3429
return $this->writer;
3530
}
3631

37-
/**
38-
* @return object
39-
*/
40-
public function getConcernable()
41-
{
42-
return $this->exportable;
43-
}
44-
4532
/**
4633
* @return mixed
4734
*/

src/Events/BeforeImport.php

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,14 @@ class BeforeImport extends Event
1111
*/
1212
public $reader;
1313

14-
/**
15-
* @var object
16-
*/
17-
private $importable;
18-
1914
/**
2015
* @param Reader $reader
2116
* @param object $importable
2217
*/
2318
public function __construct(Reader $reader, $importable)
2419
{
2520
$this->reader = $reader;
26-
$this->importable = $importable;
21+
parent::__construct($importable);
2722
}
2823

2924
/**
@@ -34,14 +29,6 @@ public function getReader(): Reader
3429
return $this->reader;
3530
}
3631

37-
/**
38-
* @return object
39-
*/
40-
public function getConcernable()
41-
{
42-
return $this->importable;
43-
}
44-
4532
/**
4633
* @return mixed
4734
*/

src/Events/BeforeSheet.php

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,14 @@ class BeforeSheet extends Event
1111
*/
1212
public $sheet;
1313

14-
/**
15-
* @var object
16-
*/
17-
private $exportable;
18-
1914
/**
2015
* @param Sheet $sheet
2116
* @param object $exportable
2217
*/
2318
public function __construct(Sheet $sheet, $exportable)
2419
{
2520
$this->sheet = $sheet;
26-
$this->exportable = $exportable;
21+
parent::__construct($exportable);
2722
}
2823

2924
/**
@@ -34,14 +29,6 @@ public function getSheet(): Sheet
3429
return $this->sheet;
3530
}
3631

37-
/**
38-
* @return object
39-
*/
40-
public function getConcernable()
41-
{
42-
return $this->exportable;
43-
}
44-
4532
/**
4633
* @return mixed
4734
*/

0 commit comments

Comments
 (0)