libpairtwo/src/IOFactory.php

64 lines
1.5 KiB
PHP
Raw Normal View History

2019-05-27 13:01:37 +02:00
<?php
2020-08-02 21:51:59 +02:00
/**
* Class IOFactory
*
* Class for creating readers for pairing files
*
2020-08-02 21:51:59 +02:00
* @author Jeroen De Meerleer <schaak@jeroened.be>
* @category Main
* @package Libpairtwo
* @copyright Copyright (c) 2018-2019 Jeroen De Meerleer <schaak@jeroened.be>
*/
2019-05-27 13:01:37 +02:00
namespace JeroenED\Libpairtwo;
use JeroenED\LibPairtwo\Exceptions\LibpairtwoException;
use JeroenED\Libpairtwo\Interfaces\ReaderInterface;
/**
* Class IOFactory
*
* Class for creating readers for pairing files
*
2020-08-02 21:51:59 +02:00
* @author Jeroen De Meerleer <schaak@jeroened.be>
* @category Main
* @package Libpairtwo
* @copyright Copyright (c) 2018-2019 Jeroen De Meerleer <schaak@jeroened.be>
*/
2019-05-27 13:01:37 +02:00
abstract class IOFactory
{
/**
* Compatible readers
*
* @var array
*/
private static $Readers = [
2020-11-22 17:13:13 +01:00
'Swar-4' => Readers\Swar4::class,
2019-05-28 10:16:34 +02:00
'Pairtwo-6' => Readers\Pairtwo6::class,
'Pairtwo-5' => Readers\Pairtwo6::class // File structure identical
2019-05-27 13:01:37 +02:00
];
/**
* Creates a reader for $type
*
2019-07-15 13:40:33 +02:00
* Compatible types are Swar-4, Pairtwo-5, Pairtwo-6
2019-06-20 14:53:26 +02:00
*
2020-11-22 17:13:13 +01:00
* @param string $type
*
2019-05-27 13:01:37 +02:00
* @return ReaderInterface
2019-06-20 14:53:26 +02:00
* @throws LibpairtwoException
2019-05-27 13:01:37 +02:00
*/
public static function createReader(string $type): ReaderInterface
{
2020-11-22 17:13:13 +01:00
if (!isset(self::$Readers[ $type ])) {
2019-05-27 13:01:37 +02:00
throw new LibpairtwoException("Cannot read type $type");
}
// create reader class
2020-11-22 17:13:13 +01:00
$readerClass = self::$Readers[ $type ];
2019-05-27 13:01:37 +02:00
2020-08-02 21:51:59 +02:00
return new $readerClass();
2019-05-27 13:01:37 +02:00
}
}