-
Notifications
You must be signed in to change notification settings - Fork 9.4k
/
Copy pathFilesystem.php
127 lines (115 loc) · 3.47 KB
/
Filesystem.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<?php
/**
* Magento filesystem facade
*
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Framework;
use Magento\Framework\Filesystem\DriverPool;
/**
* @api
* @since 100.0.2
*/
class Filesystem
{
/**
* @var \Magento\Framework\Filesystem\DirectoryList
*/
protected $directoryList;
/**
* @var \Magento\Framework\Filesystem\Directory\ReadFactory
*/
protected $readFactory;
/**
* @var \Magento\Framework\Filesystem\Directory\WriteFactory
*/
protected $writeFactory;
/**
* @var \Magento\Framework\Filesystem\Directory\ReadInterface[]
*/
protected $readInstances = [];
/**
* @var \Magento\Framework\Filesystem\Directory\WriteInterface[]
*/
protected $writeInstances = [];
/**
* @param Filesystem\DirectoryList $directoryList
* @param Filesystem\Directory\ReadFactory $readFactory
* @param Filesystem\Directory\WriteFactory $writeFactory
*/
public function __construct(
\Magento\Framework\Filesystem\DirectoryList $directoryList,
\Magento\Framework\Filesystem\Directory\ReadFactory $readFactory,
\Magento\Framework\Filesystem\Directory\WriteFactory $writeFactory
) {
$this->directoryList = $directoryList;
$this->readFactory = $readFactory;
$this->writeFactory = $writeFactory;
}
/**
* Create an instance of directory with read permissions
*
* @param string $directoryCode
* @param string $driverCode
* @return \Magento\Framework\Filesystem\Directory\ReadInterface
*/
public function getDirectoryRead($directoryCode, $driverCode = DriverPool::FILE)
{
$code = $directoryCode . '_' . $driverCode;
if (!array_key_exists($code, $this->readInstances)) {
$this->readInstances[$code] = $this->readFactory->create($this->getDirPath($directoryCode), $driverCode);
}
return $this->readInstances[$code];
}
/**
* Create an instance of directory with read permissions by path.
*
* @param string $path
* @param string $driverCode
*
* @return \Magento\Framework\Filesystem\Directory\ReadInterface
*
* @since 102.0.0
*/
public function getDirectoryReadByPath($path, $driverCode = DriverPool::FILE)
{
return $this->readFactory->create($path, $driverCode);
}
/**
* Create an instance of directory with write permissions
*
* @param string $directoryCode
* @param string $driverCode
* @return \Magento\Framework\Filesystem\Directory\WriteInterface
* @throws \Magento\Framework\Exception\FileSystemException
*/
public function getDirectoryWrite($directoryCode, $driverCode = DriverPool::FILE)
{
$code = $directoryCode . '_' . $driverCode;
if (!array_key_exists($code, $this->writeInstances)) {
$this->writeInstances[$code] = $this->writeFactory->create($this->getDirPath($directoryCode), $driverCode);
}
return $this->writeInstances[$code];
}
/**
* Gets configuration of a directory
*
* @param string $code
* @return string
*/
protected function getDirPath($code)
{
return $this->directoryList->getPath($code);
}
/**
* Retrieve uri for given code
*
* @param string $code
* @return string
*/
public function getUri($code)
{
return $this->directoryList->getUrlPath($code);
}
}