/** * Registers a converter. * * @param ConverterBuilder $converter The builder of the converter to register. * @throws \InvalidArgumentException If from or to are unset. */ public function addConverter(ConverterBuilder $converter) { if ($converter->getFrom() == null) { throw new \InvalidArgumentException("From is unset"); } if ($converter->getTo() == null) { throw new \InvalidArgumentException("To is unset"); } $this->converters[$converter->getFrom()][$converter->getTo()] = $converter; }
public function testPerformance() { $service = new ConversionService(); $builder = ConverterBuilder::get()->from(A::class)->to(B::class)->withImplementation(AToBConverter::class); $service->registerConverter($builder); $a = new A(1, json_encode(array('firstName' => 'john', 'lastName' => 'doe', 'age' => 30))); foreach ([5000, 15000, 25000, 50000] as $cycles) { $start = microtime(true); for ($i = $cycles; $i > 0; $i--) { $b = $service->convert($a, B::class); } echo "\n{$cycles} cycles executed in " . (microtime(true) - $start) . " seconds\n"; } }
/** * @expectedException \InvalidArgumentException * @expectedExceptionMesesage 'To' parameter should be a string containing 'string', 'array', or a class name */ public function testSetToWithInvalidValue() { $builder = ConverterBuilder::get(); $builder->to(5); }
private function getConverterBuilderToRegister() { $register = ConverterBuilder::get()->from(A::class)->to(B::class)->withImplementation(AToBConverter::class); return $register; }
/** * @expectedException \Mcustiel\Conversion\Exception\ObjectIsNotConverterException * @expectedExceptionMessage Object of type stdClass does not implement Mcustiel\Conversion\Converter */ public function testShouldFailWhenImplementationIsNotConverter() { $builder = ConverterBuilder::get()->from(A::class)->to(B::class)->withImplementation(\stdClass::class); ConverterContainer::getInstance()->addConverter($builder); ConverterContainer::getInstance()->getConverter(A::class, B::class); }
private function addDefaultConverter() { $builder = ConverterBuilder::get()->from(A::class)->to(B::class)->withImplementation(AToBConverter::class); $this->conversionService->addConverter($builder); }