ProcedureLoaderFactory.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. /*
  3. * This file is part of the php-phantomjs.
  4. *
  5. * For the full copyright and license information, please view the LICENSE
  6. * file that was distributed with this source code.
  7. */
  8. namespace JonnyW\PhantomJs\Procedure;
  9. use Symfony\Component\Config\FileLocator;
  10. /**
  11. * PHP PhantomJs
  12. *
  13. * @author Jon Wenmoth <contact@jonnyw.me>
  14. */
  15. class ProcedureLoaderFactory implements ProcedureLoaderFactoryInterface
  16. {
  17. /**
  18. * Procedure factory.
  19. *
  20. * @var \JonnyW\PhantomJs\Procedure\ProcedureFactoryInterface
  21. * @access protected
  22. */
  23. protected $procedureFactory;
  24. /**
  25. * Internal constructor.
  26. *
  27. * @access public
  28. * @param \JonnyW\PhantomJs\Procedure\ProcedureFactoryInterface $procedureFactory
  29. */
  30. public function __construct(ProcedureFactoryInterface $procedureFactory)
  31. {
  32. $this->procedureFactory = $procedureFactory;
  33. }
  34. /**
  35. * Create procedure loader instance.
  36. *
  37. * @access public
  38. * @param string $directory
  39. * @return \JonnyW\PhantomJs\Procedure\ProcedureLoader
  40. */
  41. public function createProcedureLoader($directory)
  42. {
  43. $procedureFactory = $this->procedureFactory;
  44. $fileLocator = $this->createFileLocator($directory);
  45. $procedureLoader = new ProcedureLoader(
  46. $procedureFactory,
  47. $fileLocator
  48. );
  49. return $procedureLoader;
  50. }
  51. /**
  52. * Create file locator instance.
  53. *
  54. * @access protected
  55. * @param string $directory
  56. * @return \Symfony\Component\Config\FileLocator
  57. * @throws \InvalidArgumentException
  58. */
  59. protected function createFileLocator($directory)
  60. {
  61. if (!is_dir($directory) || !is_readable($directory)) {
  62. throw new \InvalidArgumentException(sprintf('Could not create procedure loader as directory does not exist or is not readable: "%s"', $directory));
  63. }
  64. return new FileLocator($directory);
  65. }
  66. }