Filesystem.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. namespace Magento\Framework\App\ObjectManager\ConfigWriter;
  8. use Magento\Framework\App\Filesystem\DirectoryList;
  9. use Magento\Framework\App\ObjectManager\ConfigWriterInterface;
  10. /**
  11. * @inheritdoc
  12. */
  13. class Filesystem implements ConfigWriterInterface
  14. {
  15. /**
  16. * @var DirectoryList
  17. */
  18. private $directoryList;
  19. /**
  20. * @param DirectoryList $directoryList
  21. */
  22. public function __construct(
  23. DirectoryList $directoryList
  24. ) {
  25. $this->directoryList = $directoryList;
  26. }
  27. /**
  28. * Writes config in storage
  29. *
  30. * @param string $key
  31. * @param array $config
  32. * @return void
  33. */
  34. public function write(string $key, array $config)
  35. {
  36. $this->initialize();
  37. $configuration = sprintf('<?php return %s;', var_export($config, true));
  38. file_put_contents(
  39. $this->directoryList->getPath(DirectoryList::GENERATED_METADATA) . '/' . $key . '.php',
  40. $configuration
  41. );
  42. }
  43. /**
  44. * Initializes writer
  45. *
  46. * @return void
  47. */
  48. private function initialize()
  49. {
  50. if (!file_exists($this->directoryList->getPath(DirectoryList::GENERATED_METADATA))) {
  51. mkdir($this->directoryList->getPath(DirectoryList::GENERATED_METADATA));
  52. }
  53. }
  54. }