Support overriding `DefaultValueBinder::dataTypeForValue()`
This allow to avoid overriding `DefaultValueBinder::bindValue()` Fixes #735
This commit is contained in:
parent
fdc224af7c
commit
3be06a5e87
|
@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org).
|
||||||
- SUMIFS containing multiple conditions - [#704](https://github.com/PHPOffice/PhpSpreadsheet/issues/704)
|
- SUMIFS containing multiple conditions - [#704](https://github.com/PHPOffice/PhpSpreadsheet/issues/704)
|
||||||
- Csv reader avoid notice when the file is empty - [#743](https://github.com/PHPOffice/PhpSpreadsheet/pull/743)
|
- Csv reader avoid notice when the file is empty - [#743](https://github.com/PHPOffice/PhpSpreadsheet/pull/743)
|
||||||
- Fix print area parser for XLSX reader - [#734](https://github.com/PHPOffice/PhpSpreadsheet/pull/734)
|
- Fix print area parser for XLSX reader - [#734](https://github.com/PHPOffice/PhpSpreadsheet/pull/734)
|
||||||
|
- Support overriding `DefaultValueBinder::dataTypeForValue()` without overriding `DefaultValueBinder::bindValue()` - [#735](https://github.com/PHPOffice/PhpSpreadsheet/pull/735)
|
||||||
|
|
||||||
## [1.5.0] - 2018-10-21
|
## [1.5.0] - 2018-10-21
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ class DefaultValueBinder implements IValueBinder
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set value explicit
|
// Set value explicit
|
||||||
$cell->setValueExplicit($value, self::dataTypeForValue($value));
|
$cell->setValueExplicit($value, static::dataTypeForValue($value));
|
||||||
|
|
||||||
// Done!
|
// Done!
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -12,18 +12,20 @@ use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
class DefaultValueBinderTest extends TestCase
|
class DefaultValueBinderTest extends TestCase
|
||||||
{
|
{
|
||||||
private $cellStub;
|
|
||||||
|
|
||||||
private function createCellStub()
|
private function createCellStub()
|
||||||
{
|
{
|
||||||
// Create a stub for the Cell class.
|
// Create a stub for the Cell class.
|
||||||
$this->cellStub = $this->getMockBuilder(Cell::class)
|
/** @var Cell $cellStub */
|
||||||
|
$cellStub = $this->getMockBuilder(Cell::class)
|
||||||
->disableOriginalConstructor()
|
->disableOriginalConstructor()
|
||||||
->getMock();
|
->getMock();
|
||||||
|
|
||||||
// Configure the stub.
|
// Configure the stub.
|
||||||
$this->cellStub->expects($this->any())
|
$cellStub->expects($this->any())
|
||||||
->method('setValueExplicit')
|
->method('setValueExplicit')
|
||||||
->will($this->returnValue(true));
|
->will($this->returnValue(true));
|
||||||
|
|
||||||
|
return $cellStub;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -33,9 +35,9 @@ class DefaultValueBinderTest extends TestCase
|
||||||
*/
|
*/
|
||||||
public function testBindValue($value)
|
public function testBindValue($value)
|
||||||
{
|
{
|
||||||
$this->createCellStub();
|
$cellStub = $this->createCellStub();
|
||||||
$binder = new DefaultValueBinder();
|
$binder = new DefaultValueBinder();
|
||||||
$result = $binder->bindValue($this->cellStub, $value);
|
$result = $binder->bindValue($cellStub, $value);
|
||||||
self::assertTrue($result);
|
self::assertTrue($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,4 +85,14 @@ class DefaultValueBinderTest extends TestCase
|
||||||
$result = DefaultValueBinder::dataTypeForValue($objRichText);
|
$result = DefaultValueBinder::dataTypeForValue($objRichText);
|
||||||
self::assertEquals($expectedResult, $result);
|
self::assertEquals($expectedResult, $result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testCanOverrideStaticMethodWithoutOverridingBindValue()
|
||||||
|
{
|
||||||
|
$cellStub = $this->createCellStub();
|
||||||
|
$binder = new ValueBinderWithOverriddenDataTypeForValue();
|
||||||
|
|
||||||
|
self::assertFalse($binder::$called);
|
||||||
|
$binder->bindValue($cellStub, 123);
|
||||||
|
self::assertTrue($binder::$called);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Cell;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Cell\DefaultValueBinder;
|
||||||
|
|
||||||
|
class ValueBinderWithOverriddenDataTypeForValue extends DefaultValueBinder
|
||||||
|
{
|
||||||
|
public static $called = false;
|
||||||
|
|
||||||
|
public static function dataTypeForValue($pValue)
|
||||||
|
{
|
||||||
|
self::$called = true;
|
||||||
|
|
||||||
|
return parent::dataTypeForValue($pValue);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue