From ca76d2d1d465f7bf4b9168f505a1120b7ea2d543 Mon Sep 17 00:00:00 2001 From: Bozhidar Hristov Date: Mon, 12 Aug 2019 16:38:27 +0300 Subject: [PATCH] Allow registration of custom transformers and pass whole event to getValue() --- src/ColumnTransformer/ColumnTransformer.php | 28 ++++++++++--------- .../Plugins/ClearColumnTransformer.php | 5 ++-- .../Plugins/FakerColumnTransformer.php | 16 +++++------ 3 files changed, 26 insertions(+), 23 deletions(-) diff --git a/src/ColumnTransformer/ColumnTransformer.php b/src/ColumnTransformer/ColumnTransformer.php index 65711a3..a7db167 100644 --- a/src/ColumnTransformer/ColumnTransformer.php +++ b/src/ColumnTransformer/ColumnTransformer.php @@ -3,10 +3,9 @@ namespace machbarmacher\GdprDump\ColumnTransformer; -use Symfony\Component\EventDispatcher\EventDispatcher; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; use machbarmacher\GdprDump\ColumnTransformer\Plugins\ClearColumnTransformer; use machbarmacher\GdprDump\ColumnTransformer\Plugins\FakerColumnTransformer; +use Symfony\Component\EventDispatcher\EventDispatcher; abstract class ColumnTransformer { @@ -19,18 +18,19 @@ abstract class ColumnTransformer protected static $dispatcher; + public static function addTransformer(ColumnTransformer $columnTransformer) + { + self::setUp(); + self::$dispatcher->addListener(self::COLUMN_TRANSFORM_REQUEST, $columnTransformer); + } public static function setUp() { if (!isset(self::$dispatcher)) { self::$dispatcher = new EventDispatcher(); - - self::$dispatcher->addListener(self::COLUMN_TRANSFORM_REQUEST, - new FakerColumnTransformer()); - self::$dispatcher->addListener(self::COLUMN_TRANSFORM_REQUEST, - new ClearColumnTransformer()); + self::addTransformer(new FakerColumnTransformer()); + self::addTransformer(new ClearColumnTransformer()); } - } public static function replaceValue($tableName, $columnName, $expression) @@ -47,13 +47,15 @@ public static function replaceValue($tableName, $columnName, $expression) public function __invoke(ColumnTransformEvent $event) { - if (in_array(($event->getExpression())['formatter'], - $this->getSupportedFormatters())) { - $event->setReplacementValue($this->getValue($event->getExpression())); + if (in_array( + ($event->getExpression())['formatter'], + $this->getSupportedFormatters() + )) { + $event->setReplacementValue($this->getValue($event)); } } - abstract public function getValue($expression); + abstract public function getValue(ColumnTransformEvent $event); abstract protected function getSupportedFormatters(); -} \ No newline at end of file +} diff --git a/src/ColumnTransformer/Plugins/ClearColumnTransformer.php b/src/ColumnTransformer/Plugins/ClearColumnTransformer.php index cbeae9f..55e00c4 100644 --- a/src/ColumnTransformer/Plugins/ClearColumnTransformer.php +++ b/src/ColumnTransformer/Plugins/ClearColumnTransformer.php @@ -3,6 +3,7 @@ namespace machbarmacher\GdprDump\ColumnTransformer\Plugins; use machbarmacher\GdprDump\ColumnTransformer\ColumnTransformer; +use machbarmacher\GdprDump\ColumnTransformer\ColumnTransformEvent; class ClearColumnTransformer extends ColumnTransformer { @@ -12,8 +13,8 @@ protected function getSupportedFormatters() return ['clear']; } - public function getValue($expression) + public function getValue(ColumnTransformEvent $event) { return ""; } -} \ No newline at end of file +} diff --git a/src/ColumnTransformer/Plugins/FakerColumnTransformer.php b/src/ColumnTransformer/Plugins/FakerColumnTransformer.php index 9bb1174..7e04dee 100644 --- a/src/ColumnTransformer/Plugins/FakerColumnTransformer.php +++ b/src/ColumnTransformer/Plugins/FakerColumnTransformer.php @@ -3,8 +3,8 @@ namespace machbarmacher\GdprDump\ColumnTransformer\Plugins; use Faker\Factory; -use Faker\Provider\Base; use machbarmacher\GdprDump\ColumnTransformer\ColumnTransformer; +use machbarmacher\GdprDump\ColumnTransformer\ColumnTransformEvent; class FakerColumnTransformer extends ColumnTransformer { @@ -30,21 +30,21 @@ public function __construct() { if (!isset(self::$generator)) { self::$generator = Factory::create(); - foreach(self::$generator->getProviders() as $provider) - { + foreach (self::$generator->getProviders() as $provider) { $clazz = new \ReflectionClass($provider); $methods = $clazz->getMethods(\ReflectionMethod::IS_PUBLIC); - foreach($methods as $m) - { - if(strpos($m->name, '__') === 0) continue; + foreach ($methods as $m) { + if (strpos($m->name, '__') === 0) { + continue; + } self::$formatterTansformerMap[$m->name] = $m->name; } } } } - public function getValue($expression) + public function getValue(ColumnTransformEvent $event) { - return self::$generator->format(self::$formatterTansformerMap[$expression['formatter']]); + return self::$generator->format(self::$formatterTansformerMap[$event->getExpression()['formatter']]); } }