Reader.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace ModulesGarden\Servers\KerioEmail\Core\FileReader;
  3. use ModulesGarden\Servers\KerioEmail\Core\FileReader\Reader\Ini;
  4. use ModulesGarden\Servers\KerioEmail\Core\FileReader\Reader\Json;
  5. use ModulesGarden\Servers\KerioEmail\Core\FileReader\Reader\Xml;
  6. use ModulesGarden\Servers\KerioEmail\Core\FileReader\Reader\Yml;
  7. use ModulesGarden\Servers\KerioEmail\Core\FileReader\Reader\Php;
  8. use ModulesGarden\Servers\KerioEmail\Core\FileReader\Reader\Sql;
  9. use ModulesGarden\Servers\KerioEmail\Core\FileReader\Reader\Js;
  10. use ModulesGarden\Servers\KerioEmail\Core\FileReader\Reader\Css;
  11. use ModulesGarden\Servers\KerioEmail\Core\FileReader\Reader\Html;
  12. use ModulesGarden\Servers\KerioEmail\Core\FileReader\Reader\AbstractType;
  13. /**
  14. * Description of Reader
  15. *
  16. * @author Rafał Ossowski <rafal.os@modulesgarden.com>
  17. */
  18. class Reader
  19. {
  20. /**
  21. * @param string $file
  22. * @return AbstractType
  23. */
  24. public static function read($file, array $renderData = [])
  25. {
  26. $path = explode(DIRECTORY_SEPARATOR, $file);
  27. $file = end($path);
  28. array_pop($path);
  29. $path = implode(DIRECTORY_SEPARATOR, $path);
  30. $instance = null;
  31. $type = self::getType($file);
  32. switch ($type)
  33. {
  34. case "xml":
  35. $instance = new Xml($file, $path, $renderData);
  36. break;
  37. case "ini":
  38. $instance = new Ini($file, $path, $renderData);
  39. break;
  40. case "yml":
  41. $instance = new Yml($file, $path, $renderData);
  42. break;
  43. case "json":
  44. $instance = new Json($file, $path, $renderData);
  45. break;
  46. case "php":
  47. $instance = new Php($file, $path, $renderData);
  48. break;
  49. case "sql":
  50. $instance = new Sql($file, $path, $renderData);
  51. break;
  52. case "js":
  53. $instance = new Js($file, $path, $renderData);
  54. break;
  55. case "css":
  56. $instance = new Css($file, $path, $renderData);
  57. break;
  58. case "html":
  59. $instance = new Html($file, $path, $renderData);
  60. break;
  61. default:
  62. throw new \Exception('Can\'t read file: ' . $file);
  63. }
  64. return $instance;
  65. }
  66. private static function getType($file)
  67. {
  68. $type = null;
  69. $array = explode('.', $file);
  70. if (is_array($array))
  71. {
  72. $type = end($array);
  73. }
  74. return strtolower($type);
  75. }
  76. }