Merge branch 'main' of https://git.20031227.de5.net/og/Socket
This commit is contained in:
@@ -1 +0,0 @@
|
||||
1474396
|
||||
@@ -1,339 +0,0 @@
|
||||
Starting swoole http server...
|
||||
Swoole http server started: <http://0.0.0.0:8082>
|
||||
You can exit with `CTRL-C`
|
||||
1:退出
|
||||
<pre>getState:ws:3</pre><pre>Array
|
||||
(
|
||||
[mode] => user
|
||||
[user_id] => 34
|
||||
[table_id] => 0
|
||||
[scan_appid] => 0
|
||||
[api_appid] => 0
|
||||
[username] => 974824731
|
||||
[table_name] =>
|
||||
)
|
||||
</pre>3:退出
|
||||
5:退出
|
||||
4:退出
|
||||
6:退出
|
||||
7:退出
|
||||
8:退出
|
||||
9:退出
|
||||
10:退出
|
||||
11:退出
|
||||
12:退出
|
||||
13:退出
|
||||
14:退出
|
||||
15:退出
|
||||
16:退出
|
||||
17:退出
|
||||
18:退出
|
||||
19:退出
|
||||
20:退出
|
||||
21:退出
|
||||
22:退出
|
||||
23:退出
|
||||
24:退出
|
||||
25:退出
|
||||
26:退出
|
||||
27:退出
|
||||
28:退出
|
||||
30:退出
|
||||
29:退出
|
||||
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:退出
|
||||
68:退出
|
||||
67:退出
|
||||
69:退出
|
||||
70:退出
|
||||
71:退出
|
||||
72:退出
|
||||
73:退出
|
||||
74:退出
|
||||
75:退出
|
||||
76:退出
|
||||
77:退出
|
||||
78:退出
|
||||
79:退出
|
||||
80:退出
|
||||
81:退出
|
||||
82:退出
|
||||
83:退出
|
||||
84:退出
|
||||
85:退出
|
||||
86:退出
|
||||
87:退出
|
||||
88:退出
|
||||
89:退出
|
||||
90:退出
|
||||
91:退出
|
||||
92:退出
|
||||
94:退出
|
||||
93:退出
|
||||
95:退出
|
||||
96:退出
|
||||
97:退出
|
||||
98:退出
|
||||
99:退出
|
||||
100:退出
|
||||
101:退出
|
||||
102:退出
|
||||
103:退出
|
||||
104:退出
|
||||
105:退出
|
||||
106:退出
|
||||
107:退出
|
||||
108:退出
|
||||
109:退出
|
||||
110:退出
|
||||
111:退出
|
||||
112:退出
|
||||
113:退出
|
||||
114:退出
|
||||
115:退出
|
||||
2:退出
|
||||
118:退出
|
||||
117:退出
|
||||
116:退出
|
||||
119:退出
|
||||
120:退出
|
||||
121:退出
|
||||
122:退出
|
||||
123:退出
|
||||
124:退出
|
||||
125:退出
|
||||
126:退出
|
||||
127:退出
|
||||
128:退出
|
||||
129:退出
|
||||
130:退出
|
||||
131:退出
|
||||
132:退出
|
||||
133:退出
|
||||
134:退出
|
||||
135:退出
|
||||
136:退出
|
||||
137:退出
|
||||
138:退出
|
||||
139:退出
|
||||
140:退出
|
||||
141:退出
|
||||
142:退出
|
||||
144:退出
|
||||
143:退出
|
||||
145:退出
|
||||
146:退出
|
||||
147:退出
|
||||
148:退出
|
||||
149:退出
|
||||
150:退出
|
||||
151:退出
|
||||
152:退出
|
||||
153:退出
|
||||
154:退出
|
||||
155:退出
|
||||
156:退出
|
||||
157:退出
|
||||
158:退出
|
||||
159:退出
|
||||
160:退出
|
||||
161:退出
|
||||
162:退出
|
||||
163:退出
|
||||
164:退出
|
||||
165:退出
|
||||
166:退出
|
||||
167:退出
|
||||
168:退出
|
||||
169:退出
|
||||
170:退出
|
||||
171:退出
|
||||
172:退出
|
||||
173:退出
|
||||
174:退出
|
||||
175:退出
|
||||
176:退出
|
||||
177:退出
|
||||
178:退出
|
||||
179:退出
|
||||
180:退出
|
||||
181:退出
|
||||
182:退出
|
||||
183:退出
|
||||
184:退出
|
||||
185:退出
|
||||
186:退出
|
||||
187:退出
|
||||
188:退出
|
||||
189:退出
|
||||
190:退出
|
||||
191:退出
|
||||
192:退出
|
||||
193:退出
|
||||
194:退出
|
||||
195:退出
|
||||
196:退出
|
||||
197:退出
|
||||
198:退出
|
||||
199:退出
|
||||
200:退出
|
||||
201:退出
|
||||
202:退出
|
||||
203:退出
|
||||
204:退出
|
||||
205:退出
|
||||
206:退出
|
||||
207:退出
|
||||
208:退出
|
||||
210:退出
|
||||
209:退出
|
||||
211:退出
|
||||
212:退出
|
||||
213:退出
|
||||
214:退出
|
||||
215:退出
|
||||
216:退出
|
||||
217:退出
|
||||
218:退出
|
||||
219:退出
|
||||
220:退出
|
||||
221:退出
|
||||
222:退出
|
||||
223:退出
|
||||
224:退出
|
||||
225:退出
|
||||
226:退出
|
||||
227:退出
|
||||
228:退出
|
||||
230:退出
|
||||
229:退出
|
||||
231:退出
|
||||
232:退出
|
||||
233:退出
|
||||
234:退出
|
||||
235:退出
|
||||
236:退出
|
||||
237:退出
|
||||
238:退出
|
||||
239:退出
|
||||
240:退出
|
||||
241:退出
|
||||
242:退出
|
||||
243:退出
|
||||
245:退出
|
||||
244:退出
|
||||
246:退出
|
||||
247:退出
|
||||
248:退出
|
||||
249:退出
|
||||
250:退出
|
||||
251:退出
|
||||
252:退出
|
||||
253:退出
|
||||
254:退出
|
||||
255:退出
|
||||
261:退出
|
||||
263:退出
|
||||
266:退出
|
||||
270:退出
|
||||
271:退出
|
||||
272:退出
|
||||
273:退出
|
||||
274:退出
|
||||
275:退出
|
||||
276:退出
|
||||
277:退出
|
||||
278:退出
|
||||
279:退出
|
||||
280:退出
|
||||
281:退出
|
||||
282:退出
|
||||
283:退出
|
||||
287:退出
|
||||
288:退出
|
||||
289:退出
|
||||
290:退出
|
||||
291:退出
|
||||
292:退出
|
||||
293:退出
|
||||
294:退出
|
||||
295:退出
|
||||
296:退出
|
||||
297:退出
|
||||
298:退出
|
||||
300:退出
|
||||
301:退出
|
||||
302:退出
|
||||
303:退出
|
||||
304:退出
|
||||
305:退出
|
||||
306:退出
|
||||
307:退出
|
||||
308:退出
|
||||
309:退出
|
||||
310:退出
|
||||
311:退出
|
||||
312:退出
|
||||
313:退出
|
||||
314:退出
|
||||
315:退出
|
||||
330:退出
|
||||
331:退出
|
||||
332:退出
|
||||
334:退出
|
||||
337:退出
|
||||
338:退出
|
||||
339:退出
|
||||
340:退出
|
||||
342:退出
|
||||
341:退出
|
||||
346:退出
|
||||
347:退出
|
||||
348:退出
|
||||
349:退出
|
||||
350:退出
|
||||
351:退出
|
||||
352:退出
|
||||
353:退出
|
||||
354:退出
|
||||
355:退出
|
||||
356:退出
|
||||
357:退出
|
||||
358:退出
|
||||
359:退出
|
||||
360:退出
|
||||
361:退出
|
||||
@@ -1 +0,0 @@
|
||||
1474396
|
||||
Vendored
-7
@@ -1,7 +0,0 @@
|
||||
<?php
|
||||
|
||||
// autoload.php @generated by Composer
|
||||
|
||||
require_once __DIR__ . '/composer/autoload_real.php';
|
||||
|
||||
return ComposerAutoloaderInit9947e2ce7d1a6501413c1b0d7d3973cf::getLoader();
|
||||
Vendored
-63
@@ -1,63 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Starts a dump server to collect and output dumps on a single place with multiple formats support.
|
||||
*
|
||||
* @author Maxime Steinhausser <maxime.steinhausser@gmail.com>
|
||||
*/
|
||||
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Component\Console\Application;
|
||||
use Symfony\Component\Console\Input\ArgvInput;
|
||||
use Symfony\Component\Console\Input\InputOption;
|
||||
use Symfony\Component\Console\Logger\ConsoleLogger;
|
||||
use Symfony\Component\Console\Output\ConsoleOutput;
|
||||
use Symfony\Component\VarDumper\Command\ServerDumpCommand;
|
||||
use Symfony\Component\VarDumper\Server\DumpServer;
|
||||
|
||||
function includeIfExists(string $file): bool
|
||||
{
|
||||
return file_exists($file) && include $file;
|
||||
}
|
||||
|
||||
if (
|
||||
!includeIfExists(__DIR__ . '/../../../../autoload.php') &&
|
||||
!includeIfExists(__DIR__ . '/../../vendor/autoload.php') &&
|
||||
!includeIfExists(__DIR__ . '/../../../../../../vendor/autoload.php')
|
||||
) {
|
||||
fwrite(STDERR, 'Install dependencies using Composer.'.PHP_EOL);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (!class_exists(Application::class)) {
|
||||
fwrite(STDERR, 'You need the "symfony/console" component in order to run the VarDumper server.'.PHP_EOL);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
$input = new ArgvInput();
|
||||
$output = new ConsoleOutput();
|
||||
$defaultHost = '127.0.0.1:9912';
|
||||
$host = $input->getParameterOption(['--host'], $_SERVER['VAR_DUMPER_SERVER'] ?? $defaultHost, true);
|
||||
$logger = interface_exists(LoggerInterface::class) ? new ConsoleLogger($output->getErrorOutput()) : null;
|
||||
|
||||
$app = new Application();
|
||||
|
||||
$app->getDefinition()->addOption(
|
||||
new InputOption('--host', null, InputOption::VALUE_REQUIRED, 'The address the server should listen to', $defaultHost)
|
||||
);
|
||||
|
||||
$app->add($command = new ServerDumpCommand(new DumpServer($host, $logger)))
|
||||
->getApplication()
|
||||
->setDefaultCommand($command->getName(), true)
|
||||
->run($input, $output)
|
||||
;
|
||||
Vendored
-445
@@ -1,445 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Composer.
|
||||
*
|
||||
* (c) Nils Adermann <naderman@naderman.de>
|
||||
* Jordi Boggiano <j.boggiano@seld.be>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Composer\Autoload;
|
||||
|
||||
/**
|
||||
* ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
|
||||
*
|
||||
* $loader = new \Composer\Autoload\ClassLoader();
|
||||
*
|
||||
* // register classes with namespaces
|
||||
* $loader->add('Symfony\Component', __DIR__.'/component');
|
||||
* $loader->add('Symfony', __DIR__.'/framework');
|
||||
*
|
||||
* // activate the autoloader
|
||||
* $loader->register();
|
||||
*
|
||||
* // to enable searching the include path (eg. for PEAR packages)
|
||||
* $loader->setUseIncludePath(true);
|
||||
*
|
||||
* In this example, if you try to use a class in the Symfony\Component
|
||||
* namespace or one of its children (Symfony\Component\Console for instance),
|
||||
* the autoloader will first look for the class under the component/
|
||||
* directory, and it will then fallback to the framework/ directory if not
|
||||
* found before giving up.
|
||||
*
|
||||
* This class is loosely based on the Symfony UniversalClassLoader.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||
* @see https://www.php-fig.org/psr/psr-0/
|
||||
* @see https://www.php-fig.org/psr/psr-4/
|
||||
*/
|
||||
class ClassLoader
|
||||
{
|
||||
// PSR-4
|
||||
private $prefixLengthsPsr4 = array();
|
||||
private $prefixDirsPsr4 = array();
|
||||
private $fallbackDirsPsr4 = array();
|
||||
|
||||
// PSR-0
|
||||
private $prefixesPsr0 = array();
|
||||
private $fallbackDirsPsr0 = array();
|
||||
|
||||
private $useIncludePath = false;
|
||||
private $classMap = array();
|
||||
private $classMapAuthoritative = false;
|
||||
private $missingClasses = array();
|
||||
private $apcuPrefix;
|
||||
|
||||
public function getPrefixes()
|
||||
{
|
||||
if (!empty($this->prefixesPsr0)) {
|
||||
return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
|
||||
}
|
||||
|
||||
return array();
|
||||
}
|
||||
|
||||
public function getPrefixesPsr4()
|
||||
{
|
||||
return $this->prefixDirsPsr4;
|
||||
}
|
||||
|
||||
public function getFallbackDirs()
|
||||
{
|
||||
return $this->fallbackDirsPsr0;
|
||||
}
|
||||
|
||||
public function getFallbackDirsPsr4()
|
||||
{
|
||||
return $this->fallbackDirsPsr4;
|
||||
}
|
||||
|
||||
public function getClassMap()
|
||||
{
|
||||
return $this->classMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $classMap Class to filename map
|
||||
*/
|
||||
public function addClassMap(array $classMap)
|
||||
{
|
||||
if ($this->classMap) {
|
||||
$this->classMap = array_merge($this->classMap, $classMap);
|
||||
} else {
|
||||
$this->classMap = $classMap;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-0 directories for a given prefix, either
|
||||
* appending or prepending to the ones previously set for this prefix.
|
||||
*
|
||||
* @param string $prefix The prefix
|
||||
* @param array|string $paths The PSR-0 root directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*/
|
||||
public function add($prefix, $paths, $prepend = false)
|
||||
{
|
||||
if (!$prefix) {
|
||||
if ($prepend) {
|
||||
$this->fallbackDirsPsr0 = array_merge(
|
||||
(array) $paths,
|
||||
$this->fallbackDirsPsr0
|
||||
);
|
||||
} else {
|
||||
$this->fallbackDirsPsr0 = array_merge(
|
||||
$this->fallbackDirsPsr0,
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$first = $prefix[0];
|
||||
if (!isset($this->prefixesPsr0[$first][$prefix])) {
|
||||
$this->prefixesPsr0[$first][$prefix] = (array) $paths;
|
||||
|
||||
return;
|
||||
}
|
||||
if ($prepend) {
|
||||
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||
(array) $paths,
|
||||
$this->prefixesPsr0[$first][$prefix]
|
||||
);
|
||||
} else {
|
||||
$this->prefixesPsr0[$first][$prefix] = array_merge(
|
||||
$this->prefixesPsr0[$first][$prefix],
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-4 directories for a given namespace, either
|
||||
* appending or prepending to the ones previously set for this namespace.
|
||||
*
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param array|string $paths The PSR-4 base directories
|
||||
* @param bool $prepend Whether to prepend the directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function addPsr4($prefix, $paths, $prepend = false)
|
||||
{
|
||||
if (!$prefix) {
|
||||
// Register directories for the root namespace.
|
||||
if ($prepend) {
|
||||
$this->fallbackDirsPsr4 = array_merge(
|
||||
(array) $paths,
|
||||
$this->fallbackDirsPsr4
|
||||
);
|
||||
} else {
|
||||
$this->fallbackDirsPsr4 = array_merge(
|
||||
$this->fallbackDirsPsr4,
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
|
||||
// Register directories for a new namespace.
|
||||
$length = strlen($prefix);
|
||||
if ('\\' !== $prefix[$length - 1]) {
|
||||
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||
}
|
||||
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
||||
} elseif ($prepend) {
|
||||
// Prepend directories for an already registered namespace.
|
||||
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||
(array) $paths,
|
||||
$this->prefixDirsPsr4[$prefix]
|
||||
);
|
||||
} else {
|
||||
// Append directories for an already registered namespace.
|
||||
$this->prefixDirsPsr4[$prefix] = array_merge(
|
||||
$this->prefixDirsPsr4[$prefix],
|
||||
(array) $paths
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-0 directories for a given prefix,
|
||||
* replacing any others previously set for this prefix.
|
||||
*
|
||||
* @param string $prefix The prefix
|
||||
* @param array|string $paths The PSR-0 base directories
|
||||
*/
|
||||
public function set($prefix, $paths)
|
||||
{
|
||||
if (!$prefix) {
|
||||
$this->fallbackDirsPsr0 = (array) $paths;
|
||||
} else {
|
||||
$this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a set of PSR-4 directories for a given namespace,
|
||||
* replacing any others previously set for this namespace.
|
||||
*
|
||||
* @param string $prefix The prefix/namespace, with trailing '\\'
|
||||
* @param array|string $paths The PSR-4 base directories
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function setPsr4($prefix, $paths)
|
||||
{
|
||||
if (!$prefix) {
|
||||
$this->fallbackDirsPsr4 = (array) $paths;
|
||||
} else {
|
||||
$length = strlen($prefix);
|
||||
if ('\\' !== $prefix[$length - 1]) {
|
||||
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
|
||||
}
|
||||
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
|
||||
$this->prefixDirsPsr4[$prefix] = (array) $paths;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns on searching the include path for class files.
|
||||
*
|
||||
* @param bool $useIncludePath
|
||||
*/
|
||||
public function setUseIncludePath($useIncludePath)
|
||||
{
|
||||
$this->useIncludePath = $useIncludePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Can be used to check if the autoloader uses the include path to check
|
||||
* for classes.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getUseIncludePath()
|
||||
{
|
||||
return $this->useIncludePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns off searching the prefix and fallback directories for classes
|
||||
* that have not been registered with the class map.
|
||||
*
|
||||
* @param bool $classMapAuthoritative
|
||||
*/
|
||||
public function setClassMapAuthoritative($classMapAuthoritative)
|
||||
{
|
||||
$this->classMapAuthoritative = $classMapAuthoritative;
|
||||
}
|
||||
|
||||
/**
|
||||
* Should class lookup fail if not found in the current class map?
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isClassMapAuthoritative()
|
||||
{
|
||||
return $this->classMapAuthoritative;
|
||||
}
|
||||
|
||||
/**
|
||||
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
|
||||
*
|
||||
* @param string|null $apcuPrefix
|
||||
*/
|
||||
public function setApcuPrefix($apcuPrefix)
|
||||
{
|
||||
$this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* The APCu prefix in use, or null if APCu caching is not enabled.
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getApcuPrefix()
|
||||
{
|
||||
return $this->apcuPrefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers this instance as an autoloader.
|
||||
*
|
||||
* @param bool $prepend Whether to prepend the autoloader or not
|
||||
*/
|
||||
public function register($prepend = false)
|
||||
{
|
||||
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregisters this instance as an autoloader.
|
||||
*/
|
||||
public function unregister()
|
||||
{
|
||||
spl_autoload_unregister(array($this, 'loadClass'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the given class or interface.
|
||||
*
|
||||
* @param string $class The name of the class
|
||||
* @return bool|null True if loaded, null otherwise
|
||||
*/
|
||||
public function loadClass($class)
|
||||
{
|
||||
if ($file = $this->findFile($class)) {
|
||||
includeFile($file);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Finds the path to the file where the class is defined.
|
||||
*
|
||||
* @param string $class The name of the class
|
||||
*
|
||||
* @return string|false The path if found, false otherwise
|
||||
*/
|
||||
public function findFile($class)
|
||||
{
|
||||
// class map lookup
|
||||
if (isset($this->classMap[$class])) {
|
||||
return $this->classMap[$class];
|
||||
}
|
||||
if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
|
||||
return false;
|
||||
}
|
||||
if (null !== $this->apcuPrefix) {
|
||||
$file = apcu_fetch($this->apcuPrefix.$class, $hit);
|
||||
if ($hit) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
$file = $this->findFileWithExtension($class, '.php');
|
||||
|
||||
// Search for Hack files if we are running on HHVM
|
||||
if (false === $file && defined('HHVM_VERSION')) {
|
||||
$file = $this->findFileWithExtension($class, '.hh');
|
||||
}
|
||||
|
||||
if (null !== $this->apcuPrefix) {
|
||||
apcu_add($this->apcuPrefix.$class, $file);
|
||||
}
|
||||
|
||||
if (false === $file) {
|
||||
// Remember that this class does not exist.
|
||||
$this->missingClasses[$class] = true;
|
||||
}
|
||||
|
||||
return $file;
|
||||
}
|
||||
|
||||
private function findFileWithExtension($class, $ext)
|
||||
{
|
||||
// PSR-4 lookup
|
||||
$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
|
||||
|
||||
$first = $class[0];
|
||||
if (isset($this->prefixLengthsPsr4[$first])) {
|
||||
$subPath = $class;
|
||||
while (false !== $lastPos = strrpos($subPath, '\\')) {
|
||||
$subPath = substr($subPath, 0, $lastPos);
|
||||
$search = $subPath . '\\';
|
||||
if (isset($this->prefixDirsPsr4[$search])) {
|
||||
$pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
|
||||
foreach ($this->prefixDirsPsr4[$search] as $dir) {
|
||||
if (file_exists($file = $dir . $pathEnd)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-4 fallback dirs
|
||||
foreach ($this->fallbackDirsPsr4 as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 lookup
|
||||
if (false !== $pos = strrpos($class, '\\')) {
|
||||
// namespaced class name
|
||||
$logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
|
||||
. strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
|
||||
} else {
|
||||
// PEAR-like class name
|
||||
$logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
|
||||
}
|
||||
|
||||
if (isset($this->prefixesPsr0[$first])) {
|
||||
foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
|
||||
if (0 === strpos($class, $prefix)) {
|
||||
foreach ($dirs as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 fallback dirs
|
||||
foreach ($this->fallbackDirsPsr0 as $dir) {
|
||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
|
||||
// PSR-0 include paths.
|
||||
if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
|
||||
return $file;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Scope isolated include.
|
||||
*
|
||||
* Prevents access to $this/self from included files.
|
||||
*/
|
||||
function includeFile($file)
|
||||
{
|
||||
include $file;
|
||||
}
|
||||
-434
@@ -1,434 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Composer;
|
||||
|
||||
use Composer\Semver\VersionParser;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class InstalledVersions
|
||||
{
|
||||
private static $installed = array (
|
||||
'root' =>
|
||||
array (
|
||||
'pretty_version' => 'dev-master',
|
||||
'version' => 'dev-master',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'c9f65d5ca918842689a627444aec27e5d6aeffc5',
|
||||
'name' => 'topthink/think',
|
||||
),
|
||||
'versions' =>
|
||||
array (
|
||||
'league/flysystem' =>
|
||||
array (
|
||||
'pretty_version' => '1.1.3',
|
||||
'version' => '1.1.3.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '9be3b16c877d477357c015cec057548cf9b2a14a',
|
||||
),
|
||||
'league/flysystem-cached-adapter' =>
|
||||
array (
|
||||
'pretty_version' => '1.1.0',
|
||||
'version' => '1.1.0.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'd1925efb2207ac4be3ad0c40b8277175f99ffaff',
|
||||
),
|
||||
'league/mime-type-detection' =>
|
||||
array (
|
||||
'pretty_version' => '1.5.1',
|
||||
'version' => '1.5.1.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '353f66d7555d8a90781f6f5e7091932f9a4250aa',
|
||||
),
|
||||
'nette/php-generator' =>
|
||||
array (
|
||||
'pretty_version' => 'v3.4.1',
|
||||
'version' => '3.4.1.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '7051954c534cebafd650efe8b145ac75b223cb66',
|
||||
),
|
||||
'nette/utils' =>
|
||||
array (
|
||||
'pretty_version' => 'v3.1.3',
|
||||
'version' => '3.1.3.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'c09937fbb24987b2a41c6022ebe84f4f1b8eec0f',
|
||||
),
|
||||
'open-smf/connection-pool' =>
|
||||
array (
|
||||
'pretty_version' => 'v1.0.15',
|
||||
'version' => '1.0.15.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'f9289cb5ee61d3e901bc74ab745e5b2162461a1e',
|
||||
),
|
||||
'psr/cache' =>
|
||||
array (
|
||||
'pretty_version' => '1.0.1',
|
||||
'version' => '1.0.1.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'd11b50ad223250cf17b86e38383413f5a6764bf8',
|
||||
),
|
||||
'psr/container' =>
|
||||
array (
|
||||
'pretty_version' => '1.0.0',
|
||||
'version' => '1.0.0.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'b7ce3b176482dbbc1245ebf52b181af44c2cf55f',
|
||||
),
|
||||
'psr/log' =>
|
||||
array (
|
||||
'pretty_version' => '1.1.3',
|
||||
'version' => '1.1.3.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc',
|
||||
),
|
||||
'psr/simple-cache' =>
|
||||
array (
|
||||
'pretty_version' => '1.0.1',
|
||||
'version' => '1.0.1.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '408d5eafb83c57f6365a3ca330ff23aa4a5fa39b',
|
||||
),
|
||||
'swoole/ide-helper' =>
|
||||
array (
|
||||
'pretty_version' => '4.5.6',
|
||||
'version' => '4.5.6.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'ab23c2c35880144a6060a3f178a68af0d0c6fc93',
|
||||
),
|
||||
'symfony/finder' =>
|
||||
array (
|
||||
'pretty_version' => 'v4.4.16',
|
||||
'version' => '4.4.16.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '26f63b8d4e92f2eecd90f6791a563ebb001abe31',
|
||||
),
|
||||
'symfony/polyfill-mbstring' =>
|
||||
array (
|
||||
'pretty_version' => 'v1.20.0',
|
||||
'version' => '1.20.0.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '39d483bdf39be819deabf04ec872eb0b2410b531',
|
||||
),
|
||||
'symfony/polyfill-php72' =>
|
||||
array (
|
||||
'pretty_version' => 'v1.20.0',
|
||||
'version' => '1.20.0.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'cede45fcdfabdd6043b3592e83678e42ec69e930',
|
||||
),
|
||||
'symfony/polyfill-php80' =>
|
||||
array (
|
||||
'pretty_version' => 'v1.20.0',
|
||||
'version' => '1.20.0.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'e70aa8b064c5b72d3df2abd5ab1e90464ad009de',
|
||||
),
|
||||
'symfony/var-dumper' =>
|
||||
array (
|
||||
'pretty_version' => 'v4.4.16',
|
||||
'version' => '4.4.16.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '3718e18b68d955348ad860e505991802c09f5f73',
|
||||
),
|
||||
'topthink/framework' =>
|
||||
array (
|
||||
'pretty_version' => 'v6.0.5',
|
||||
'version' => '6.0.5.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '85625d984f5c96699dc27d384869f206c3aec1cc',
|
||||
),
|
||||
'topthink/think' =>
|
||||
array (
|
||||
'pretty_version' => 'dev-master',
|
||||
'version' => 'dev-master',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'c9f65d5ca918842689a627444aec27e5d6aeffc5',
|
||||
),
|
||||
'topthink/think-captcha' =>
|
||||
array (
|
||||
'pretty_version' => 'v3.0.3',
|
||||
'version' => '3.0.3.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '1eef3717c1bcf4f5bbe2d1a1c704011d330a8b55',
|
||||
),
|
||||
'topthink/think-helper' =>
|
||||
array (
|
||||
'pretty_version' => 'v3.1.4',
|
||||
'version' => '3.1.4.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'c28d37743bda4a0455286ca85b17b5791d626e10',
|
||||
),
|
||||
'topthink/think-multi-app' =>
|
||||
array (
|
||||
'pretty_version' => 'v1.0.14',
|
||||
'version' => '1.0.14.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'ccaad7c2d33f42cb1cc2a78d6610aaec02cea4c3',
|
||||
),
|
||||
'topthink/think-orm' =>
|
||||
array (
|
||||
'pretty_version' => 'v2.0.34',
|
||||
'version' => '2.0.34.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '57f9b98895b0ff4ae7b7b75e51456fd8cb8fb629',
|
||||
),
|
||||
'topthink/think-swoole' =>
|
||||
array (
|
||||
'pretty_version' => 'v3.0.9',
|
||||
'version' => '3.0.9.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'c61e95cdc0669f4fe3382e25def9ae25797c0508',
|
||||
),
|
||||
'topthink/think-template' =>
|
||||
array (
|
||||
'pretty_version' => 'v2.0.7',
|
||||
'version' => '2.0.7.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'e98bdbb4a4c94b442f17dfceba81e0134d4fbd19',
|
||||
),
|
||||
'topthink/think-trace' =>
|
||||
array (
|
||||
'pretty_version' => 'v1.4',
|
||||
'version' => '1.4.0.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '9a9fa8f767b6c66c5a133ad21ca1bc96ad329444',
|
||||
),
|
||||
'topthink/think-view' =>
|
||||
array (
|
||||
'pretty_version' => 'v1.0.14',
|
||||
'version' => '1.0.14.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'edce0ae2c9551ab65f9e94a222604b0dead3576d',
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static function getInstalledPackages()
|
||||
{
|
||||
return array_keys(self::$installed['versions']);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static function isInstalled($packageName)
|
||||
{
|
||||
return isset(self::$installed['versions'][$packageName]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static function satisfies(VersionParser $parser, $packageName, $constraint)
|
||||
{
|
||||
$constraint = $parser->parseConstraints($constraint);
|
||||
$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
|
||||
|
||||
return $provided->matches($constraint);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static function getVersionRanges($packageName)
|
||||
{
|
||||
if (!isset(self::$installed['versions'][$packageName])) {
|
||||
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||
}
|
||||
|
||||
$ranges = array();
|
||||
if (isset(self::$installed['versions'][$packageName]['pretty_version'])) {
|
||||
$ranges[] = self::$installed['versions'][$packageName]['pretty_version'];
|
||||
}
|
||||
if (array_key_exists('aliases', self::$installed['versions'][$packageName])) {
|
||||
$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['aliases']);
|
||||
}
|
||||
if (array_key_exists('replaced', self::$installed['versions'][$packageName])) {
|
||||
$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['replaced']);
|
||||
}
|
||||
if (array_key_exists('provided', self::$installed['versions'][$packageName])) {
|
||||
$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['provided']);
|
||||
}
|
||||
|
||||
return implode(' || ', $ranges);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static function getVersion($packageName)
|
||||
{
|
||||
if (!isset(self::$installed['versions'][$packageName])) {
|
||||
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||
}
|
||||
|
||||
if (!isset(self::$installed['versions'][$packageName]['version'])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return self::$installed['versions'][$packageName]['version'];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static function getPrettyVersion($packageName)
|
||||
{
|
||||
if (!isset(self::$installed['versions'][$packageName])) {
|
||||
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||
}
|
||||
|
||||
if (!isset(self::$installed['versions'][$packageName]['pretty_version'])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return self::$installed['versions'][$packageName]['pretty_version'];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static function getReference($packageName)
|
||||
{
|
||||
if (!isset(self::$installed['versions'][$packageName])) {
|
||||
throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
|
||||
}
|
||||
|
||||
if (!isset(self::$installed['versions'][$packageName]['reference'])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return self::$installed['versions'][$packageName]['reference'];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static function getRootPackage()
|
||||
{
|
||||
return self::$installed['root'];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static function getRawData()
|
||||
{
|
||||
return self::$installed;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static function reload($data)
|
||||
{
|
||||
self::$installed = $data;
|
||||
}
|
||||
}
|
||||
Vendored
-21
@@ -1,21 +0,0 @@
|
||||
|
||||
Copyright (c) Nils Adermann, Jordi Boggiano
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
-642
@@ -1,642 +0,0 @@
|
||||
<?php
|
||||
|
||||
// autoload_classmap.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'Attribute' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
|
||||
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
|
||||
'League\\Flysystem\\AdapterInterface' => $vendorDir . '/league/flysystem/src/AdapterInterface.php',
|
||||
'League\\Flysystem\\Adapter\\AbstractAdapter' => $vendorDir . '/league/flysystem/src/Adapter/AbstractAdapter.php',
|
||||
'League\\Flysystem\\Adapter\\AbstractFtpAdapter' => $vendorDir . '/league/flysystem/src/Adapter/AbstractFtpAdapter.php',
|
||||
'League\\Flysystem\\Adapter\\CanOverwriteFiles' => $vendorDir . '/league/flysystem/src/Adapter/CanOverwriteFiles.php',
|
||||
'League\\Flysystem\\Adapter\\Ftp' => $vendorDir . '/league/flysystem/src/Adapter/Ftp.php',
|
||||
'League\\Flysystem\\Adapter\\Ftpd' => $vendorDir . '/league/flysystem/src/Adapter/Ftpd.php',
|
||||
'League\\Flysystem\\Adapter\\Local' => $vendorDir . '/league/flysystem/src/Adapter/Local.php',
|
||||
'League\\Flysystem\\Adapter\\NullAdapter' => $vendorDir . '/league/flysystem/src/Adapter/NullAdapter.php',
|
||||
'League\\Flysystem\\Adapter\\Polyfill\\NotSupportingVisibilityTrait' => $vendorDir . '/league/flysystem/src/Adapter/Polyfill/NotSupportingVisibilityTrait.php',
|
||||
'League\\Flysystem\\Adapter\\Polyfill\\StreamedCopyTrait' => $vendorDir . '/league/flysystem/src/Adapter/Polyfill/StreamedCopyTrait.php',
|
||||
'League\\Flysystem\\Adapter\\Polyfill\\StreamedReadingTrait' => $vendorDir . '/league/flysystem/src/Adapter/Polyfill/StreamedReadingTrait.php',
|
||||
'League\\Flysystem\\Adapter\\Polyfill\\StreamedTrait' => $vendorDir . '/league/flysystem/src/Adapter/Polyfill/StreamedTrait.php',
|
||||
'League\\Flysystem\\Adapter\\Polyfill\\StreamedWritingTrait' => $vendorDir . '/league/flysystem/src/Adapter/Polyfill/StreamedWritingTrait.php',
|
||||
'League\\Flysystem\\Adapter\\SynologyFtp' => $vendorDir . '/league/flysystem/src/Adapter/SynologyFtp.php',
|
||||
'League\\Flysystem\\Cached\\CacheInterface' => $vendorDir . '/league/flysystem-cached-adapter/src/CacheInterface.php',
|
||||
'League\\Flysystem\\Cached\\CachedAdapter' => $vendorDir . '/league/flysystem-cached-adapter/src/CachedAdapter.php',
|
||||
'League\\Flysystem\\Cached\\Storage\\AbstractCache' => $vendorDir . '/league/flysystem-cached-adapter/src/Storage/AbstractCache.php',
|
||||
'League\\Flysystem\\Cached\\Storage\\Adapter' => $vendorDir . '/league/flysystem-cached-adapter/src/Storage/Adapter.php',
|
||||
'League\\Flysystem\\Cached\\Storage\\Memcached' => $vendorDir . '/league/flysystem-cached-adapter/src/Storage/Memcached.php',
|
||||
'League\\Flysystem\\Cached\\Storage\\Memory' => $vendorDir . '/league/flysystem-cached-adapter/src/Storage/Memory.php',
|
||||
'League\\Flysystem\\Cached\\Storage\\Noop' => $vendorDir . '/league/flysystem-cached-adapter/src/Storage/Noop.php',
|
||||
'League\\Flysystem\\Cached\\Storage\\PhpRedis' => $vendorDir . '/league/flysystem-cached-adapter/src/Storage/PhpRedis.php',
|
||||
'League\\Flysystem\\Cached\\Storage\\Predis' => $vendorDir . '/league/flysystem-cached-adapter/src/Storage/Predis.php',
|
||||
'League\\Flysystem\\Cached\\Storage\\Psr6Cache' => $vendorDir . '/league/flysystem-cached-adapter/src/Storage/Psr6Cache.php',
|
||||
'League\\Flysystem\\Cached\\Storage\\Stash' => $vendorDir . '/league/flysystem-cached-adapter/src/Storage/Stash.php',
|
||||
'League\\Flysystem\\Config' => $vendorDir . '/league/flysystem/src/Config.php',
|
||||
'League\\Flysystem\\ConfigAwareTrait' => $vendorDir . '/league/flysystem/src/ConfigAwareTrait.php',
|
||||
'League\\Flysystem\\ConnectionErrorException' => $vendorDir . '/league/flysystem/src/ConnectionErrorException.php',
|
||||
'League\\Flysystem\\ConnectionRuntimeException' => $vendorDir . '/league/flysystem/src/ConnectionRuntimeException.php',
|
||||
'League\\Flysystem\\Directory' => $vendorDir . '/league/flysystem/src/Directory.php',
|
||||
'League\\Flysystem\\Exception' => $vendorDir . '/league/flysystem/src/Exception.php',
|
||||
'League\\Flysystem\\File' => $vendorDir . '/league/flysystem/src/File.php',
|
||||
'League\\Flysystem\\FileExistsException' => $vendorDir . '/league/flysystem/src/FileExistsException.php',
|
||||
'League\\Flysystem\\FileNotFoundException' => $vendorDir . '/league/flysystem/src/FileNotFoundException.php',
|
||||
'League\\Flysystem\\Filesystem' => $vendorDir . '/league/flysystem/src/Filesystem.php',
|
||||
'League\\Flysystem\\FilesystemException' => $vendorDir . '/league/flysystem/src/FilesystemException.php',
|
||||
'League\\Flysystem\\FilesystemInterface' => $vendorDir . '/league/flysystem/src/FilesystemInterface.php',
|
||||
'League\\Flysystem\\FilesystemNotFoundException' => $vendorDir . '/league/flysystem/src/FilesystemNotFoundException.php',
|
||||
'League\\Flysystem\\Handler' => $vendorDir . '/league/flysystem/src/Handler.php',
|
||||
'League\\Flysystem\\InvalidRootException' => $vendorDir . '/league/flysystem/src/InvalidRootException.php',
|
||||
'League\\Flysystem\\MountManager' => $vendorDir . '/league/flysystem/src/MountManager.php',
|
||||
'League\\Flysystem\\NotSupportedException' => $vendorDir . '/league/flysystem/src/NotSupportedException.php',
|
||||
'League\\Flysystem\\PluginInterface' => $vendorDir . '/league/flysystem/src/PluginInterface.php',
|
||||
'League\\Flysystem\\Plugin\\AbstractPlugin' => $vendorDir . '/league/flysystem/src/Plugin/AbstractPlugin.php',
|
||||
'League\\Flysystem\\Plugin\\EmptyDir' => $vendorDir . '/league/flysystem/src/Plugin/EmptyDir.php',
|
||||
'League\\Flysystem\\Plugin\\ForcedCopy' => $vendorDir . '/league/flysystem/src/Plugin/ForcedCopy.php',
|
||||
'League\\Flysystem\\Plugin\\ForcedRename' => $vendorDir . '/league/flysystem/src/Plugin/ForcedRename.php',
|
||||
'League\\Flysystem\\Plugin\\GetWithMetadata' => $vendorDir . '/league/flysystem/src/Plugin/GetWithMetadata.php',
|
||||
'League\\Flysystem\\Plugin\\ListFiles' => $vendorDir . '/league/flysystem/src/Plugin/ListFiles.php',
|
||||
'League\\Flysystem\\Plugin\\ListPaths' => $vendorDir . '/league/flysystem/src/Plugin/ListPaths.php',
|
||||
'League\\Flysystem\\Plugin\\ListWith' => $vendorDir . '/league/flysystem/src/Plugin/ListWith.php',
|
||||
'League\\Flysystem\\Plugin\\PluggableTrait' => $vendorDir . '/league/flysystem/src/Plugin/PluggableTrait.php',
|
||||
'League\\Flysystem\\Plugin\\PluginNotFoundException' => $vendorDir . '/league/flysystem/src/Plugin/PluginNotFoundException.php',
|
||||
'League\\Flysystem\\ReadInterface' => $vendorDir . '/league/flysystem/src/ReadInterface.php',
|
||||
'League\\Flysystem\\RootViolationException' => $vendorDir . '/league/flysystem/src/RootViolationException.php',
|
||||
'League\\Flysystem\\SafeStorage' => $vendorDir . '/league/flysystem/src/SafeStorage.php',
|
||||
'League\\Flysystem\\UnreadableFileException' => $vendorDir . '/league/flysystem/src/UnreadableFileException.php',
|
||||
'League\\Flysystem\\Util' => $vendorDir . '/league/flysystem/src/Util.php',
|
||||
'League\\Flysystem\\Util\\ContentListingFormatter' => $vendorDir . '/league/flysystem/src/Util/ContentListingFormatter.php',
|
||||
'League\\Flysystem\\Util\\MimeType' => $vendorDir . '/league/flysystem/src/Util/MimeType.php',
|
||||
'League\\Flysystem\\Util\\StreamHasher' => $vendorDir . '/league/flysystem/src/Util/StreamHasher.php',
|
||||
'League\\MimeTypeDetection\\EmptyExtensionToMimeTypeMap' => $vendorDir . '/league/mime-type-detection/src/EmptyExtensionToMimeTypeMap.php',
|
||||
'League\\MimeTypeDetection\\ExtensionMimeTypeDetector' => $vendorDir . '/league/mime-type-detection/src/ExtensionMimeTypeDetector.php',
|
||||
'League\\MimeTypeDetection\\ExtensionToMimeTypeMap' => $vendorDir . '/league/mime-type-detection/src/ExtensionToMimeTypeMap.php',
|
||||
'League\\MimeTypeDetection\\FinfoMimeTypeDetector' => $vendorDir . '/league/mime-type-detection/src/FinfoMimeTypeDetector.php',
|
||||
'League\\MimeTypeDetection\\GeneratedExtensionToMimeTypeMap' => $vendorDir . '/league/mime-type-detection/src/GeneratedExtensionToMimeTypeMap.php',
|
||||
'League\\MimeTypeDetection\\MimeTypeDetector' => $vendorDir . '/league/mime-type-detection/src/MimeTypeDetector.php',
|
||||
'Nette\\ArgumentOutOfRangeException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\DeprecatedException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\DirectoryNotFoundException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\FileNotFoundException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\IOException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\InvalidArgumentException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\InvalidStateException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\Iterators\\CachingIterator' => $vendorDir . '/nette/utils/src/Iterators/CachingIterator.php',
|
||||
'Nette\\Iterators\\Mapper' => $vendorDir . '/nette/utils/src/Iterators/Mapper.php',
|
||||
'Nette\\Localization\\ITranslator' => $vendorDir . '/nette/utils/src/Utils/ITranslator.php',
|
||||
'Nette\\MemberAccessException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\NotImplementedException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\NotSupportedException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\OutOfRangeException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\PhpGenerator\\ClassType' => $vendorDir . '/nette/php-generator/src/PhpGenerator/ClassType.php',
|
||||
'Nette\\PhpGenerator\\Closure' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Closure.php',
|
||||
'Nette\\PhpGenerator\\Constant' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Constant.php',
|
||||
'Nette\\PhpGenerator\\Dumper' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Dumper.php',
|
||||
'Nette\\PhpGenerator\\Factory' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Factory.php',
|
||||
'Nette\\PhpGenerator\\GlobalFunction' => $vendorDir . '/nette/php-generator/src/PhpGenerator/GlobalFunction.php',
|
||||
'Nette\\PhpGenerator\\Helpers' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Helpers.php',
|
||||
'Nette\\PhpGenerator\\Literal' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Literal.php',
|
||||
'Nette\\PhpGenerator\\Method' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Method.php',
|
||||
'Nette\\PhpGenerator\\Parameter' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Parameter.php',
|
||||
'Nette\\PhpGenerator\\PhpFile' => $vendorDir . '/nette/php-generator/src/PhpGenerator/PhpFile.php',
|
||||
'Nette\\PhpGenerator\\PhpLiteral' => $vendorDir . '/nette/php-generator/src/PhpGenerator/PhpLiteral.php',
|
||||
'Nette\\PhpGenerator\\PhpNamespace' => $vendorDir . '/nette/php-generator/src/PhpGenerator/PhpNamespace.php',
|
||||
'Nette\\PhpGenerator\\Printer' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Printer.php',
|
||||
'Nette\\PhpGenerator\\Property' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Property.php',
|
||||
'Nette\\PhpGenerator\\PsrPrinter' => $vendorDir . '/nette/php-generator/src/PhpGenerator/PsrPrinter.php',
|
||||
'Nette\\PhpGenerator\\Traits\\CommentAware' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Traits/CommentAware.php',
|
||||
'Nette\\PhpGenerator\\Traits\\FunctionLike' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Traits/FunctionLike.php',
|
||||
'Nette\\PhpGenerator\\Traits\\NameAware' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Traits/NameAware.php',
|
||||
'Nette\\PhpGenerator\\Traits\\VisibilityAware' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Traits/VisibilityAware.php',
|
||||
'Nette\\PhpGenerator\\Type' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Type.php',
|
||||
'Nette\\SmartObject' => $vendorDir . '/nette/utils/src/Utils/SmartObject.php',
|
||||
'Nette\\StaticClass' => $vendorDir . '/nette/utils/src/Utils/StaticClass.php',
|
||||
'Nette\\UnexpectedValueException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\Utils\\ArrayHash' => $vendorDir . '/nette/utils/src/Utils/ArrayHash.php',
|
||||
'Nette\\Utils\\ArrayList' => $vendorDir . '/nette/utils/src/Utils/ArrayList.php',
|
||||
'Nette\\Utils\\Arrays' => $vendorDir . '/nette/utils/src/Utils/Arrays.php',
|
||||
'Nette\\Utils\\AssertionException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\Utils\\Callback' => $vendorDir . '/nette/utils/src/Utils/Callback.php',
|
||||
'Nette\\Utils\\DateTime' => $vendorDir . '/nette/utils/src/Utils/DateTime.php',
|
||||
'Nette\\Utils\\FileSystem' => $vendorDir . '/nette/utils/src/Utils/FileSystem.php',
|
||||
'Nette\\Utils\\Helpers' => $vendorDir . '/nette/utils/src/Utils/Helpers.php',
|
||||
'Nette\\Utils\\Html' => $vendorDir . '/nette/utils/src/Utils/Html.php',
|
||||
'Nette\\Utils\\IHtmlString' => $vendorDir . '/nette/utils/src/Utils/IHtmlString.php',
|
||||
'Nette\\Utils\\Image' => $vendorDir . '/nette/utils/src/Utils/Image.php',
|
||||
'Nette\\Utils\\ImageException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\Utils\\Json' => $vendorDir . '/nette/utils/src/Utils/Json.php',
|
||||
'Nette\\Utils\\JsonException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\Utils\\ObjectHelpers' => $vendorDir . '/nette/utils/src/Utils/ObjectHelpers.php',
|
||||
'Nette\\Utils\\ObjectMixin' => $vendorDir . '/nette/utils/src/Utils/ObjectMixin.php',
|
||||
'Nette\\Utils\\Paginator' => $vendorDir . '/nette/utils/src/Utils/Paginator.php',
|
||||
'Nette\\Utils\\Random' => $vendorDir . '/nette/utils/src/Utils/Random.php',
|
||||
'Nette\\Utils\\Reflection' => $vendorDir . '/nette/utils/src/Utils/Reflection.php',
|
||||
'Nette\\Utils\\RegexpException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\Utils\\Strings' => $vendorDir . '/nette/utils/src/Utils/Strings.php',
|
||||
'Nette\\Utils\\UnknownImageFileException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\Utils\\Validators' => $vendorDir . '/nette/utils/src/Utils/Validators.php',
|
||||
'Psr\\Cache\\CacheException' => $vendorDir . '/psr/cache/src/CacheException.php',
|
||||
'Psr\\Cache\\CacheItemInterface' => $vendorDir . '/psr/cache/src/CacheItemInterface.php',
|
||||
'Psr\\Cache\\CacheItemPoolInterface' => $vendorDir . '/psr/cache/src/CacheItemPoolInterface.php',
|
||||
'Psr\\Cache\\InvalidArgumentException' => $vendorDir . '/psr/cache/src/InvalidArgumentException.php',
|
||||
'Psr\\Container\\ContainerExceptionInterface' => $vendorDir . '/psr/container/src/ContainerExceptionInterface.php',
|
||||
'Psr\\Container\\ContainerInterface' => $vendorDir . '/psr/container/src/ContainerInterface.php',
|
||||
'Psr\\Container\\NotFoundExceptionInterface' => $vendorDir . '/psr/container/src/NotFoundExceptionInterface.php',
|
||||
'Psr\\Log\\AbstractLogger' => $vendorDir . '/psr/log/Psr/Log/AbstractLogger.php',
|
||||
'Psr\\Log\\InvalidArgumentException' => $vendorDir . '/psr/log/Psr/Log/InvalidArgumentException.php',
|
||||
'Psr\\Log\\LogLevel' => $vendorDir . '/psr/log/Psr/Log/LogLevel.php',
|
||||
'Psr\\Log\\LoggerAwareInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerAwareInterface.php',
|
||||
'Psr\\Log\\LoggerAwareTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerAwareTrait.php',
|
||||
'Psr\\Log\\LoggerInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerInterface.php',
|
||||
'Psr\\Log\\LoggerTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerTrait.php',
|
||||
'Psr\\Log\\NullLogger' => $vendorDir . '/psr/log/Psr/Log/NullLogger.php',
|
||||
'Psr\\Log\\Test\\DummyTest' => $vendorDir . '/psr/log/Psr/Log/Test/DummyTest.php',
|
||||
'Psr\\Log\\Test\\LoggerInterfaceTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
|
||||
'Psr\\Log\\Test\\TestLogger' => $vendorDir . '/psr/log/Psr/Log/Test/TestLogger.php',
|
||||
'Psr\\SimpleCache\\CacheException' => $vendorDir . '/psr/simple-cache/src/CacheException.php',
|
||||
'Psr\\SimpleCache\\CacheInterface' => $vendorDir . '/psr/simple-cache/src/CacheInterface.php',
|
||||
'Psr\\SimpleCache\\InvalidArgumentException' => $vendorDir . '/psr/simple-cache/src/InvalidArgumentException.php',
|
||||
'Smf\\ConnectionPool\\BorrowConnectionTimeoutException' => $vendorDir . '/open-smf/connection-pool/src/BorrowConnectionTimeoutException.php',
|
||||
'Smf\\ConnectionPool\\ConnectionPool' => $vendorDir . '/open-smf/connection-pool/src/ConnectionPool.php',
|
||||
'Smf\\ConnectionPool\\ConnectionPoolInterface' => $vendorDir . '/open-smf/connection-pool/src/ConnectionPoolInterface.php',
|
||||
'Smf\\ConnectionPool\\ConnectionPoolTrait' => $vendorDir . '/open-smf/connection-pool/src/ConnectionPoolTrait.php',
|
||||
'Smf\\ConnectionPool\\Connectors\\ConnectorInterface' => $vendorDir . '/open-smf/connection-pool/src/Connectors/ConnectorInterface.php',
|
||||
'Smf\\ConnectionPool\\Connectors\\CoroutineMySQLConnector' => $vendorDir . '/open-smf/connection-pool/src/Connectors/CoroutineMySQLConnector.php',
|
||||
'Smf\\ConnectionPool\\Connectors\\CoroutinePostgreSQLConnector' => $vendorDir . '/open-smf/connection-pool/src/Connectors/CoroutinePostgreSQLConnector.php',
|
||||
'Smf\\ConnectionPool\\Connectors\\CoroutineRedisConnector' => $vendorDir . '/open-smf/connection-pool/src/Connectors/CoroutineRedisConnector.php',
|
||||
'Smf\\ConnectionPool\\Connectors\\PDOConnector' => $vendorDir . '/open-smf/connection-pool/src/Connectors/PDOConnector.php',
|
||||
'Smf\\ConnectionPool\\Connectors\\PhpRedisConnector' => $vendorDir . '/open-smf/connection-pool/src/Connectors/PhpRedisConnector.php',
|
||||
'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
|
||||
'Symfony\\Component\\Finder\\Comparator\\Comparator' => $vendorDir . '/symfony/finder/Comparator/Comparator.php',
|
||||
'Symfony\\Component\\Finder\\Comparator\\DateComparator' => $vendorDir . '/symfony/finder/Comparator/DateComparator.php',
|
||||
'Symfony\\Component\\Finder\\Comparator\\NumberComparator' => $vendorDir . '/symfony/finder/Comparator/NumberComparator.php',
|
||||
'Symfony\\Component\\Finder\\Exception\\AccessDeniedException' => $vendorDir . '/symfony/finder/Exception/AccessDeniedException.php',
|
||||
'Symfony\\Component\\Finder\\Exception\\DirectoryNotFoundException' => $vendorDir . '/symfony/finder/Exception/DirectoryNotFoundException.php',
|
||||
'Symfony\\Component\\Finder\\Finder' => $vendorDir . '/symfony/finder/Finder.php',
|
||||
'Symfony\\Component\\Finder\\Gitignore' => $vendorDir . '/symfony/finder/Gitignore.php',
|
||||
'Symfony\\Component\\Finder\\Glob' => $vendorDir . '/symfony/finder/Glob.php',
|
||||
'Symfony\\Component\\Finder\\Iterator\\CustomFilterIterator' => $vendorDir . '/symfony/finder/Iterator/CustomFilterIterator.php',
|
||||
'Symfony\\Component\\Finder\\Iterator\\DateRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/DateRangeFilterIterator.php',
|
||||
'Symfony\\Component\\Finder\\Iterator\\DepthRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/DepthRangeFilterIterator.php',
|
||||
'Symfony\\Component\\Finder\\Iterator\\ExcludeDirectoryFilterIterator' => $vendorDir . '/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php',
|
||||
'Symfony\\Component\\Finder\\Iterator\\FileTypeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FileTypeFilterIterator.php',
|
||||
'Symfony\\Component\\Finder\\Iterator\\FilecontentFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FilecontentFilterIterator.php',
|
||||
'Symfony\\Component\\Finder\\Iterator\\FilenameFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FilenameFilterIterator.php',
|
||||
'Symfony\\Component\\Finder\\Iterator\\MultiplePcreFilterIterator' => $vendorDir . '/symfony/finder/Iterator/MultiplePcreFilterIterator.php',
|
||||
'Symfony\\Component\\Finder\\Iterator\\PathFilterIterator' => $vendorDir . '/symfony/finder/Iterator/PathFilterIterator.php',
|
||||
'Symfony\\Component\\Finder\\Iterator\\RecursiveDirectoryIterator' => $vendorDir . '/symfony/finder/Iterator/RecursiveDirectoryIterator.php',
|
||||
'Symfony\\Component\\Finder\\Iterator\\SizeRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/SizeRangeFilterIterator.php',
|
||||
'Symfony\\Component\\Finder\\Iterator\\SortableIterator' => $vendorDir . '/symfony/finder/Iterator/SortableIterator.php',
|
||||
'Symfony\\Component\\Finder\\SplFileInfo' => $vendorDir . '/symfony/finder/SplFileInfo.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\AmqpCaster' => $vendorDir . '/symfony/var-dumper/Caster/AmqpCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\ArgsStub' => $vendorDir . '/symfony/var-dumper/Caster/ArgsStub.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\Caster' => $vendorDir . '/symfony/var-dumper/Caster/Caster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\ClassStub' => $vendorDir . '/symfony/var-dumper/Caster/ClassStub.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\ConstStub' => $vendorDir . '/symfony/var-dumper/Caster/ConstStub.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\CutArrayStub' => $vendorDir . '/symfony/var-dumper/Caster/CutArrayStub.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\CutStub' => $vendorDir . '/symfony/var-dumper/Caster/CutStub.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\DOMCaster' => $vendorDir . '/symfony/var-dumper/Caster/DOMCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\DateCaster' => $vendorDir . '/symfony/var-dumper/Caster/DateCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\DoctrineCaster' => $vendorDir . '/symfony/var-dumper/Caster/DoctrineCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\DsCaster' => $vendorDir . '/symfony/var-dumper/Caster/DsCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\DsPairStub' => $vendorDir . '/symfony/var-dumper/Caster/DsPairStub.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\EnumStub' => $vendorDir . '/symfony/var-dumper/Caster/EnumStub.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\ExceptionCaster' => $vendorDir . '/symfony/var-dumper/Caster/ExceptionCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\FrameStub' => $vendorDir . '/symfony/var-dumper/Caster/FrameStub.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\GmpCaster' => $vendorDir . '/symfony/var-dumper/Caster/GmpCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\ImagineCaster' => $vendorDir . '/symfony/var-dumper/Caster/ImagineCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\ImgStub' => $vendorDir . '/symfony/var-dumper/Caster/ImgStub.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\IntlCaster' => $vendorDir . '/symfony/var-dumper/Caster/IntlCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\LinkStub' => $vendorDir . '/symfony/var-dumper/Caster/LinkStub.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\MemcachedCaster' => $vendorDir . '/symfony/var-dumper/Caster/MemcachedCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\PdoCaster' => $vendorDir . '/symfony/var-dumper/Caster/PdoCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\PgSqlCaster' => $vendorDir . '/symfony/var-dumper/Caster/PgSqlCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\ProxyManagerCaster' => $vendorDir . '/symfony/var-dumper/Caster/ProxyManagerCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\RedisCaster' => $vendorDir . '/symfony/var-dumper/Caster/RedisCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\ReflectionCaster' => $vendorDir . '/symfony/var-dumper/Caster/ReflectionCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\ResourceCaster' => $vendorDir . '/symfony/var-dumper/Caster/ResourceCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\SplCaster' => $vendorDir . '/symfony/var-dumper/Caster/SplCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\StubCaster' => $vendorDir . '/symfony/var-dumper/Caster/StubCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\SymfonyCaster' => $vendorDir . '/symfony/var-dumper/Caster/SymfonyCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\TraceStub' => $vendorDir . '/symfony/var-dumper/Caster/TraceStub.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\UuidCaster' => $vendorDir . '/symfony/var-dumper/Caster/UuidCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\XmlReaderCaster' => $vendorDir . '/symfony/var-dumper/Caster/XmlReaderCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\XmlResourceCaster' => $vendorDir . '/symfony/var-dumper/Caster/XmlResourceCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Cloner\\AbstractCloner' => $vendorDir . '/symfony/var-dumper/Cloner/AbstractCloner.php',
|
||||
'Symfony\\Component\\VarDumper\\Cloner\\ClonerInterface' => $vendorDir . '/symfony/var-dumper/Cloner/ClonerInterface.php',
|
||||
'Symfony\\Component\\VarDumper\\Cloner\\Cursor' => $vendorDir . '/symfony/var-dumper/Cloner/Cursor.php',
|
||||
'Symfony\\Component\\VarDumper\\Cloner\\Data' => $vendorDir . '/symfony/var-dumper/Cloner/Data.php',
|
||||
'Symfony\\Component\\VarDumper\\Cloner\\DumperInterface' => $vendorDir . '/symfony/var-dumper/Cloner/DumperInterface.php',
|
||||
'Symfony\\Component\\VarDumper\\Cloner\\Stub' => $vendorDir . '/symfony/var-dumper/Cloner/Stub.php',
|
||||
'Symfony\\Component\\VarDumper\\Cloner\\VarCloner' => $vendorDir . '/symfony/var-dumper/Cloner/VarCloner.php',
|
||||
'Symfony\\Component\\VarDumper\\Command\\Descriptor\\CliDescriptor' => $vendorDir . '/symfony/var-dumper/Command/Descriptor/CliDescriptor.php',
|
||||
'Symfony\\Component\\VarDumper\\Command\\Descriptor\\DumpDescriptorInterface' => $vendorDir . '/symfony/var-dumper/Command/Descriptor/DumpDescriptorInterface.php',
|
||||
'Symfony\\Component\\VarDumper\\Command\\Descriptor\\HtmlDescriptor' => $vendorDir . '/symfony/var-dumper/Command/Descriptor/HtmlDescriptor.php',
|
||||
'Symfony\\Component\\VarDumper\\Command\\ServerDumpCommand' => $vendorDir . '/symfony/var-dumper/Command/ServerDumpCommand.php',
|
||||
'Symfony\\Component\\VarDumper\\Dumper\\AbstractDumper' => $vendorDir . '/symfony/var-dumper/Dumper/AbstractDumper.php',
|
||||
'Symfony\\Component\\VarDumper\\Dumper\\CliDumper' => $vendorDir . '/symfony/var-dumper/Dumper/CliDumper.php',
|
||||
'Symfony\\Component\\VarDumper\\Dumper\\ContextProvider\\CliContextProvider' => $vendorDir . '/symfony/var-dumper/Dumper/ContextProvider/CliContextProvider.php',
|
||||
'Symfony\\Component\\VarDumper\\Dumper\\ContextProvider\\ContextProviderInterface' => $vendorDir . '/symfony/var-dumper/Dumper/ContextProvider/ContextProviderInterface.php',
|
||||
'Symfony\\Component\\VarDumper\\Dumper\\ContextProvider\\RequestContextProvider' => $vendorDir . '/symfony/var-dumper/Dumper/ContextProvider/RequestContextProvider.php',
|
||||
'Symfony\\Component\\VarDumper\\Dumper\\ContextProvider\\SourceContextProvider' => $vendorDir . '/symfony/var-dumper/Dumper/ContextProvider/SourceContextProvider.php',
|
||||
'Symfony\\Component\\VarDumper\\Dumper\\ContextualizedDumper' => $vendorDir . '/symfony/var-dumper/Dumper/ContextualizedDumper.php',
|
||||
'Symfony\\Component\\VarDumper\\Dumper\\DataDumperInterface' => $vendorDir . '/symfony/var-dumper/Dumper/DataDumperInterface.php',
|
||||
'Symfony\\Component\\VarDumper\\Dumper\\HtmlDumper' => $vendorDir . '/symfony/var-dumper/Dumper/HtmlDumper.php',
|
||||
'Symfony\\Component\\VarDumper\\Dumper\\ServerDumper' => $vendorDir . '/symfony/var-dumper/Dumper/ServerDumper.php',
|
||||
'Symfony\\Component\\VarDumper\\Exception\\ThrowingCasterException' => $vendorDir . '/symfony/var-dumper/Exception/ThrowingCasterException.php',
|
||||
'Symfony\\Component\\VarDumper\\Server\\Connection' => $vendorDir . '/symfony/var-dumper/Server/Connection.php',
|
||||
'Symfony\\Component\\VarDumper\\Server\\DumpServer' => $vendorDir . '/symfony/var-dumper/Server/DumpServer.php',
|
||||
'Symfony\\Component\\VarDumper\\Test\\VarDumperTestTrait' => $vendorDir . '/symfony/var-dumper/Test/VarDumperTestTrait.php',
|
||||
'Symfony\\Component\\VarDumper\\VarDumper' => $vendorDir . '/symfony/var-dumper/VarDumper.php',
|
||||
'Symfony\\Polyfill\\Mbstring\\Mbstring' => $vendorDir . '/symfony/polyfill-mbstring/Mbstring.php',
|
||||
'Symfony\\Polyfill\\Php72\\Php72' => $vendorDir . '/symfony/polyfill-php72/Php72.php',
|
||||
'Symfony\\Polyfill\\Php80\\Php80' => $vendorDir . '/symfony/polyfill-php80/Php80.php',
|
||||
'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
|
||||
'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
|
||||
'app\\AppService' => $baseDir . '/app/AppService.php',
|
||||
'app\\ExceptionHandle' => $baseDir . '/app/ExceptionHandle.php',
|
||||
'app\\Request' => $baseDir . '/app/Request.php',
|
||||
'app\\handle\\controller\\Common' => $baseDir . '/app/handle/controller/Common.php',
|
||||
'app\\handle\\controller\\Index' => $baseDir . '/app/handle/controller/Index.php',
|
||||
'app\\handle\\controller\\Login' => $baseDir . '/app/handle/controller/Login.php',
|
||||
'app\\handle\\controller\\Scan' => $baseDir . '/app/handle/controller/Scan.php',
|
||||
'app\\index\\controller\\Common' => $baseDir . '/app/index/controller/Common.php',
|
||||
'app\\index\\controller\\Index' => $baseDir . '/app/index/controller/Index.php',
|
||||
'app\\index\\controller\\Login' => $baseDir . '/app/index/controller/Login.php',
|
||||
'app\\index\\middleware\\checkLogin' => $baseDir . '/app/index/middleware/checkLogin.php',
|
||||
'app\\listener\\GetState' => $baseDir . '/app/listener/GetState.php',
|
||||
'app\\listener\\WsClose' => $baseDir . '/app/listener/WsClose.php',
|
||||
'app\\listener\\WsConnect' => $baseDir . '/app/listener/WsConnect.php',
|
||||
'app\\listener\\scan\\Baccarat' => $baseDir . '/app/listener/scan/Baccarat.php',
|
||||
'app\\listener\\scan\\Dt' => $baseDir . '/app/listener/scan/Dt.php',
|
||||
'app\\listener\\scan\\Nn' => $baseDir . '/app/listener/scan/Nn.php',
|
||||
'app\\listener\\scan\\Tc' => $baseDir . '/app/listener/scan/Tc.php',
|
||||
'app\\listener\\space\\ChangeBoot' => $baseDir . '/app/listener/space/ChangeBoot.php',
|
||||
'app\\listener\\space\\EndBet' => $baseDir . '/app/listener/space/EndBet.php',
|
||||
'app\\listener\\space\\EndRob' => $baseDir . '/app/listener/space/EndRob.php',
|
||||
'app\\listener\\space\\OpeningBaccarat' => $baseDir . '/app/listener/space/OpeningBaccarat.php',
|
||||
'app\\listener\\space\\OpeningDt' => $baseDir . '/app/listener/space/OpeningDt.php',
|
||||
'app\\listener\\space\\OpeningNn' => $baseDir . '/app/listener/space/OpeningNn.php',
|
||||
'app\\listener\\space\\OpeningTc' => $baseDir . '/app/listener/space/OpeningTc.php',
|
||||
'app\\listener\\space\\ResetBoot' => $baseDir . '/app/listener/space/ResetBoot.php',
|
||||
'app\\listener\\space\\ResetNumberTab' => $baseDir . '/app/listener/space/ResetNumberTab.php',
|
||||
'app\\listener\\space\\StartBet' => $baseDir . '/app/listener/space/StartBet.php',
|
||||
'app\\listener\\space\\StartRob' => $baseDir . '/app/listener/space/StartRob.php',
|
||||
'app\\listener\\user\\CancelBet' => $baseDir . '/app/listener/user/CancelBet.php',
|
||||
'app\\listener\\user\\ToBet' => $baseDir . '/app/listener/user/ToBet.php',
|
||||
'app\\listener\\user\\ToRob' => $baseDir . '/app/listener/user/ToRob.php',
|
||||
'app\\middleware\\checkLogin' => $baseDir . '/app/middleware/checkLogin.php',
|
||||
'app\\models\\bet\\Bet' => $baseDir . '/app/models/bet/Bet.php',
|
||||
'app\\models\\bet\\Cs' => $baseDir . '/app/models/bet/Cs.php',
|
||||
'app\\models\\bet\\Xima' => $baseDir . '/app/models/bet/Xima.php',
|
||||
'app\\models\\process\\Boot' => $baseDir . '/app/models/process/Boot.php',
|
||||
'app\\models\\process\\NumberTab' => $baseDir . '/app/models/process/NumberTab.php',
|
||||
'app\\models\\process\\RetreatedLog' => $baseDir . '/app/models/process/RetreatedLog.php',
|
||||
'app\\models\\process\\Sumday' => $baseDir . '/app/models/process/Sumday.php',
|
||||
'app\\models\\process\\WaybillRemind' => $baseDir . '/app/models/process/WaybillRemind.php',
|
||||
'app\\models\\table\\ScanAccount' => $baseDir . '/app/models/table/ScanAccount.php',
|
||||
'app\\models\\table\\Table' => $baseDir . '/app/models/table/Table.php',
|
||||
'app\\models\\table\\UserController' => $baseDir . '/app/models/table/UserController.php',
|
||||
'app\\models\\user\\User' => $baseDir . '/app/models/user/User.php',
|
||||
'app\\services\\bet\\CancelBetService' => $baseDir . '/app/services/bet/CancelBetService.php',
|
||||
'app\\services\\bet\\ToBetBaccaratService' => $baseDir . '/app/services/bet/ToBetBaccaratService.php',
|
||||
'app\\services\\bet\\ToBetCommonService' => $baseDir . '/app/services/bet/ToBetCommonService.php',
|
||||
'app\\services\\bet\\ToBetDtService' => $baseDir . '/app/services/bet/ToBetDtService.php',
|
||||
'app\\services\\bet\\ToBetNnService' => $baseDir . '/app/services/bet/ToBetNnService.php',
|
||||
'app\\services\\bet\\ToBetTcService' => $baseDir . '/app/services/bet/ToBetTcService.php',
|
||||
'app\\services\\bet\\ToRobService' => $baseDir . '/app/services/bet/ToRobService.php',
|
||||
'app\\services\\connect\\GetCardService' => $baseDir . '/app/services/connect/GetCardService.php',
|
||||
'app\\services\\connect\\InitTableService' => $baseDir . '/app/services/connect/InitTableService.php',
|
||||
'app\\services\\connect\\ScanConnectService' => $baseDir . '/app/services/connect/ScanConnectService.php',
|
||||
'app\\services\\connect\\SpaceConnectService' => $baseDir . '/app/services/connect/SpaceConnectService.php',
|
||||
'app\\services\\connect\\UserConnectService' => $baseDir . '/app/services/connect/UserConnectService.php',
|
||||
'app\\services\\opening\\OpeningBaccaratService' => $baseDir . '/app/services/opening/OpeningBaccaratService.php',
|
||||
'app\\services\\opening\\OpeningDtService' => $baseDir . '/app/services/opening/OpeningDtService.php',
|
||||
'app\\services\\opening\\OpeningNnService' => $baseDir . '/app/services/opening/OpeningNnService.php',
|
||||
'app\\services\\opening\\OpeningTcService' => $baseDir . '/app/services/opening/OpeningTcService.php',
|
||||
'app\\services\\process\\CountdownService' => $baseDir . '/app/services/process/CountdownService.php',
|
||||
'app\\services\\process\\EndBetService' => $baseDir . '/app/services/process/EndBetService.php',
|
||||
'app\\services\\process\\EndRobService' => $baseDir . '/app/services/process/EndRobService.php',
|
||||
'app\\services\\process\\ResetNumberTabService' => $baseDir . '/app/services/process/ResetNumberTabService.php',
|
||||
'app\\services\\process\\StartBetService' => $baseDir . '/app/services/process/StartBetService.php',
|
||||
'app\\services\\process\\StartRobService' => $baseDir . '/app/services/process/StartRobService.php',
|
||||
'app\\services\\scan\\ScanBaccaratService' => $baseDir . '/app/services/scan/ScanBaccaratService.php',
|
||||
'app\\services\\scan\\ScanCommonService' => $baseDir . '/app/services/scan/ScanCommonService.php',
|
||||
'app\\services\\scan\\ScanDtService' => $baseDir . '/app/services/scan/ScanDtService.php',
|
||||
'app\\services\\scan\\ScanNnService' => $baseDir . '/app/services/scan/ScanNnService.php',
|
||||
'app\\services\\scan\\ScanTcService' => $baseDir . '/app/services/scan/ScanTcService.php',
|
||||
'freedom\\basic\\BaseModel' => $baseDir . '/freedom/basic/BaseModel.php',
|
||||
'freedom\\traits\\ModelTrait' => $baseDir . '/freedom/traits/ModelTrait.php',
|
||||
'freedom\\utils\\CardPosition' => $baseDir . '/freedom/utils/CardPosition.php',
|
||||
'freedom\\utils\\CardPositionNn' => $baseDir . '/freedom/utils/CardPositionNn.php',
|
||||
'freedom\\utils\\CardPositionTc' => $baseDir . '/freedom/utils/CardPositionTc.php',
|
||||
'freedom\\utils\\RedisUtil' => $baseDir . '/freedom/utils/RedisUtil.php',
|
||||
'freedom\\utils\\SocketSession' => $baseDir . '/freedom/utils/SocketSession.php',
|
||||
'freedom\\utils\\Waybill' => $baseDir . '/freedom/utils/Waybill.php',
|
||||
'think\\App' => $vendorDir . '/topthink/framework/src/think/App.php',
|
||||
'think\\Cache' => $vendorDir . '/topthink/framework/src/think/Cache.php',
|
||||
'think\\Collection' => $vendorDir . '/topthink/think-helper/src/Collection.php',
|
||||
'think\\Config' => $vendorDir . '/topthink/framework/src/think/Config.php',
|
||||
'think\\Console' => $vendorDir . '/topthink/framework/src/think/Console.php',
|
||||
'think\\Container' => $vendorDir . '/topthink/framework/src/think/Container.php',
|
||||
'think\\Cookie' => $vendorDir . '/topthink/framework/src/think/Cookie.php',
|
||||
'think\\Db' => $vendorDir . '/topthink/framework/src/think/Db.php',
|
||||
'think\\DbManager' => $vendorDir . '/topthink/think-orm/src/DbManager.php',
|
||||
'think\\Env' => $vendorDir . '/topthink/framework/src/think/Env.php',
|
||||
'think\\Event' => $vendorDir . '/topthink/framework/src/think/Event.php',
|
||||
'think\\Exception' => $vendorDir . '/topthink/framework/src/think/Exception.php',
|
||||
'think\\Facade' => $vendorDir . '/topthink/framework/src/think/Facade.php',
|
||||
'think\\File' => $vendorDir . '/topthink/framework/src/think/File.php',
|
||||
'think\\Filesystem' => $vendorDir . '/topthink/framework/src/think/Filesystem.php',
|
||||
'think\\Http' => $vendorDir . '/topthink/framework/src/think/Http.php',
|
||||
'think\\Lang' => $vendorDir . '/topthink/framework/src/think/Lang.php',
|
||||
'think\\Log' => $vendorDir . '/topthink/framework/src/think/Log.php',
|
||||
'think\\Manager' => $vendorDir . '/topthink/framework/src/think/Manager.php',
|
||||
'think\\Middleware' => $vendorDir . '/topthink/framework/src/think/Middleware.php',
|
||||
'think\\Model' => $vendorDir . '/topthink/think-orm/src/Model.php',
|
||||
'think\\Paginator' => $vendorDir . '/topthink/think-orm/src/Paginator.php',
|
||||
'think\\Pipeline' => $vendorDir . '/topthink/framework/src/think/Pipeline.php',
|
||||
'think\\Request' => $vendorDir . '/topthink/framework/src/think/Request.php',
|
||||
'think\\Response' => $vendorDir . '/topthink/framework/src/think/Response.php',
|
||||
'think\\Route' => $vendorDir . '/topthink/framework/src/think/Route.php',
|
||||
'think\\Service' => $vendorDir . '/topthink/framework/src/think/Service.php',
|
||||
'think\\Session' => $vendorDir . '/topthink/framework/src/think/Session.php',
|
||||
'think\\Template' => $vendorDir . '/topthink/think-template/src/Template.php',
|
||||
'think\\Validate' => $vendorDir . '/topthink/framework/src/think/Validate.php',
|
||||
'think\\View' => $vendorDir . '/topthink/framework/src/think/View.php',
|
||||
'think\\app\\MultiApp' => $vendorDir . '/topthink/think-multi-app/src/MultiApp.php',
|
||||
'think\\app\\Service' => $vendorDir . '/topthink/think-multi-app/src/Service.php',
|
||||
'think\\app\\Url' => $vendorDir . '/topthink/think-multi-app/src/Url.php',
|
||||
'think\\app\\command\\Build' => $vendorDir . '/topthink/think-multi-app/src/command/Build.php',
|
||||
'think\\app\\command\\Clear' => $vendorDir . '/topthink/think-multi-app/src/command/Clear.php',
|
||||
'think\\cache\\Driver' => $vendorDir . '/topthink/framework/src/think/cache/Driver.php',
|
||||
'think\\cache\\TagSet' => $vendorDir . '/topthink/framework/src/think/cache/TagSet.php',
|
||||
'think\\cache\\driver\\File' => $vendorDir . '/topthink/framework/src/think/cache/driver/File.php',
|
||||
'think\\cache\\driver\\Memcache' => $vendorDir . '/topthink/framework/src/think/cache/driver/Memcache.php',
|
||||
'think\\cache\\driver\\Memcached' => $vendorDir . '/topthink/framework/src/think/cache/driver/Memcached.php',
|
||||
'think\\cache\\driver\\Redis' => $vendorDir . '/topthink/framework/src/think/cache/driver/Redis.php',
|
||||
'think\\cache\\driver\\Wincache' => $vendorDir . '/topthink/framework/src/think/cache/driver/Wincache.php',
|
||||
'think\\captcha\\Captcha' => $vendorDir . '/topthink/think-captcha/src/Captcha.php',
|
||||
'think\\captcha\\CaptchaController' => $vendorDir . '/topthink/think-captcha/src/CaptchaController.php',
|
||||
'think\\captcha\\CaptchaService' => $vendorDir . '/topthink/think-captcha/src/CaptchaService.php',
|
||||
'think\\captcha\\facade\\Captcha' => $vendorDir . '/topthink/think-captcha/src/facade/Captcha.php',
|
||||
'think\\console\\Command' => $vendorDir . '/topthink/framework/src/think/console/Command.php',
|
||||
'think\\console\\Input' => $vendorDir . '/topthink/framework/src/think/console/Input.php',
|
||||
'think\\console\\Output' => $vendorDir . '/topthink/framework/src/think/console/Output.php',
|
||||
'think\\console\\Table' => $vendorDir . '/topthink/framework/src/think/console/Table.php',
|
||||
'think\\console\\command\\Clear' => $vendorDir . '/topthink/framework/src/think/console/command/Clear.php',
|
||||
'think\\console\\command\\Help' => $vendorDir . '/topthink/framework/src/think/console/command/Help.php',
|
||||
'think\\console\\command\\Lists' => $vendorDir . '/topthink/framework/src/think/console/command/Lists.php',
|
||||
'think\\console\\command\\Make' => $vendorDir . '/topthink/framework/src/think/console/command/Make.php',
|
||||
'think\\console\\command\\RouteList' => $vendorDir . '/topthink/framework/src/think/console/command/RouteList.php',
|
||||
'think\\console\\command\\RunServer' => $vendorDir . '/topthink/framework/src/think/console/command/RunServer.php',
|
||||
'think\\console\\command\\ServiceDiscover' => $vendorDir . '/topthink/framework/src/think/console/command/ServiceDiscover.php',
|
||||
'think\\console\\command\\VendorPublish' => $vendorDir . '/topthink/framework/src/think/console/command/VendorPublish.php',
|
||||
'think\\console\\command\\Version' => $vendorDir . '/topthink/framework/src/think/console/command/Version.php',
|
||||
'think\\console\\command\\make\\Command' => $vendorDir . '/topthink/framework/src/think/console/command/make/Command.php',
|
||||
'think\\console\\command\\make\\Controller' => $vendorDir . '/topthink/framework/src/think/console/command/make/Controller.php',
|
||||
'think\\console\\command\\make\\Event' => $vendorDir . '/topthink/framework/src/think/console/command/make/Event.php',
|
||||
'think\\console\\command\\make\\Listener' => $vendorDir . '/topthink/framework/src/think/console/command/make/Listener.php',
|
||||
'think\\console\\command\\make\\Middleware' => $vendorDir . '/topthink/framework/src/think/console/command/make/Middleware.php',
|
||||
'think\\console\\command\\make\\Model' => $vendorDir . '/topthink/framework/src/think/console/command/make/Model.php',
|
||||
'think\\console\\command\\make\\Service' => $vendorDir . '/topthink/framework/src/think/console/command/make/Service.php',
|
||||
'think\\console\\command\\make\\Subscribe' => $vendorDir . '/topthink/framework/src/think/console/command/make/Subscribe.php',
|
||||
'think\\console\\command\\make\\Validate' => $vendorDir . '/topthink/framework/src/think/console/command/make/Validate.php',
|
||||
'think\\console\\command\\optimize\\Route' => $vendorDir . '/topthink/framework/src/think/console/command/optimize/Route.php',
|
||||
'think\\console\\command\\optimize\\Schema' => $vendorDir . '/topthink/framework/src/think/console/command/optimize/Schema.php',
|
||||
'think\\console\\input\\Argument' => $vendorDir . '/topthink/framework/src/think/console/input/Argument.php',
|
||||
'think\\console\\input\\Definition' => $vendorDir . '/topthink/framework/src/think/console/input/Definition.php',
|
||||
'think\\console\\input\\Option' => $vendorDir . '/topthink/framework/src/think/console/input/Option.php',
|
||||
'think\\console\\output\\Ask' => $vendorDir . '/topthink/framework/src/think/console/output/Ask.php',
|
||||
'think\\console\\output\\Descriptor' => $vendorDir . '/topthink/framework/src/think/console/output/Descriptor.php',
|
||||
'think\\console\\output\\Formatter' => $vendorDir . '/topthink/framework/src/think/console/output/Formatter.php',
|
||||
'think\\console\\output\\Question' => $vendorDir . '/topthink/framework/src/think/console/output/Question.php',
|
||||
'think\\console\\output\\descriptor\\Console' => $vendorDir . '/topthink/framework/src/think/console/output/descriptor/Console.php',
|
||||
'think\\console\\output\\driver\\Buffer' => $vendorDir . '/topthink/framework/src/think/console/output/driver/Buffer.php',
|
||||
'think\\console\\output\\driver\\Console' => $vendorDir . '/topthink/framework/src/think/console/output/driver/Console.php',
|
||||
'think\\console\\output\\driver\\Nothing' => $vendorDir . '/topthink/framework/src/think/console/output/driver/Nothing.php',
|
||||
'think\\console\\output\\formatter\\Stack' => $vendorDir . '/topthink/framework/src/think/console/output/formatter/Stack.php',
|
||||
'think\\console\\output\\formatter\\Style' => $vendorDir . '/topthink/framework/src/think/console/output/formatter/Style.php',
|
||||
'think\\console\\output\\question\\Choice' => $vendorDir . '/topthink/framework/src/think/console/output/question/Choice.php',
|
||||
'think\\console\\output\\question\\Confirmation' => $vendorDir . '/topthink/framework/src/think/console/output/question/Confirmation.php',
|
||||
'think\\contract\\Arrayable' => $vendorDir . '/topthink/think-helper/src/contract/Arrayable.php',
|
||||
'think\\contract\\CacheHandlerInterface' => $vendorDir . '/topthink/framework/src/think/contract/CacheHandlerInterface.php',
|
||||
'think\\contract\\Jsonable' => $vendorDir . '/topthink/think-helper/src/contract/Jsonable.php',
|
||||
'think\\contract\\LogHandlerInterface' => $vendorDir . '/topthink/framework/src/think/contract/LogHandlerInterface.php',
|
||||
'think\\contract\\ModelRelationInterface' => $vendorDir . '/topthink/framework/src/think/contract/ModelRelationInterface.php',
|
||||
'think\\contract\\SessionHandlerInterface' => $vendorDir . '/topthink/framework/src/think/contract/SessionHandlerInterface.php',
|
||||
'think\\contract\\TemplateHandlerInterface' => $vendorDir . '/topthink/framework/src/think/contract/TemplateHandlerInterface.php',
|
||||
'think\\db\\BaseQuery' => $vendorDir . '/topthink/think-orm/src/db/BaseQuery.php',
|
||||
'think\\db\\Builder' => $vendorDir . '/topthink/think-orm/src/db/Builder.php',
|
||||
'think\\db\\CacheItem' => $vendorDir . '/topthink/think-orm/src/db/CacheItem.php',
|
||||
'think\\db\\Connection' => $vendorDir . '/topthink/think-orm/src/db/Connection.php',
|
||||
'think\\db\\ConnectionInterface' => $vendorDir . '/topthink/think-orm/src/db/ConnectionInterface.php',
|
||||
'think\\db\\Fetch' => $vendorDir . '/topthink/think-orm/src/db/Fetch.php',
|
||||
'think\\db\\Mongo' => $vendorDir . '/topthink/think-orm/src/db/Mongo.php',
|
||||
'think\\db\\PDOConnection' => $vendorDir . '/topthink/think-orm/src/db/PDOConnection.php',
|
||||
'think\\db\\Query' => $vendorDir . '/topthink/think-orm/src/db/Query.php',
|
||||
'think\\db\\Raw' => $vendorDir . '/topthink/think-orm/src/db/Raw.php',
|
||||
'think\\db\\Where' => $vendorDir . '/topthink/think-orm/src/db/Where.php',
|
||||
'think\\db\\builder\\Mongo' => $vendorDir . '/topthink/think-orm/src/db/builder/Mongo.php',
|
||||
'think\\db\\builder\\Mysql' => $vendorDir . '/topthink/think-orm/src/db/builder/Mysql.php',
|
||||
'think\\db\\builder\\Oracle' => $vendorDir . '/topthink/think-orm/src/db/builder/Oracle.php',
|
||||
'think\\db\\builder\\Pgsql' => $vendorDir . '/topthink/think-orm/src/db/builder/Pgsql.php',
|
||||
'think\\db\\builder\\Sqlite' => $vendorDir . '/topthink/think-orm/src/db/builder/Sqlite.php',
|
||||
'think\\db\\builder\\Sqlsrv' => $vendorDir . '/topthink/think-orm/src/db/builder/Sqlsrv.php',
|
||||
'think\\db\\concern\\AggregateQuery' => $vendorDir . '/topthink/think-orm/src/db/concern/AggregateQuery.php',
|
||||
'think\\db\\concern\\JoinAndViewQuery' => $vendorDir . '/topthink/think-orm/src/db/concern/JoinAndViewQuery.php',
|
||||
'think\\db\\concern\\ModelRelationQuery' => $vendorDir . '/topthink/think-orm/src/db/concern/ModelRelationQuery.php',
|
||||
'think\\db\\concern\\ParamsBind' => $vendorDir . '/topthink/think-orm/src/db/concern/ParamsBind.php',
|
||||
'think\\db\\concern\\ResultOperation' => $vendorDir . '/topthink/think-orm/src/db/concern/ResultOperation.php',
|
||||
'think\\db\\concern\\TableFieldInfo' => $vendorDir . '/topthink/think-orm/src/db/concern/TableFieldInfo.php',
|
||||
'think\\db\\concern\\TimeFieldQuery' => $vendorDir . '/topthink/think-orm/src/db/concern/TimeFieldQuery.php',
|
||||
'think\\db\\concern\\Transaction' => $vendorDir . '/topthink/think-orm/src/db/concern/Transaction.php',
|
||||
'think\\db\\concern\\WhereQuery' => $vendorDir . '/topthink/think-orm/src/db/concern/WhereQuery.php',
|
||||
'think\\db\\connector\\Mongo' => $vendorDir . '/topthink/think-orm/src/db/connector/Mongo.php',
|
||||
'think\\db\\connector\\Mysql' => $vendorDir . '/topthink/think-orm/src/db/connector/Mysql.php',
|
||||
'think\\db\\connector\\Oracle' => $vendorDir . '/topthink/think-orm/src/db/connector/Oracle.php',
|
||||
'think\\db\\connector\\Pgsql' => $vendorDir . '/topthink/think-orm/src/db/connector/Pgsql.php',
|
||||
'think\\db\\connector\\Sqlite' => $vendorDir . '/topthink/think-orm/src/db/connector/Sqlite.php',
|
||||
'think\\db\\connector\\Sqlsrv' => $vendorDir . '/topthink/think-orm/src/db/connector/Sqlsrv.php',
|
||||
'think\\db\\exception\\BindParamException' => $vendorDir . '/topthink/think-orm/src/db/exception/BindParamException.php',
|
||||
'think\\db\\exception\\DataNotFoundException' => $vendorDir . '/topthink/think-orm/src/db/exception/DataNotFoundException.php',
|
||||
'think\\db\\exception\\DbException' => $vendorDir . '/topthink/think-orm/src/db/exception/DbException.php',
|
||||
'think\\db\\exception\\InvalidArgumentException' => $vendorDir . '/topthink/think-orm/src/db/exception/InvalidArgumentException.php',
|
||||
'think\\db\\exception\\ModelEventException' => $vendorDir . '/topthink/think-orm/src/db/exception/ModelEventException.php',
|
||||
'think\\db\\exception\\ModelNotFoundException' => $vendorDir . '/topthink/think-orm/src/db/exception/ModelNotFoundException.php',
|
||||
'think\\db\\exception\\PDOException' => $vendorDir . '/topthink/think-orm/src/db/exception/PDOException.php',
|
||||
'think\\event\\AppInit' => $vendorDir . '/topthink/framework/src/think/event/AppInit.php',
|
||||
'think\\event\\HttpEnd' => $vendorDir . '/topthink/framework/src/think/event/HttpEnd.php',
|
||||
'think\\event\\HttpRun' => $vendorDir . '/topthink/framework/src/think/event/HttpRun.php',
|
||||
'think\\event\\LogWrite' => $vendorDir . '/topthink/framework/src/think/event/LogWrite.php',
|
||||
'think\\event\\RouteLoaded' => $vendorDir . '/topthink/framework/src/think/event/RouteLoaded.php',
|
||||
'think\\exception\\ClassNotFoundException' => $vendorDir . '/topthink/framework/src/think/exception/ClassNotFoundException.php',
|
||||
'think\\exception\\ErrorException' => $vendorDir . '/topthink/framework/src/think/exception/ErrorException.php',
|
||||
'think\\exception\\FileException' => $vendorDir . '/topthink/framework/src/think/exception/FileException.php',
|
||||
'think\\exception\\FuncNotFoundException' => $vendorDir . '/topthink/framework/src/think/exception/FuncNotFoundException.php',
|
||||
'think\\exception\\Handle' => $vendorDir . '/topthink/framework/src/think/exception/Handle.php',
|
||||
'think\\exception\\HttpException' => $vendorDir . '/topthink/framework/src/think/exception/HttpException.php',
|
||||
'think\\exception\\HttpResponseException' => $vendorDir . '/topthink/framework/src/think/exception/HttpResponseException.php',
|
||||
'think\\exception\\InvalidArgumentException' => $vendorDir . '/topthink/framework/src/think/exception/InvalidArgumentException.php',
|
||||
'think\\exception\\RouteNotFoundException' => $vendorDir . '/topthink/framework/src/think/exception/RouteNotFoundException.php',
|
||||
'think\\exception\\ValidateException' => $vendorDir . '/topthink/framework/src/think/exception/ValidateException.php',
|
||||
'think\\facade\\App' => $vendorDir . '/topthink/framework/src/think/facade/App.php',
|
||||
'think\\facade\\Cache' => $vendorDir . '/topthink/framework/src/think/facade/Cache.php',
|
||||
'think\\facade\\Config' => $vendorDir . '/topthink/framework/src/think/facade/Config.php',
|
||||
'think\\facade\\Console' => $vendorDir . '/topthink/framework/src/think/facade/Console.php',
|
||||
'think\\facade\\Cookie' => $vendorDir . '/topthink/framework/src/think/facade/Cookie.php',
|
||||
'think\\facade\\Db' => $vendorDir . '/topthink/think-orm/src/facade/Db.php',
|
||||
'think\\facade\\Env' => $vendorDir . '/topthink/framework/src/think/facade/Env.php',
|
||||
'think\\facade\\Event' => $vendorDir . '/topthink/framework/src/think/facade/Event.php',
|
||||
'think\\facade\\Filesystem' => $vendorDir . '/topthink/framework/src/think/facade/Filesystem.php',
|
||||
'think\\facade\\Lang' => $vendorDir . '/topthink/framework/src/think/facade/Lang.php',
|
||||
'think\\facade\\Log' => $vendorDir . '/topthink/framework/src/think/facade/Log.php',
|
||||
'think\\facade\\Middleware' => $vendorDir . '/topthink/framework/src/think/facade/Middleware.php',
|
||||
'think\\facade\\Request' => $vendorDir . '/topthink/framework/src/think/facade/Request.php',
|
||||
'think\\facade\\Route' => $vendorDir . '/topthink/framework/src/think/facade/Route.php',
|
||||
'think\\facade\\Session' => $vendorDir . '/topthink/framework/src/think/facade/Session.php',
|
||||
'think\\facade\\Template' => $vendorDir . '/topthink/think-template/src/facade/Template.php',
|
||||
'think\\facade\\Validate' => $vendorDir . '/topthink/framework/src/think/facade/Validate.php',
|
||||
'think\\facade\\View' => $vendorDir . '/topthink/framework/src/think/facade/View.php',
|
||||
'think\\file\\UploadedFile' => $vendorDir . '/topthink/framework/src/think/file/UploadedFile.php',
|
||||
'think\\filesystem\\CacheStore' => $vendorDir . '/topthink/framework/src/think/filesystem/CacheStore.php',
|
||||
'think\\filesystem\\Driver' => $vendorDir . '/topthink/framework/src/think/filesystem/Driver.php',
|
||||
'think\\filesystem\\driver\\Local' => $vendorDir . '/topthink/framework/src/think/filesystem/driver/Local.php',
|
||||
'think\\helper\\Arr' => $vendorDir . '/topthink/think-helper/src/helper/Arr.php',
|
||||
'think\\helper\\Str' => $vendorDir . '/topthink/think-helper/src/helper/Str.php',
|
||||
'think\\initializer\\BootService' => $vendorDir . '/topthink/framework/src/think/initializer/BootService.php',
|
||||
'think\\initializer\\Error' => $vendorDir . '/topthink/framework/src/think/initializer/Error.php',
|
||||
'think\\initializer\\RegisterService' => $vendorDir . '/topthink/framework/src/think/initializer/RegisterService.php',
|
||||
'think\\log\\Channel' => $vendorDir . '/topthink/framework/src/think/log/Channel.php',
|
||||
'think\\log\\ChannelSet' => $vendorDir . '/topthink/framework/src/think/log/ChannelSet.php',
|
||||
'think\\log\\driver\\File' => $vendorDir . '/topthink/framework/src/think/log/driver/File.php',
|
||||
'think\\log\\driver\\Socket' => $vendorDir . '/topthink/framework/src/think/log/driver/Socket.php',
|
||||
'think\\middleware\\AllowCrossDomain' => $vendorDir . '/topthink/framework/src/think/middleware/AllowCrossDomain.php',
|
||||
'think\\middleware\\CheckRequestCache' => $vendorDir . '/topthink/framework/src/think/middleware/CheckRequestCache.php',
|
||||
'think\\middleware\\FormTokenCheck' => $vendorDir . '/topthink/framework/src/think/middleware/FormTokenCheck.php',
|
||||
'think\\middleware\\LoadLangPack' => $vendorDir . '/topthink/framework/src/think/middleware/LoadLangPack.php',
|
||||
'think\\middleware\\SessionInit' => $vendorDir . '/topthink/framework/src/think/middleware/SessionInit.php',
|
||||
'think\\model\\Collection' => $vendorDir . '/topthink/think-orm/src/model/Collection.php',
|
||||
'think\\model\\Pivot' => $vendorDir . '/topthink/think-orm/src/model/Pivot.php',
|
||||
'think\\model\\Relation' => $vendorDir . '/topthink/think-orm/src/model/Relation.php',
|
||||
'think\\model\\concern\\Attribute' => $vendorDir . '/topthink/think-orm/src/model/concern/Attribute.php',
|
||||
'think\\model\\concern\\Conversion' => $vendorDir . '/topthink/think-orm/src/model/concern/Conversion.php',
|
||||
'think\\model\\concern\\ModelEvent' => $vendorDir . '/topthink/think-orm/src/model/concern/ModelEvent.php',
|
||||
'think\\model\\concern\\OptimLock' => $vendorDir . '/topthink/think-orm/src/model/concern/OptimLock.php',
|
||||
'think\\model\\concern\\RelationShip' => $vendorDir . '/topthink/think-orm/src/model/concern/RelationShip.php',
|
||||
'think\\model\\concern\\SoftDelete' => $vendorDir . '/topthink/think-orm/src/model/concern/SoftDelete.php',
|
||||
'think\\model\\concern\\TimeStamp' => $vendorDir . '/topthink/think-orm/src/model/concern/TimeStamp.php',
|
||||
'think\\model\\relation\\BelongsTo' => $vendorDir . '/topthink/think-orm/src/model/relation/BelongsTo.php',
|
||||
'think\\model\\relation\\BelongsToMany' => $vendorDir . '/topthink/think-orm/src/model/relation/BelongsToMany.php',
|
||||
'think\\model\\relation\\HasMany' => $vendorDir . '/topthink/think-orm/src/model/relation/HasMany.php',
|
||||
'think\\model\\relation\\HasManyThrough' => $vendorDir . '/topthink/think-orm/src/model/relation/HasManyThrough.php',
|
||||
'think\\model\\relation\\HasOne' => $vendorDir . '/topthink/think-orm/src/model/relation/HasOne.php',
|
||||
'think\\model\\relation\\HasOneThrough' => $vendorDir . '/topthink/think-orm/src/model/relation/HasOneThrough.php',
|
||||
'think\\model\\relation\\MorphMany' => $vendorDir . '/topthink/think-orm/src/model/relation/MorphMany.php',
|
||||
'think\\model\\relation\\MorphOne' => $vendorDir . '/topthink/think-orm/src/model/relation/MorphOne.php',
|
||||
'think\\model\\relation\\MorphTo' => $vendorDir . '/topthink/think-orm/src/model/relation/MorphTo.php',
|
||||
'think\\model\\relation\\MorphToMany' => $vendorDir . '/topthink/think-orm/src/model/relation/MorphToMany.php',
|
||||
'think\\model\\relation\\OneToOne' => $vendorDir . '/topthink/think-orm/src/model/relation/OneToOne.php',
|
||||
'think\\paginator\\driver\\Bootstrap' => $vendorDir . '/topthink/think-orm/src/paginator/driver/Bootstrap.php',
|
||||
'think\\response\\File' => $vendorDir . '/topthink/framework/src/think/response/File.php',
|
||||
'think\\response\\Html' => $vendorDir . '/topthink/framework/src/think/response/Html.php',
|
||||
'think\\response\\Json' => $vendorDir . '/topthink/framework/src/think/response/Json.php',
|
||||
'think\\response\\Jsonp' => $vendorDir . '/topthink/framework/src/think/response/Jsonp.php',
|
||||
'think\\response\\Redirect' => $vendorDir . '/topthink/framework/src/think/response/Redirect.php',
|
||||
'think\\response\\View' => $vendorDir . '/topthink/framework/src/think/response/View.php',
|
||||
'think\\response\\Xml' => $vendorDir . '/topthink/framework/src/think/response/Xml.php',
|
||||
'think\\route\\Dispatch' => $vendorDir . '/topthink/framework/src/think/route/Dispatch.php',
|
||||
'think\\route\\Domain' => $vendorDir . '/topthink/framework/src/think/route/Domain.php',
|
||||
'think\\route\\Resource' => $vendorDir . '/topthink/framework/src/think/route/Resource.php',
|
||||
'think\\route\\Rule' => $vendorDir . '/topthink/framework/src/think/route/Rule.php',
|
||||
'think\\route\\RuleGroup' => $vendorDir . '/topthink/framework/src/think/route/RuleGroup.php',
|
||||
'think\\route\\RuleItem' => $vendorDir . '/topthink/framework/src/think/route/RuleItem.php',
|
||||
'think\\route\\RuleName' => $vendorDir . '/topthink/framework/src/think/route/RuleName.php',
|
||||
'think\\route\\Url' => $vendorDir . '/topthink/framework/src/think/route/Url.php',
|
||||
'think\\route\\dispatch\\Callback' => $vendorDir . '/topthink/framework/src/think/route/dispatch/Callback.php',
|
||||
'think\\route\\dispatch\\Controller' => $vendorDir . '/topthink/framework/src/think/route/dispatch/Controller.php',
|
||||
'think\\route\\dispatch\\Url' => $vendorDir . '/topthink/framework/src/think/route/dispatch/Url.php',
|
||||
'think\\service\\ModelService' => $vendorDir . '/topthink/framework/src/think/service/ModelService.php',
|
||||
'think\\service\\PaginatorService' => $vendorDir . '/topthink/framework/src/think/service/PaginatorService.php',
|
||||
'think\\service\\ValidateService' => $vendorDir . '/topthink/framework/src/think/service/ValidateService.php',
|
||||
'think\\session\\Store' => $vendorDir . '/topthink/framework/src/think/session/Store.php',
|
||||
'think\\session\\driver\\Cache' => $vendorDir . '/topthink/framework/src/think/session/driver/Cache.php',
|
||||
'think\\session\\driver\\File' => $vendorDir . '/topthink/framework/src/think/session/driver/File.php',
|
||||
'think\\swoole\\App' => $vendorDir . '/topthink/think-swoole/src/App.php',
|
||||
'think\\swoole\\FileWatcher' => $vendorDir . '/topthink/think-swoole/src/FileWatcher.php',
|
||||
'think\\swoole\\Http' => $vendorDir . '/topthink/think-swoole/src/Http.php',
|
||||
'think\\swoole\\Manager' => $vendorDir . '/topthink/think-swoole/src/Manager.php',
|
||||
'think\\swoole\\PidManager' => $vendorDir . '/topthink/think-swoole/src/PidManager.php',
|
||||
'think\\swoole\\Pool' => $vendorDir . '/topthink/think-swoole/src/Pool.php',
|
||||
'think\\swoole\\RpcManager' => $vendorDir . '/topthink/think-swoole/src/RpcManager.php',
|
||||
'think\\swoole\\Sandbox' => $vendorDir . '/topthink/think-swoole/src/Sandbox.php',
|
||||
'think\\swoole\\Service' => $vendorDir . '/topthink/think-swoole/src/Service.php',
|
||||
'think\\swoole\\Table' => $vendorDir . '/topthink/think-swoole/src/Table.php',
|
||||
'think\\swoole\\Websocket' => $vendorDir . '/topthink/think-swoole/src/Websocket.php',
|
||||
'think\\swoole\\command\\Rpc' => $vendorDir . '/topthink/think-swoole/src/command/Rpc.php',
|
||||
'think\\swoole\\command\\RpcInterface' => $vendorDir . '/topthink/think-swoole/src/command/RpcInterface.php',
|
||||
'think\\swoole\\command\\Server' => $vendorDir . '/topthink/think-swoole/src/command/Server.php',
|
||||
'think\\swoole\\concerns\\InteractsWithHttp' => $vendorDir . '/topthink/think-swoole/src/concerns/InteractsWithHttp.php',
|
||||
'think\\swoole\\concerns\\InteractsWithPools' => $vendorDir . '/topthink/think-swoole/src/concerns/InteractsWithPools.php',
|
||||
'think\\swoole\\concerns\\InteractsWithRpcClient' => $vendorDir . '/topthink/think-swoole/src/concerns/InteractsWithRpcClient.php',
|
||||
'think\\swoole\\concerns\\InteractsWithRpcServer' => $vendorDir . '/topthink/think-swoole/src/concerns/InteractsWithRpcServer.php',
|
||||
'think\\swoole\\concerns\\InteractsWithServer' => $vendorDir . '/topthink/think-swoole/src/concerns/InteractsWithServer.php',
|
||||
'think\\swoole\\concerns\\InteractsWithSwooleTable' => $vendorDir . '/topthink/think-swoole/src/concerns/InteractsWithSwooleTable.php',
|
||||
'think\\swoole\\concerns\\InteractsWithWebsocket' => $vendorDir . '/topthink/think-swoole/src/concerns/InteractsWithWebsocket.php',
|
||||
'think\\swoole\\concerns\\ModifyProperty' => $vendorDir . '/topthink/think-swoole/src/concerns/ModifyProperty.php',
|
||||
'think\\swoole\\concerns\\WithApplication' => $vendorDir . '/topthink/think-swoole/src/concerns/WithApplication.php',
|
||||
'think\\swoole\\contract\\ResetterInterface' => $vendorDir . '/topthink/think-swoole/src/contract/ResetterInterface.php',
|
||||
'think\\swoole\\contract\\rpc\\ParserInterface' => $vendorDir . '/topthink/think-swoole/src/contract/rpc/ParserInterface.php',
|
||||
'think\\swoole\\contract\\websocket\\HandlerInterface' => $vendorDir . '/topthink/think-swoole/src/contract/websocket/HandlerInterface.php',
|
||||
'think\\swoole\\contract\\websocket\\ParserInterface' => $vendorDir . '/topthink/think-swoole/src/contract/websocket/ParserInterface.php',
|
||||
'think\\swoole\\contract\\websocket\\RoomInterface' => $vendorDir . '/topthink/think-swoole/src/contract/websocket/RoomInterface.php',
|
||||
'think\\swoole\\coroutine\\Context' => $vendorDir . '/topthink/think-swoole/src/coroutine/Context.php',
|
||||
'think\\swoole\\exception\\RpcClientException' => $vendorDir . '/topthink/think-swoole/src/exception/RpcClientException.php',
|
||||
'think\\swoole\\exception\\RpcResponseException' => $vendorDir . '/topthink/think-swoole/src/exception/RpcResponseException.php',
|
||||
'think\\swoole\\facade\\Server' => $vendorDir . '/topthink/think-swoole/src/facade/Server.php',
|
||||
'think\\swoole\\middleware\\ResetVarDumper' => $vendorDir . '/topthink/think-swoole/src/middleware/ResetVarDumper.php',
|
||||
'think\\swoole\\pool\\Cache' => $vendorDir . '/topthink/think-swoole/src/pool/Cache.php',
|
||||
'think\\swoole\\pool\\Client' => $vendorDir . '/topthink/think-swoole/src/pool/Client.php',
|
||||
'think\\swoole\\pool\\Db' => $vendorDir . '/topthink/think-swoole/src/pool/Db.php',
|
||||
'think\\swoole\\pool\\Proxy' => $vendorDir . '/topthink/think-swoole/src/pool/Proxy.php',
|
||||
'think\\swoole\\pool\\proxy\\Connection' => $vendorDir . '/topthink/think-swoole/src/pool/proxy/Connection.php',
|
||||
'think\\swoole\\pool\\proxy\\Store' => $vendorDir . '/topthink/think-swoole/src/pool/proxy/Store.php',
|
||||
'think\\swoole\\resetters\\ClearInstances' => $vendorDir . '/topthink/think-swoole/src/resetters/ClearInstances.php',
|
||||
'think\\swoole\\resetters\\ResetConfig' => $vendorDir . '/topthink/think-swoole/src/resetters/ResetConfig.php',
|
||||
'think\\swoole\\resetters\\ResetEvent' => $vendorDir . '/topthink/think-swoole/src/resetters/ResetEvent.php',
|
||||
'think\\swoole\\resetters\\ResetService' => $vendorDir . '/topthink/think-swoole/src/resetters/ResetService.php',
|
||||
'think\\swoole\\rpc\\Error' => $vendorDir . '/topthink/think-swoole/src/rpc/Error.php',
|
||||
'think\\swoole\\rpc\\File' => $vendorDir . '/topthink/think-swoole/src/rpc/File.php',
|
||||
'think\\swoole\\rpc\\JsonParser' => $vendorDir . '/topthink/think-swoole/src/rpc/JsonParser.php',
|
||||
'think\\swoole\\rpc\\Packer' => $vendorDir . '/topthink/think-swoole/src/rpc/Packer.php',
|
||||
'think\\swoole\\rpc\\Protocol' => $vendorDir . '/topthink/think-swoole/src/rpc/Protocol.php',
|
||||
'think\\swoole\\rpc\\client\\Connector' => $vendorDir . '/topthink/think-swoole/src/rpc/client/Connector.php',
|
||||
'think\\swoole\\rpc\\client\\Gateway' => $vendorDir . '/topthink/think-swoole/src/rpc/client/Gateway.php',
|
||||
'think\\swoole\\rpc\\client\\Proxy' => $vendorDir . '/topthink/think-swoole/src/rpc/client/Proxy.php',
|
||||
'think\\swoole\\rpc\\server\\Channel' => $vendorDir . '/topthink/think-swoole/src/rpc/server/Channel.php',
|
||||
'think\\swoole\\rpc\\server\\Dispatcher' => $vendorDir . '/topthink/think-swoole/src/rpc/server/Dispatcher.php',
|
||||
'think\\swoole\\rpc\\server\\channel\\Buffer' => $vendorDir . '/topthink/think-swoole/src/rpc/server/channel/Buffer.php',
|
||||
'think\\swoole\\rpc\\server\\channel\\File' => $vendorDir . '/topthink/think-swoole/src/rpc/server/channel/File.php',
|
||||
'think\\swoole\\websocket\\Pusher' => $vendorDir . '/topthink/think-swoole/src/websocket/Pusher.php',
|
||||
'think\\swoole\\websocket\\Room' => $vendorDir . '/topthink/think-swoole/src/websocket/Room.php',
|
||||
'think\\swoole\\websocket\\SimpleParser' => $vendorDir . '/topthink/think-swoole/src/websocket/SimpleParser.php',
|
||||
'think\\swoole\\websocket\\middleware\\SessionInit' => $vendorDir . '/topthink/think-swoole/src/websocket/middleware/SessionInit.php',
|
||||
'think\\swoole\\websocket\\room\\Redis' => $vendorDir . '/topthink/think-swoole/src/websocket/room/Redis.php',
|
||||
'think\\swoole\\websocket\\room\\Table' => $vendorDir . '/topthink/think-swoole/src/websocket/room/Table.php',
|
||||
'think\\swoole\\websocket\\socketio\\Controller' => $vendorDir . '/topthink/think-swoole/src/websocket/socketio/Controller.php',
|
||||
'think\\swoole\\websocket\\socketio\\Handler' => $vendorDir . '/topthink/think-swoole/src/websocket/socketio/Handler.php',
|
||||
'think\\swoole\\websocket\\socketio\\Packet' => $vendorDir . '/topthink/think-swoole/src/websocket/socketio/Packet.php',
|
||||
'think\\swoole\\websocket\\socketio\\Parser' => $vendorDir . '/topthink/think-swoole/src/websocket/socketio/Parser.php',
|
||||
'think\\template\\TagLib' => $vendorDir . '/topthink/think-template/src/template/TagLib.php',
|
||||
'think\\template\\driver\\File' => $vendorDir . '/topthink/think-template/src/template/driver/File.php',
|
||||
'think\\template\\exception\\TemplateNotFoundException' => $vendorDir . '/topthink/think-template/src/template/exception/TemplateNotFoundException.php',
|
||||
'think\\template\\taglib\\Cx' => $vendorDir . '/topthink/think-template/src/template/taglib/Cx.php',
|
||||
'think\\trace\\Console' => $vendorDir . '/topthink/think-trace/src/Console.php',
|
||||
'think\\trace\\Html' => $vendorDir . '/topthink/think-trace/src/Html.php',
|
||||
'think\\trace\\Service' => $vendorDir . '/topthink/think-trace/src/Service.php',
|
||||
'think\\trace\\TraceDebug' => $vendorDir . '/topthink/think-trace/src/TraceDebug.php',
|
||||
'think\\validate\\ValidateRule' => $vendorDir . '/topthink/framework/src/think/validate/ValidateRule.php',
|
||||
'think\\view\\driver\\Php' => $vendorDir . '/topthink/framework/src/think/view/driver/Php.php',
|
||||
'think\\view\\driver\\Think' => $vendorDir . '/topthink/think-view/src/Think.php',
|
||||
);
|
||||
Vendored
-16
@@ -1,16 +0,0 @@
|
||||
<?php
|
||||
|
||||
// autoload_files.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'9b552a3cc426e3287cc811caefa3cf53' => $vendorDir . '/topthink/think-helper/src/helper.php',
|
||||
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
|
||||
'25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
|
||||
'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
|
||||
'667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php',
|
||||
'1cfd2761b63b0a29ed23657ea394cb2d' => $vendorDir . '/topthink/think-captcha/src/helper.php',
|
||||
'af46dcea2921209ac30627b964175f13' => $vendorDir . '/topthink/think-swoole/src/helpers.php',
|
||||
);
|
||||
-10
@@ -1,10 +0,0 @@
|
||||
<?php
|
||||
|
||||
// autoload_namespaces.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'' => array($baseDir . '/extend'),
|
||||
);
|
||||
Vendored
-30
@@ -1,30 +0,0 @@
|
||||
<?php
|
||||
|
||||
// autoload_psr4.php @generated by Composer
|
||||
|
||||
$vendorDir = dirname(dirname(__FILE__));
|
||||
$baseDir = dirname($vendorDir);
|
||||
|
||||
return array(
|
||||
'think\\view\\driver\\' => array($vendorDir . '/topthink/think-view/src'),
|
||||
'think\\trace\\' => array($vendorDir . '/topthink/think-trace/src'),
|
||||
'think\\swoole\\' => array($vendorDir . '/topthink/think-swoole/src'),
|
||||
'think\\captcha\\' => array($vendorDir . '/topthink/think-captcha/src'),
|
||||
'think\\app\\' => array($vendorDir . '/topthink/think-multi-app/src'),
|
||||
'think\\' => array($vendorDir . '/topthink/framework/src/think', $vendorDir . '/topthink/think-helper/src', $vendorDir . '/topthink/think-orm/src', $vendorDir . '/topthink/think-template/src'),
|
||||
'freedom\\' => array($baseDir . '/freedom'),
|
||||
'app\\' => array($baseDir . '/app'),
|
||||
'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'),
|
||||
'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'),
|
||||
'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
|
||||
'Symfony\\Component\\VarDumper\\' => array($vendorDir . '/symfony/var-dumper'),
|
||||
'Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'),
|
||||
'Smf\\ConnectionPool\\' => array($vendorDir . '/open-smf/connection-pool/src'),
|
||||
'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'),
|
||||
'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
|
||||
'Psr\\Container\\' => array($vendorDir . '/psr/container/src'),
|
||||
'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'),
|
||||
'League\\MimeTypeDetection\\' => array($vendorDir . '/league/mime-type-detection/src'),
|
||||
'League\\Flysystem\\Cached\\' => array($vendorDir . '/league/flysystem-cached-adapter/src'),
|
||||
'League\\Flysystem\\' => array($vendorDir . '/league/flysystem/src'),
|
||||
);
|
||||
Vendored
-75
@@ -1,75 +0,0 @@
|
||||
<?php
|
||||
|
||||
// autoload_real.php @generated by Composer
|
||||
|
||||
class ComposerAutoloaderInit9947e2ce7d1a6501413c1b0d7d3973cf
|
||||
{
|
||||
private static $loader;
|
||||
|
||||
public static function loadClassLoader($class)
|
||||
{
|
||||
if ('Composer\Autoload\ClassLoader' === $class) {
|
||||
require __DIR__ . '/ClassLoader.php';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Composer\Autoload\ClassLoader
|
||||
*/
|
||||
public static function getLoader()
|
||||
{
|
||||
if (null !== self::$loader) {
|
||||
return self::$loader;
|
||||
}
|
||||
|
||||
require __DIR__ . '/platform_check.php';
|
||||
|
||||
spl_autoload_register(array('ComposerAutoloaderInit9947e2ce7d1a6501413c1b0d7d3973cf', 'loadClassLoader'), true, true);
|
||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
||||
spl_autoload_unregister(array('ComposerAutoloaderInit9947e2ce7d1a6501413c1b0d7d3973cf', 'loadClassLoader'));
|
||||
|
||||
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
||||
if ($useStaticLoader) {
|
||||
require __DIR__ . '/autoload_static.php';
|
||||
|
||||
call_user_func(\Composer\Autoload\ComposerStaticInit9947e2ce7d1a6501413c1b0d7d3973cf::getInitializer($loader));
|
||||
} else {
|
||||
$map = require __DIR__ . '/autoload_namespaces.php';
|
||||
foreach ($map as $namespace => $path) {
|
||||
$loader->set($namespace, $path);
|
||||
}
|
||||
|
||||
$map = require __DIR__ . '/autoload_psr4.php';
|
||||
foreach ($map as $namespace => $path) {
|
||||
$loader->setPsr4($namespace, $path);
|
||||
}
|
||||
|
||||
$classMap = require __DIR__ . '/autoload_classmap.php';
|
||||
if ($classMap) {
|
||||
$loader->addClassMap($classMap);
|
||||
}
|
||||
}
|
||||
|
||||
$loader->register(true);
|
||||
|
||||
if ($useStaticLoader) {
|
||||
$includeFiles = Composer\Autoload\ComposerStaticInit9947e2ce7d1a6501413c1b0d7d3973cf::$files;
|
||||
} else {
|
||||
$includeFiles = require __DIR__ . '/autoload_files.php';
|
||||
}
|
||||
foreach ($includeFiles as $fileIdentifier => $file) {
|
||||
composerRequire9947e2ce7d1a6501413c1b0d7d3973cf($fileIdentifier, $file);
|
||||
}
|
||||
|
||||
return $loader;
|
||||
}
|
||||
}
|
||||
|
||||
function composerRequire9947e2ce7d1a6501413c1b0d7d3973cf($fileIdentifier, $file)
|
||||
{
|
||||
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
||||
require $file;
|
||||
|
||||
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
||||
}
|
||||
}
|
||||
Vendored
-801
@@ -1,801 +0,0 @@
|
||||
<?php
|
||||
|
||||
// autoload_static.php @generated by Composer
|
||||
|
||||
namespace Composer\Autoload;
|
||||
|
||||
class ComposerStaticInit9947e2ce7d1a6501413c1b0d7d3973cf
|
||||
{
|
||||
public static $files = array (
|
||||
'9b552a3cc426e3287cc811caefa3cf53' => __DIR__ . '/..' . '/topthink/think-helper/src/helper.php',
|
||||
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
|
||||
'25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
|
||||
'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
|
||||
'667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php',
|
||||
'1cfd2761b63b0a29ed23657ea394cb2d' => __DIR__ . '/..' . '/topthink/think-captcha/src/helper.php',
|
||||
'af46dcea2921209ac30627b964175f13' => __DIR__ . '/..' . '/topthink/think-swoole/src/helpers.php',
|
||||
);
|
||||
|
||||
public static $prefixLengthsPsr4 = array (
|
||||
't' =>
|
||||
array (
|
||||
'think\\view\\driver\\' => 18,
|
||||
'think\\trace\\' => 12,
|
||||
'think\\swoole\\' => 13,
|
||||
'think\\captcha\\' => 14,
|
||||
'think\\app\\' => 10,
|
||||
'think\\' => 6,
|
||||
),
|
||||
'f' =>
|
||||
array (
|
||||
'freedom\\' => 8,
|
||||
),
|
||||
'a' =>
|
||||
array (
|
||||
'app\\' => 4,
|
||||
),
|
||||
'S' =>
|
||||
array (
|
||||
'Symfony\\Polyfill\\Php80\\' => 23,
|
||||
'Symfony\\Polyfill\\Php72\\' => 23,
|
||||
'Symfony\\Polyfill\\Mbstring\\' => 26,
|
||||
'Symfony\\Component\\VarDumper\\' => 28,
|
||||
'Symfony\\Component\\Finder\\' => 25,
|
||||
'Smf\\ConnectionPool\\' => 19,
|
||||
),
|
||||
'P' =>
|
||||
array (
|
||||
'Psr\\SimpleCache\\' => 16,
|
||||
'Psr\\Log\\' => 8,
|
||||
'Psr\\Container\\' => 14,
|
||||
'Psr\\Cache\\' => 10,
|
||||
),
|
||||
'L' =>
|
||||
array (
|
||||
'League\\MimeTypeDetection\\' => 25,
|
||||
'League\\Flysystem\\Cached\\' => 24,
|
||||
'League\\Flysystem\\' => 17,
|
||||
),
|
||||
);
|
||||
|
||||
public static $prefixDirsPsr4 = array (
|
||||
'think\\view\\driver\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/topthink/think-view/src',
|
||||
),
|
||||
'think\\trace\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/topthink/think-trace/src',
|
||||
),
|
||||
'think\\swoole\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/topthink/think-swoole/src',
|
||||
),
|
||||
'think\\captcha\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/topthink/think-captcha/src',
|
||||
),
|
||||
'think\\app\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/topthink/think-multi-app/src',
|
||||
),
|
||||
'think\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/topthink/framework/src/think',
|
||||
1 => __DIR__ . '/..' . '/topthink/think-helper/src',
|
||||
2 => __DIR__ . '/..' . '/topthink/think-orm/src',
|
||||
3 => __DIR__ . '/..' . '/topthink/think-template/src',
|
||||
),
|
||||
'freedom\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/../..' . '/freedom',
|
||||
),
|
||||
'app\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/../..' . '/app',
|
||||
),
|
||||
'Symfony\\Polyfill\\Php80\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/polyfill-php80',
|
||||
),
|
||||
'Symfony\\Polyfill\\Php72\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/polyfill-php72',
|
||||
),
|
||||
'Symfony\\Polyfill\\Mbstring\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
|
||||
),
|
||||
'Symfony\\Component\\VarDumper\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/var-dumper',
|
||||
),
|
||||
'Symfony\\Component\\Finder\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/symfony/finder',
|
||||
),
|
||||
'Smf\\ConnectionPool\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/open-smf/connection-pool/src',
|
||||
),
|
||||
'Psr\\SimpleCache\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/psr/simple-cache/src',
|
||||
),
|
||||
'Psr\\Log\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/psr/log/Psr/Log',
|
||||
),
|
||||
'Psr\\Container\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/psr/container/src',
|
||||
),
|
||||
'Psr\\Cache\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/psr/cache/src',
|
||||
),
|
||||
'League\\MimeTypeDetection\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/league/mime-type-detection/src',
|
||||
),
|
||||
'League\\Flysystem\\Cached\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/league/flysystem-cached-adapter/src',
|
||||
),
|
||||
'League\\Flysystem\\' =>
|
||||
array (
|
||||
0 => __DIR__ . '/..' . '/league/flysystem/src',
|
||||
),
|
||||
);
|
||||
|
||||
public static $fallbackDirsPsr0 = array (
|
||||
0 => __DIR__ . '/../..' . '/extend',
|
||||
);
|
||||
|
||||
public static $classMap = array (
|
||||
'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
|
||||
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
|
||||
'League\\Flysystem\\AdapterInterface' => __DIR__ . '/..' . '/league/flysystem/src/AdapterInterface.php',
|
||||
'League\\Flysystem\\Adapter\\AbstractAdapter' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/AbstractAdapter.php',
|
||||
'League\\Flysystem\\Adapter\\AbstractFtpAdapter' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/AbstractFtpAdapter.php',
|
||||
'League\\Flysystem\\Adapter\\CanOverwriteFiles' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/CanOverwriteFiles.php',
|
||||
'League\\Flysystem\\Adapter\\Ftp' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/Ftp.php',
|
||||
'League\\Flysystem\\Adapter\\Ftpd' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/Ftpd.php',
|
||||
'League\\Flysystem\\Adapter\\Local' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/Local.php',
|
||||
'League\\Flysystem\\Adapter\\NullAdapter' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/NullAdapter.php',
|
||||
'League\\Flysystem\\Adapter\\Polyfill\\NotSupportingVisibilityTrait' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/Polyfill/NotSupportingVisibilityTrait.php',
|
||||
'League\\Flysystem\\Adapter\\Polyfill\\StreamedCopyTrait' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/Polyfill/StreamedCopyTrait.php',
|
||||
'League\\Flysystem\\Adapter\\Polyfill\\StreamedReadingTrait' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/Polyfill/StreamedReadingTrait.php',
|
||||
'League\\Flysystem\\Adapter\\Polyfill\\StreamedTrait' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/Polyfill/StreamedTrait.php',
|
||||
'League\\Flysystem\\Adapter\\Polyfill\\StreamedWritingTrait' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/Polyfill/StreamedWritingTrait.php',
|
||||
'League\\Flysystem\\Adapter\\SynologyFtp' => __DIR__ . '/..' . '/league/flysystem/src/Adapter/SynologyFtp.php',
|
||||
'League\\Flysystem\\Cached\\CacheInterface' => __DIR__ . '/..' . '/league/flysystem-cached-adapter/src/CacheInterface.php',
|
||||
'League\\Flysystem\\Cached\\CachedAdapter' => __DIR__ . '/..' . '/league/flysystem-cached-adapter/src/CachedAdapter.php',
|
||||
'League\\Flysystem\\Cached\\Storage\\AbstractCache' => __DIR__ . '/..' . '/league/flysystem-cached-adapter/src/Storage/AbstractCache.php',
|
||||
'League\\Flysystem\\Cached\\Storage\\Adapter' => __DIR__ . '/..' . '/league/flysystem-cached-adapter/src/Storage/Adapter.php',
|
||||
'League\\Flysystem\\Cached\\Storage\\Memcached' => __DIR__ . '/..' . '/league/flysystem-cached-adapter/src/Storage/Memcached.php',
|
||||
'League\\Flysystem\\Cached\\Storage\\Memory' => __DIR__ . '/..' . '/league/flysystem-cached-adapter/src/Storage/Memory.php',
|
||||
'League\\Flysystem\\Cached\\Storage\\Noop' => __DIR__ . '/..' . '/league/flysystem-cached-adapter/src/Storage/Noop.php',
|
||||
'League\\Flysystem\\Cached\\Storage\\PhpRedis' => __DIR__ . '/..' . '/league/flysystem-cached-adapter/src/Storage/PhpRedis.php',
|
||||
'League\\Flysystem\\Cached\\Storage\\Predis' => __DIR__ . '/..' . '/league/flysystem-cached-adapter/src/Storage/Predis.php',
|
||||
'League\\Flysystem\\Cached\\Storage\\Psr6Cache' => __DIR__ . '/..' . '/league/flysystem-cached-adapter/src/Storage/Psr6Cache.php',
|
||||
'League\\Flysystem\\Cached\\Storage\\Stash' => __DIR__ . '/..' . '/league/flysystem-cached-adapter/src/Storage/Stash.php',
|
||||
'League\\Flysystem\\Config' => __DIR__ . '/..' . '/league/flysystem/src/Config.php',
|
||||
'League\\Flysystem\\ConfigAwareTrait' => __DIR__ . '/..' . '/league/flysystem/src/ConfigAwareTrait.php',
|
||||
'League\\Flysystem\\ConnectionErrorException' => __DIR__ . '/..' . '/league/flysystem/src/ConnectionErrorException.php',
|
||||
'League\\Flysystem\\ConnectionRuntimeException' => __DIR__ . '/..' . '/league/flysystem/src/ConnectionRuntimeException.php',
|
||||
'League\\Flysystem\\Directory' => __DIR__ . '/..' . '/league/flysystem/src/Directory.php',
|
||||
'League\\Flysystem\\Exception' => __DIR__ . '/..' . '/league/flysystem/src/Exception.php',
|
||||
'League\\Flysystem\\File' => __DIR__ . '/..' . '/league/flysystem/src/File.php',
|
||||
'League\\Flysystem\\FileExistsException' => __DIR__ . '/..' . '/league/flysystem/src/FileExistsException.php',
|
||||
'League\\Flysystem\\FileNotFoundException' => __DIR__ . '/..' . '/league/flysystem/src/FileNotFoundException.php',
|
||||
'League\\Flysystem\\Filesystem' => __DIR__ . '/..' . '/league/flysystem/src/Filesystem.php',
|
||||
'League\\Flysystem\\FilesystemException' => __DIR__ . '/..' . '/league/flysystem/src/FilesystemException.php',
|
||||
'League\\Flysystem\\FilesystemInterface' => __DIR__ . '/..' . '/league/flysystem/src/FilesystemInterface.php',
|
||||
'League\\Flysystem\\FilesystemNotFoundException' => __DIR__ . '/..' . '/league/flysystem/src/FilesystemNotFoundException.php',
|
||||
'League\\Flysystem\\Handler' => __DIR__ . '/..' . '/league/flysystem/src/Handler.php',
|
||||
'League\\Flysystem\\InvalidRootException' => __DIR__ . '/..' . '/league/flysystem/src/InvalidRootException.php',
|
||||
'League\\Flysystem\\MountManager' => __DIR__ . '/..' . '/league/flysystem/src/MountManager.php',
|
||||
'League\\Flysystem\\NotSupportedException' => __DIR__ . '/..' . '/league/flysystem/src/NotSupportedException.php',
|
||||
'League\\Flysystem\\PluginInterface' => __DIR__ . '/..' . '/league/flysystem/src/PluginInterface.php',
|
||||
'League\\Flysystem\\Plugin\\AbstractPlugin' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/AbstractPlugin.php',
|
||||
'League\\Flysystem\\Plugin\\EmptyDir' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/EmptyDir.php',
|
||||
'League\\Flysystem\\Plugin\\ForcedCopy' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/ForcedCopy.php',
|
||||
'League\\Flysystem\\Plugin\\ForcedRename' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/ForcedRename.php',
|
||||
'League\\Flysystem\\Plugin\\GetWithMetadata' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/GetWithMetadata.php',
|
||||
'League\\Flysystem\\Plugin\\ListFiles' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/ListFiles.php',
|
||||
'League\\Flysystem\\Plugin\\ListPaths' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/ListPaths.php',
|
||||
'League\\Flysystem\\Plugin\\ListWith' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/ListWith.php',
|
||||
'League\\Flysystem\\Plugin\\PluggableTrait' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/PluggableTrait.php',
|
||||
'League\\Flysystem\\Plugin\\PluginNotFoundException' => __DIR__ . '/..' . '/league/flysystem/src/Plugin/PluginNotFoundException.php',
|
||||
'League\\Flysystem\\ReadInterface' => __DIR__ . '/..' . '/league/flysystem/src/ReadInterface.php',
|
||||
'League\\Flysystem\\RootViolationException' => __DIR__ . '/..' . '/league/flysystem/src/RootViolationException.php',
|
||||
'League\\Flysystem\\SafeStorage' => __DIR__ . '/..' . '/league/flysystem/src/SafeStorage.php',
|
||||
'League\\Flysystem\\UnreadableFileException' => __DIR__ . '/..' . '/league/flysystem/src/UnreadableFileException.php',
|
||||
'League\\Flysystem\\Util' => __DIR__ . '/..' . '/league/flysystem/src/Util.php',
|
||||
'League\\Flysystem\\Util\\ContentListingFormatter' => __DIR__ . '/..' . '/league/flysystem/src/Util/ContentListingFormatter.php',
|
||||
'League\\Flysystem\\Util\\MimeType' => __DIR__ . '/..' . '/league/flysystem/src/Util/MimeType.php',
|
||||
'League\\Flysystem\\Util\\StreamHasher' => __DIR__ . '/..' . '/league/flysystem/src/Util/StreamHasher.php',
|
||||
'League\\MimeTypeDetection\\EmptyExtensionToMimeTypeMap' => __DIR__ . '/..' . '/league/mime-type-detection/src/EmptyExtensionToMimeTypeMap.php',
|
||||
'League\\MimeTypeDetection\\ExtensionMimeTypeDetector' => __DIR__ . '/..' . '/league/mime-type-detection/src/ExtensionMimeTypeDetector.php',
|
||||
'League\\MimeTypeDetection\\ExtensionToMimeTypeMap' => __DIR__ . '/..' . '/league/mime-type-detection/src/ExtensionToMimeTypeMap.php',
|
||||
'League\\MimeTypeDetection\\FinfoMimeTypeDetector' => __DIR__ . '/..' . '/league/mime-type-detection/src/FinfoMimeTypeDetector.php',
|
||||
'League\\MimeTypeDetection\\GeneratedExtensionToMimeTypeMap' => __DIR__ . '/..' . '/league/mime-type-detection/src/GeneratedExtensionToMimeTypeMap.php',
|
||||
'League\\MimeTypeDetection\\MimeTypeDetector' => __DIR__ . '/..' . '/league/mime-type-detection/src/MimeTypeDetector.php',
|
||||
'Nette\\ArgumentOutOfRangeException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\DeprecatedException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\DirectoryNotFoundException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\FileNotFoundException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\IOException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\InvalidArgumentException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\InvalidStateException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\Iterators\\CachingIterator' => __DIR__ . '/..' . '/nette/utils/src/Iterators/CachingIterator.php',
|
||||
'Nette\\Iterators\\Mapper' => __DIR__ . '/..' . '/nette/utils/src/Iterators/Mapper.php',
|
||||
'Nette\\Localization\\ITranslator' => __DIR__ . '/..' . '/nette/utils/src/Utils/ITranslator.php',
|
||||
'Nette\\MemberAccessException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\NotImplementedException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\NotSupportedException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\OutOfRangeException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\PhpGenerator\\ClassType' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/ClassType.php',
|
||||
'Nette\\PhpGenerator\\Closure' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Closure.php',
|
||||
'Nette\\PhpGenerator\\Constant' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Constant.php',
|
||||
'Nette\\PhpGenerator\\Dumper' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Dumper.php',
|
||||
'Nette\\PhpGenerator\\Factory' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Factory.php',
|
||||
'Nette\\PhpGenerator\\GlobalFunction' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/GlobalFunction.php',
|
||||
'Nette\\PhpGenerator\\Helpers' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Helpers.php',
|
||||
'Nette\\PhpGenerator\\Literal' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Literal.php',
|
||||
'Nette\\PhpGenerator\\Method' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Method.php',
|
||||
'Nette\\PhpGenerator\\Parameter' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Parameter.php',
|
||||
'Nette\\PhpGenerator\\PhpFile' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/PhpFile.php',
|
||||
'Nette\\PhpGenerator\\PhpLiteral' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/PhpLiteral.php',
|
||||
'Nette\\PhpGenerator\\PhpNamespace' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/PhpNamespace.php',
|
||||
'Nette\\PhpGenerator\\Printer' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Printer.php',
|
||||
'Nette\\PhpGenerator\\Property' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Property.php',
|
||||
'Nette\\PhpGenerator\\PsrPrinter' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/PsrPrinter.php',
|
||||
'Nette\\PhpGenerator\\Traits\\CommentAware' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Traits/CommentAware.php',
|
||||
'Nette\\PhpGenerator\\Traits\\FunctionLike' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Traits/FunctionLike.php',
|
||||
'Nette\\PhpGenerator\\Traits\\NameAware' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Traits/NameAware.php',
|
||||
'Nette\\PhpGenerator\\Traits\\VisibilityAware' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Traits/VisibilityAware.php',
|
||||
'Nette\\PhpGenerator\\Type' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Type.php',
|
||||
'Nette\\SmartObject' => __DIR__ . '/..' . '/nette/utils/src/Utils/SmartObject.php',
|
||||
'Nette\\StaticClass' => __DIR__ . '/..' . '/nette/utils/src/Utils/StaticClass.php',
|
||||
'Nette\\UnexpectedValueException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\Utils\\ArrayHash' => __DIR__ . '/..' . '/nette/utils/src/Utils/ArrayHash.php',
|
||||
'Nette\\Utils\\ArrayList' => __DIR__ . '/..' . '/nette/utils/src/Utils/ArrayList.php',
|
||||
'Nette\\Utils\\Arrays' => __DIR__ . '/..' . '/nette/utils/src/Utils/Arrays.php',
|
||||
'Nette\\Utils\\AssertionException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\Utils\\Callback' => __DIR__ . '/..' . '/nette/utils/src/Utils/Callback.php',
|
||||
'Nette\\Utils\\DateTime' => __DIR__ . '/..' . '/nette/utils/src/Utils/DateTime.php',
|
||||
'Nette\\Utils\\FileSystem' => __DIR__ . '/..' . '/nette/utils/src/Utils/FileSystem.php',
|
||||
'Nette\\Utils\\Helpers' => __DIR__ . '/..' . '/nette/utils/src/Utils/Helpers.php',
|
||||
'Nette\\Utils\\Html' => __DIR__ . '/..' . '/nette/utils/src/Utils/Html.php',
|
||||
'Nette\\Utils\\IHtmlString' => __DIR__ . '/..' . '/nette/utils/src/Utils/IHtmlString.php',
|
||||
'Nette\\Utils\\Image' => __DIR__ . '/..' . '/nette/utils/src/Utils/Image.php',
|
||||
'Nette\\Utils\\ImageException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\Utils\\Json' => __DIR__ . '/..' . '/nette/utils/src/Utils/Json.php',
|
||||
'Nette\\Utils\\JsonException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\Utils\\ObjectHelpers' => __DIR__ . '/..' . '/nette/utils/src/Utils/ObjectHelpers.php',
|
||||
'Nette\\Utils\\ObjectMixin' => __DIR__ . '/..' . '/nette/utils/src/Utils/ObjectMixin.php',
|
||||
'Nette\\Utils\\Paginator' => __DIR__ . '/..' . '/nette/utils/src/Utils/Paginator.php',
|
||||
'Nette\\Utils\\Random' => __DIR__ . '/..' . '/nette/utils/src/Utils/Random.php',
|
||||
'Nette\\Utils\\Reflection' => __DIR__ . '/..' . '/nette/utils/src/Utils/Reflection.php',
|
||||
'Nette\\Utils\\RegexpException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\Utils\\Strings' => __DIR__ . '/..' . '/nette/utils/src/Utils/Strings.php',
|
||||
'Nette\\Utils\\UnknownImageFileException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php',
|
||||
'Nette\\Utils\\Validators' => __DIR__ . '/..' . '/nette/utils/src/Utils/Validators.php',
|
||||
'Psr\\Cache\\CacheException' => __DIR__ . '/..' . '/psr/cache/src/CacheException.php',
|
||||
'Psr\\Cache\\CacheItemInterface' => __DIR__ . '/..' . '/psr/cache/src/CacheItemInterface.php',
|
||||
'Psr\\Cache\\CacheItemPoolInterface' => __DIR__ . '/..' . '/psr/cache/src/CacheItemPoolInterface.php',
|
||||
'Psr\\Cache\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/cache/src/InvalidArgumentException.php',
|
||||
'Psr\\Container\\ContainerExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerExceptionInterface.php',
|
||||
'Psr\\Container\\ContainerInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerInterface.php',
|
||||
'Psr\\Container\\NotFoundExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/NotFoundExceptionInterface.php',
|
||||
'Psr\\Log\\AbstractLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/AbstractLogger.php',
|
||||
'Psr\\Log\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/log/Psr/Log/InvalidArgumentException.php',
|
||||
'Psr\\Log\\LogLevel' => __DIR__ . '/..' . '/psr/log/Psr/Log/LogLevel.php',
|
||||
'Psr\\Log\\LoggerAwareInterface' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerAwareInterface.php',
|
||||
'Psr\\Log\\LoggerAwareTrait' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerAwareTrait.php',
|
||||
'Psr\\Log\\LoggerInterface' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerInterface.php',
|
||||
'Psr\\Log\\LoggerTrait' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerTrait.php',
|
||||
'Psr\\Log\\NullLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/NullLogger.php',
|
||||
'Psr\\Log\\Test\\DummyTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/DummyTest.php',
|
||||
'Psr\\Log\\Test\\LoggerInterfaceTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
|
||||
'Psr\\Log\\Test\\TestLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/TestLogger.php',
|
||||
'Psr\\SimpleCache\\CacheException' => __DIR__ . '/..' . '/psr/simple-cache/src/CacheException.php',
|
||||
'Psr\\SimpleCache\\CacheInterface' => __DIR__ . '/..' . '/psr/simple-cache/src/CacheInterface.php',
|
||||
'Psr\\SimpleCache\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/simple-cache/src/InvalidArgumentException.php',
|
||||
'Smf\\ConnectionPool\\BorrowConnectionTimeoutException' => __DIR__ . '/..' . '/open-smf/connection-pool/src/BorrowConnectionTimeoutException.php',
|
||||
'Smf\\ConnectionPool\\ConnectionPool' => __DIR__ . '/..' . '/open-smf/connection-pool/src/ConnectionPool.php',
|
||||
'Smf\\ConnectionPool\\ConnectionPoolInterface' => __DIR__ . '/..' . '/open-smf/connection-pool/src/ConnectionPoolInterface.php',
|
||||
'Smf\\ConnectionPool\\ConnectionPoolTrait' => __DIR__ . '/..' . '/open-smf/connection-pool/src/ConnectionPoolTrait.php',
|
||||
'Smf\\ConnectionPool\\Connectors\\ConnectorInterface' => __DIR__ . '/..' . '/open-smf/connection-pool/src/Connectors/ConnectorInterface.php',
|
||||
'Smf\\ConnectionPool\\Connectors\\CoroutineMySQLConnector' => __DIR__ . '/..' . '/open-smf/connection-pool/src/Connectors/CoroutineMySQLConnector.php',
|
||||
'Smf\\ConnectionPool\\Connectors\\CoroutinePostgreSQLConnector' => __DIR__ . '/..' . '/open-smf/connection-pool/src/Connectors/CoroutinePostgreSQLConnector.php',
|
||||
'Smf\\ConnectionPool\\Connectors\\CoroutineRedisConnector' => __DIR__ . '/..' . '/open-smf/connection-pool/src/Connectors/CoroutineRedisConnector.php',
|
||||
'Smf\\ConnectionPool\\Connectors\\PDOConnector' => __DIR__ . '/..' . '/open-smf/connection-pool/src/Connectors/PDOConnector.php',
|
||||
'Smf\\ConnectionPool\\Connectors\\PhpRedisConnector' => __DIR__ . '/..' . '/open-smf/connection-pool/src/Connectors/PhpRedisConnector.php',
|
||||
'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
|
||||
'Symfony\\Component\\Finder\\Comparator\\Comparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/Comparator.php',
|
||||
'Symfony\\Component\\Finder\\Comparator\\DateComparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/DateComparator.php',
|
||||
'Symfony\\Component\\Finder\\Comparator\\NumberComparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/NumberComparator.php',
|
||||
'Symfony\\Component\\Finder\\Exception\\AccessDeniedException' => __DIR__ . '/..' . '/symfony/finder/Exception/AccessDeniedException.php',
|
||||
'Symfony\\Component\\Finder\\Exception\\DirectoryNotFoundException' => __DIR__ . '/..' . '/symfony/finder/Exception/DirectoryNotFoundException.php',
|
||||
'Symfony\\Component\\Finder\\Finder' => __DIR__ . '/..' . '/symfony/finder/Finder.php',
|
||||
'Symfony\\Component\\Finder\\Gitignore' => __DIR__ . '/..' . '/symfony/finder/Gitignore.php',
|
||||
'Symfony\\Component\\Finder\\Glob' => __DIR__ . '/..' . '/symfony/finder/Glob.php',
|
||||
'Symfony\\Component\\Finder\\Iterator\\CustomFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/CustomFilterIterator.php',
|
||||
'Symfony\\Component\\Finder\\Iterator\\DateRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/DateRangeFilterIterator.php',
|
||||
'Symfony\\Component\\Finder\\Iterator\\DepthRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/DepthRangeFilterIterator.php',
|
||||
'Symfony\\Component\\Finder\\Iterator\\ExcludeDirectoryFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php',
|
||||
'Symfony\\Component\\Finder\\Iterator\\FileTypeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FileTypeFilterIterator.php',
|
||||
'Symfony\\Component\\Finder\\Iterator\\FilecontentFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FilecontentFilterIterator.php',
|
||||
'Symfony\\Component\\Finder\\Iterator\\FilenameFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FilenameFilterIterator.php',
|
||||
'Symfony\\Component\\Finder\\Iterator\\MultiplePcreFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/MultiplePcreFilterIterator.php',
|
||||
'Symfony\\Component\\Finder\\Iterator\\PathFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/PathFilterIterator.php',
|
||||
'Symfony\\Component\\Finder\\Iterator\\RecursiveDirectoryIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/RecursiveDirectoryIterator.php',
|
||||
'Symfony\\Component\\Finder\\Iterator\\SizeRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/SizeRangeFilterIterator.php',
|
||||
'Symfony\\Component\\Finder\\Iterator\\SortableIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/SortableIterator.php',
|
||||
'Symfony\\Component\\Finder\\SplFileInfo' => __DIR__ . '/..' . '/symfony/finder/SplFileInfo.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\AmqpCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/AmqpCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\ArgsStub' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/ArgsStub.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\Caster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/Caster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\ClassStub' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/ClassStub.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\ConstStub' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/ConstStub.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\CutArrayStub' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/CutArrayStub.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\CutStub' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/CutStub.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\DOMCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/DOMCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\DateCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/DateCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\DoctrineCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/DoctrineCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\DsCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/DsCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\DsPairStub' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/DsPairStub.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\EnumStub' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/EnumStub.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\ExceptionCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/ExceptionCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\FrameStub' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/FrameStub.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\GmpCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/GmpCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\ImagineCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/ImagineCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\ImgStub' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/ImgStub.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\IntlCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/IntlCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\LinkStub' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/LinkStub.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\MemcachedCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/MemcachedCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\PdoCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/PdoCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\PgSqlCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/PgSqlCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\ProxyManagerCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/ProxyManagerCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\RedisCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/RedisCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\ReflectionCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/ReflectionCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\ResourceCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/ResourceCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\SplCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/SplCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\StubCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/StubCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\SymfonyCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/SymfonyCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\TraceStub' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/TraceStub.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\UuidCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/UuidCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\XmlReaderCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/XmlReaderCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Caster\\XmlResourceCaster' => __DIR__ . '/..' . '/symfony/var-dumper/Caster/XmlResourceCaster.php',
|
||||
'Symfony\\Component\\VarDumper\\Cloner\\AbstractCloner' => __DIR__ . '/..' . '/symfony/var-dumper/Cloner/AbstractCloner.php',
|
||||
'Symfony\\Component\\VarDumper\\Cloner\\ClonerInterface' => __DIR__ . '/..' . '/symfony/var-dumper/Cloner/ClonerInterface.php',
|
||||
'Symfony\\Component\\VarDumper\\Cloner\\Cursor' => __DIR__ . '/..' . '/symfony/var-dumper/Cloner/Cursor.php',
|
||||
'Symfony\\Component\\VarDumper\\Cloner\\Data' => __DIR__ . '/..' . '/symfony/var-dumper/Cloner/Data.php',
|
||||
'Symfony\\Component\\VarDumper\\Cloner\\DumperInterface' => __DIR__ . '/..' . '/symfony/var-dumper/Cloner/DumperInterface.php',
|
||||
'Symfony\\Component\\VarDumper\\Cloner\\Stub' => __DIR__ . '/..' . '/symfony/var-dumper/Cloner/Stub.php',
|
||||
'Symfony\\Component\\VarDumper\\Cloner\\VarCloner' => __DIR__ . '/..' . '/symfony/var-dumper/Cloner/VarCloner.php',
|
||||
'Symfony\\Component\\VarDumper\\Command\\Descriptor\\CliDescriptor' => __DIR__ . '/..' . '/symfony/var-dumper/Command/Descriptor/CliDescriptor.php',
|
||||
'Symfony\\Component\\VarDumper\\Command\\Descriptor\\DumpDescriptorInterface' => __DIR__ . '/..' . '/symfony/var-dumper/Command/Descriptor/DumpDescriptorInterface.php',
|
||||
'Symfony\\Component\\VarDumper\\Command\\Descriptor\\HtmlDescriptor' => __DIR__ . '/..' . '/symfony/var-dumper/Command/Descriptor/HtmlDescriptor.php',
|
||||
'Symfony\\Component\\VarDumper\\Command\\ServerDumpCommand' => __DIR__ . '/..' . '/symfony/var-dumper/Command/ServerDumpCommand.php',
|
||||
'Symfony\\Component\\VarDumper\\Dumper\\AbstractDumper' => __DIR__ . '/..' . '/symfony/var-dumper/Dumper/AbstractDumper.php',
|
||||
'Symfony\\Component\\VarDumper\\Dumper\\CliDumper' => __DIR__ . '/..' . '/symfony/var-dumper/Dumper/CliDumper.php',
|
||||
'Symfony\\Component\\VarDumper\\Dumper\\ContextProvider\\CliContextProvider' => __DIR__ . '/..' . '/symfony/var-dumper/Dumper/ContextProvider/CliContextProvider.php',
|
||||
'Symfony\\Component\\VarDumper\\Dumper\\ContextProvider\\ContextProviderInterface' => __DIR__ . '/..' . '/symfony/var-dumper/Dumper/ContextProvider/ContextProviderInterface.php',
|
||||
'Symfony\\Component\\VarDumper\\Dumper\\ContextProvider\\RequestContextProvider' => __DIR__ . '/..' . '/symfony/var-dumper/Dumper/ContextProvider/RequestContextProvider.php',
|
||||
'Symfony\\Component\\VarDumper\\Dumper\\ContextProvider\\SourceContextProvider' => __DIR__ . '/..' . '/symfony/var-dumper/Dumper/ContextProvider/SourceContextProvider.php',
|
||||
'Symfony\\Component\\VarDumper\\Dumper\\ContextualizedDumper' => __DIR__ . '/..' . '/symfony/var-dumper/Dumper/ContextualizedDumper.php',
|
||||
'Symfony\\Component\\VarDumper\\Dumper\\DataDumperInterface' => __DIR__ . '/..' . '/symfony/var-dumper/Dumper/DataDumperInterface.php',
|
||||
'Symfony\\Component\\VarDumper\\Dumper\\HtmlDumper' => __DIR__ . '/..' . '/symfony/var-dumper/Dumper/HtmlDumper.php',
|
||||
'Symfony\\Component\\VarDumper\\Dumper\\ServerDumper' => __DIR__ . '/..' . '/symfony/var-dumper/Dumper/ServerDumper.php',
|
||||
'Symfony\\Component\\VarDumper\\Exception\\ThrowingCasterException' => __DIR__ . '/..' . '/symfony/var-dumper/Exception/ThrowingCasterException.php',
|
||||
'Symfony\\Component\\VarDumper\\Server\\Connection' => __DIR__ . '/..' . '/symfony/var-dumper/Server/Connection.php',
|
||||
'Symfony\\Component\\VarDumper\\Server\\DumpServer' => __DIR__ . '/..' . '/symfony/var-dumper/Server/DumpServer.php',
|
||||
'Symfony\\Component\\VarDumper\\Test\\VarDumperTestTrait' => __DIR__ . '/..' . '/symfony/var-dumper/Test/VarDumperTestTrait.php',
|
||||
'Symfony\\Component\\VarDumper\\VarDumper' => __DIR__ . '/..' . '/symfony/var-dumper/VarDumper.php',
|
||||
'Symfony\\Polyfill\\Mbstring\\Mbstring' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/Mbstring.php',
|
||||
'Symfony\\Polyfill\\Php72\\Php72' => __DIR__ . '/..' . '/symfony/polyfill-php72/Php72.php',
|
||||
'Symfony\\Polyfill\\Php80\\Php80' => __DIR__ . '/..' . '/symfony/polyfill-php80/Php80.php',
|
||||
'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
|
||||
'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
|
||||
'app\\AppService' => __DIR__ . '/../..' . '/app/AppService.php',
|
||||
'app\\ExceptionHandle' => __DIR__ . '/../..' . '/app/ExceptionHandle.php',
|
||||
'app\\Request' => __DIR__ . '/../..' . '/app/Request.php',
|
||||
'app\\handle\\controller\\Common' => __DIR__ . '/../..' . '/app/handle/controller/Common.php',
|
||||
'app\\handle\\controller\\Index' => __DIR__ . '/../..' . '/app/handle/controller/Index.php',
|
||||
'app\\handle\\controller\\Login' => __DIR__ . '/../..' . '/app/handle/controller/Login.php',
|
||||
'app\\handle\\controller\\Scan' => __DIR__ . '/../..' . '/app/handle/controller/Scan.php',
|
||||
'app\\index\\controller\\Common' => __DIR__ . '/../..' . '/app/index/controller/Common.php',
|
||||
'app\\index\\controller\\Index' => __DIR__ . '/../..' . '/app/index/controller/Index.php',
|
||||
'app\\index\\controller\\Login' => __DIR__ . '/../..' . '/app/index/controller/Login.php',
|
||||
'app\\index\\middleware\\checkLogin' => __DIR__ . '/../..' . '/app/index/middleware/checkLogin.php',
|
||||
'app\\listener\\GetState' => __DIR__ . '/../..' . '/app/listener/GetState.php',
|
||||
'app\\listener\\WsClose' => __DIR__ . '/../..' . '/app/listener/WsClose.php',
|
||||
'app\\listener\\WsConnect' => __DIR__ . '/../..' . '/app/listener/WsConnect.php',
|
||||
'app\\listener\\scan\\Baccarat' => __DIR__ . '/../..' . '/app/listener/scan/Baccarat.php',
|
||||
'app\\listener\\scan\\Dt' => __DIR__ . '/../..' . '/app/listener/scan/Dt.php',
|
||||
'app\\listener\\scan\\Nn' => __DIR__ . '/../..' . '/app/listener/scan/Nn.php',
|
||||
'app\\listener\\scan\\Tc' => __DIR__ . '/../..' . '/app/listener/scan/Tc.php',
|
||||
'app\\listener\\space\\ChangeBoot' => __DIR__ . '/../..' . '/app/listener/space/ChangeBoot.php',
|
||||
'app\\listener\\space\\EndBet' => __DIR__ . '/../..' . '/app/listener/space/EndBet.php',
|
||||
'app\\listener\\space\\EndRob' => __DIR__ . '/../..' . '/app/listener/space/EndRob.php',
|
||||
'app\\listener\\space\\OpeningBaccarat' => __DIR__ . '/../..' . '/app/listener/space/OpeningBaccarat.php',
|
||||
'app\\listener\\space\\OpeningDt' => __DIR__ . '/../..' . '/app/listener/space/OpeningDt.php',
|
||||
'app\\listener\\space\\OpeningNn' => __DIR__ . '/../..' . '/app/listener/space/OpeningNn.php',
|
||||
'app\\listener\\space\\OpeningTc' => __DIR__ . '/../..' . '/app/listener/space/OpeningTc.php',
|
||||
'app\\listener\\space\\ResetBoot' => __DIR__ . '/../..' . '/app/listener/space/ResetBoot.php',
|
||||
'app\\listener\\space\\ResetNumberTab' => __DIR__ . '/../..' . '/app/listener/space/ResetNumberTab.php',
|
||||
'app\\listener\\space\\StartBet' => __DIR__ . '/../..' . '/app/listener/space/StartBet.php',
|
||||
'app\\listener\\space\\StartRob' => __DIR__ . '/../..' . '/app/listener/space/StartRob.php',
|
||||
'app\\listener\\user\\CancelBet' => __DIR__ . '/../..' . '/app/listener/user/CancelBet.php',
|
||||
'app\\listener\\user\\ToBet' => __DIR__ . '/../..' . '/app/listener/user/ToBet.php',
|
||||
'app\\listener\\user\\ToRob' => __DIR__ . '/../..' . '/app/listener/user/ToRob.php',
|
||||
'app\\middleware\\checkLogin' => __DIR__ . '/../..' . '/app/middleware/checkLogin.php',
|
||||
'app\\models\\bet\\Bet' => __DIR__ . '/../..' . '/app/models/bet/Bet.php',
|
||||
'app\\models\\bet\\Cs' => __DIR__ . '/../..' . '/app/models/bet/Cs.php',
|
||||
'app\\models\\bet\\Xima' => __DIR__ . '/../..' . '/app/models/bet/Xima.php',
|
||||
'app\\models\\process\\Boot' => __DIR__ . '/../..' . '/app/models/process/Boot.php',
|
||||
'app\\models\\process\\NumberTab' => __DIR__ . '/../..' . '/app/models/process/NumberTab.php',
|
||||
'app\\models\\process\\RetreatedLog' => __DIR__ . '/../..' . '/app/models/process/RetreatedLog.php',
|
||||
'app\\models\\process\\Sumday' => __DIR__ . '/../..' . '/app/models/process/Sumday.php',
|
||||
'app\\models\\process\\WaybillRemind' => __DIR__ . '/../..' . '/app/models/process/WaybillRemind.php',
|
||||
'app\\models\\table\\ScanAccount' => __DIR__ . '/../..' . '/app/models/table/ScanAccount.php',
|
||||
'app\\models\\table\\Table' => __DIR__ . '/../..' . '/app/models/table/Table.php',
|
||||
'app\\models\\table\\UserController' => __DIR__ . '/../..' . '/app/models/table/UserController.php',
|
||||
'app\\models\\user\\User' => __DIR__ . '/../..' . '/app/models/user/User.php',
|
||||
'app\\services\\bet\\CancelBetService' => __DIR__ . '/../..' . '/app/services/bet/CancelBetService.php',
|
||||
'app\\services\\bet\\ToBetBaccaratService' => __DIR__ . '/../..' . '/app/services/bet/ToBetBaccaratService.php',
|
||||
'app\\services\\bet\\ToBetCommonService' => __DIR__ . '/../..' . '/app/services/bet/ToBetCommonService.php',
|
||||
'app\\services\\bet\\ToBetDtService' => __DIR__ . '/../..' . '/app/services/bet/ToBetDtService.php',
|
||||
'app\\services\\bet\\ToBetNnService' => __DIR__ . '/../..' . '/app/services/bet/ToBetNnService.php',
|
||||
'app\\services\\bet\\ToBetTcService' => __DIR__ . '/../..' . '/app/services/bet/ToBetTcService.php',
|
||||
'app\\services\\bet\\ToRobService' => __DIR__ . '/../..' . '/app/services/bet/ToRobService.php',
|
||||
'app\\services\\connect\\GetCardService' => __DIR__ . '/../..' . '/app/services/connect/GetCardService.php',
|
||||
'app\\services\\connect\\InitTableService' => __DIR__ . '/../..' . '/app/services/connect/InitTableService.php',
|
||||
'app\\services\\connect\\ScanConnectService' => __DIR__ . '/../..' . '/app/services/connect/ScanConnectService.php',
|
||||
'app\\services\\connect\\SpaceConnectService' => __DIR__ . '/../..' . '/app/services/connect/SpaceConnectService.php',
|
||||
'app\\services\\connect\\UserConnectService' => __DIR__ . '/../..' . '/app/services/connect/UserConnectService.php',
|
||||
'app\\services\\opening\\OpeningBaccaratService' => __DIR__ . '/../..' . '/app/services/opening/OpeningBaccaratService.php',
|
||||
'app\\services\\opening\\OpeningDtService' => __DIR__ . '/../..' . '/app/services/opening/OpeningDtService.php',
|
||||
'app\\services\\opening\\OpeningNnService' => __DIR__ . '/../..' . '/app/services/opening/OpeningNnService.php',
|
||||
'app\\services\\opening\\OpeningTcService' => __DIR__ . '/../..' . '/app/services/opening/OpeningTcService.php',
|
||||
'app\\services\\process\\CountdownService' => __DIR__ . '/../..' . '/app/services/process/CountdownService.php',
|
||||
'app\\services\\process\\EndBetService' => __DIR__ . '/../..' . '/app/services/process/EndBetService.php',
|
||||
'app\\services\\process\\EndRobService' => __DIR__ . '/../..' . '/app/services/process/EndRobService.php',
|
||||
'app\\services\\process\\ResetNumberTabService' => __DIR__ . '/../..' . '/app/services/process/ResetNumberTabService.php',
|
||||
'app\\services\\process\\StartBetService' => __DIR__ . '/../..' . '/app/services/process/StartBetService.php',
|
||||
'app\\services\\process\\StartRobService' => __DIR__ . '/../..' . '/app/services/process/StartRobService.php',
|
||||
'app\\services\\scan\\ScanBaccaratService' => __DIR__ . '/../..' . '/app/services/scan/ScanBaccaratService.php',
|
||||
'app\\services\\scan\\ScanCommonService' => __DIR__ . '/../..' . '/app/services/scan/ScanCommonService.php',
|
||||
'app\\services\\scan\\ScanDtService' => __DIR__ . '/../..' . '/app/services/scan/ScanDtService.php',
|
||||
'app\\services\\scan\\ScanNnService' => __DIR__ . '/../..' . '/app/services/scan/ScanNnService.php',
|
||||
'app\\services\\scan\\ScanTcService' => __DIR__ . '/../..' . '/app/services/scan/ScanTcService.php',
|
||||
'freedom\\basic\\BaseModel' => __DIR__ . '/../..' . '/freedom/basic/BaseModel.php',
|
||||
'freedom\\traits\\ModelTrait' => __DIR__ . '/../..' . '/freedom/traits/ModelTrait.php',
|
||||
'freedom\\utils\\CardPosition' => __DIR__ . '/../..' . '/freedom/utils/CardPosition.php',
|
||||
'freedom\\utils\\CardPositionNn' => __DIR__ . '/../..' . '/freedom/utils/CardPositionNn.php',
|
||||
'freedom\\utils\\CardPositionTc' => __DIR__ . '/../..' . '/freedom/utils/CardPositionTc.php',
|
||||
'freedom\\utils\\RedisUtil' => __DIR__ . '/../..' . '/freedom/utils/RedisUtil.php',
|
||||
'freedom\\utils\\SocketSession' => __DIR__ . '/../..' . '/freedom/utils/SocketSession.php',
|
||||
'freedom\\utils\\Waybill' => __DIR__ . '/../..' . '/freedom/utils/Waybill.php',
|
||||
'think\\App' => __DIR__ . '/..' . '/topthink/framework/src/think/App.php',
|
||||
'think\\Cache' => __DIR__ . '/..' . '/topthink/framework/src/think/Cache.php',
|
||||
'think\\Collection' => __DIR__ . '/..' . '/topthink/think-helper/src/Collection.php',
|
||||
'think\\Config' => __DIR__ . '/..' . '/topthink/framework/src/think/Config.php',
|
||||
'think\\Console' => __DIR__ . '/..' . '/topthink/framework/src/think/Console.php',
|
||||
'think\\Container' => __DIR__ . '/..' . '/topthink/framework/src/think/Container.php',
|
||||
'think\\Cookie' => __DIR__ . '/..' . '/topthink/framework/src/think/Cookie.php',
|
||||
'think\\Db' => __DIR__ . '/..' . '/topthink/framework/src/think/Db.php',
|
||||
'think\\DbManager' => __DIR__ . '/..' . '/topthink/think-orm/src/DbManager.php',
|
||||
'think\\Env' => __DIR__ . '/..' . '/topthink/framework/src/think/Env.php',
|
||||
'think\\Event' => __DIR__ . '/..' . '/topthink/framework/src/think/Event.php',
|
||||
'think\\Exception' => __DIR__ . '/..' . '/topthink/framework/src/think/Exception.php',
|
||||
'think\\Facade' => __DIR__ . '/..' . '/topthink/framework/src/think/Facade.php',
|
||||
'think\\File' => __DIR__ . '/..' . '/topthink/framework/src/think/File.php',
|
||||
'think\\Filesystem' => __DIR__ . '/..' . '/topthink/framework/src/think/Filesystem.php',
|
||||
'think\\Http' => __DIR__ . '/..' . '/topthink/framework/src/think/Http.php',
|
||||
'think\\Lang' => __DIR__ . '/..' . '/topthink/framework/src/think/Lang.php',
|
||||
'think\\Log' => __DIR__ . '/..' . '/topthink/framework/src/think/Log.php',
|
||||
'think\\Manager' => __DIR__ . '/..' . '/topthink/framework/src/think/Manager.php',
|
||||
'think\\Middleware' => __DIR__ . '/..' . '/topthink/framework/src/think/Middleware.php',
|
||||
'think\\Model' => __DIR__ . '/..' . '/topthink/think-orm/src/Model.php',
|
||||
'think\\Paginator' => __DIR__ . '/..' . '/topthink/think-orm/src/Paginator.php',
|
||||
'think\\Pipeline' => __DIR__ . '/..' . '/topthink/framework/src/think/Pipeline.php',
|
||||
'think\\Request' => __DIR__ . '/..' . '/topthink/framework/src/think/Request.php',
|
||||
'think\\Response' => __DIR__ . '/..' . '/topthink/framework/src/think/Response.php',
|
||||
'think\\Route' => __DIR__ . '/..' . '/topthink/framework/src/think/Route.php',
|
||||
'think\\Service' => __DIR__ . '/..' . '/topthink/framework/src/think/Service.php',
|
||||
'think\\Session' => __DIR__ . '/..' . '/topthink/framework/src/think/Session.php',
|
||||
'think\\Template' => __DIR__ . '/..' . '/topthink/think-template/src/Template.php',
|
||||
'think\\Validate' => __DIR__ . '/..' . '/topthink/framework/src/think/Validate.php',
|
||||
'think\\View' => __DIR__ . '/..' . '/topthink/framework/src/think/View.php',
|
||||
'think\\app\\MultiApp' => __DIR__ . '/..' . '/topthink/think-multi-app/src/MultiApp.php',
|
||||
'think\\app\\Service' => __DIR__ . '/..' . '/topthink/think-multi-app/src/Service.php',
|
||||
'think\\app\\Url' => __DIR__ . '/..' . '/topthink/think-multi-app/src/Url.php',
|
||||
'think\\app\\command\\Build' => __DIR__ . '/..' . '/topthink/think-multi-app/src/command/Build.php',
|
||||
'think\\app\\command\\Clear' => __DIR__ . '/..' . '/topthink/think-multi-app/src/command/Clear.php',
|
||||
'think\\cache\\Driver' => __DIR__ . '/..' . '/topthink/framework/src/think/cache/Driver.php',
|
||||
'think\\cache\\TagSet' => __DIR__ . '/..' . '/topthink/framework/src/think/cache/TagSet.php',
|
||||
'think\\cache\\driver\\File' => __DIR__ . '/..' . '/topthink/framework/src/think/cache/driver/File.php',
|
||||
'think\\cache\\driver\\Memcache' => __DIR__ . '/..' . '/topthink/framework/src/think/cache/driver/Memcache.php',
|
||||
'think\\cache\\driver\\Memcached' => __DIR__ . '/..' . '/topthink/framework/src/think/cache/driver/Memcached.php',
|
||||
'think\\cache\\driver\\Redis' => __DIR__ . '/..' . '/topthink/framework/src/think/cache/driver/Redis.php',
|
||||
'think\\cache\\driver\\Wincache' => __DIR__ . '/..' . '/topthink/framework/src/think/cache/driver/Wincache.php',
|
||||
'think\\captcha\\Captcha' => __DIR__ . '/..' . '/topthink/think-captcha/src/Captcha.php',
|
||||
'think\\captcha\\CaptchaController' => __DIR__ . '/..' . '/topthink/think-captcha/src/CaptchaController.php',
|
||||
'think\\captcha\\CaptchaService' => __DIR__ . '/..' . '/topthink/think-captcha/src/CaptchaService.php',
|
||||
'think\\captcha\\facade\\Captcha' => __DIR__ . '/..' . '/topthink/think-captcha/src/facade/Captcha.php',
|
||||
'think\\console\\Command' => __DIR__ . '/..' . '/topthink/framework/src/think/console/Command.php',
|
||||
'think\\console\\Input' => __DIR__ . '/..' . '/topthink/framework/src/think/console/Input.php',
|
||||
'think\\console\\Output' => __DIR__ . '/..' . '/topthink/framework/src/think/console/Output.php',
|
||||
'think\\console\\Table' => __DIR__ . '/..' . '/topthink/framework/src/think/console/Table.php',
|
||||
'think\\console\\command\\Clear' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/Clear.php',
|
||||
'think\\console\\command\\Help' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/Help.php',
|
||||
'think\\console\\command\\Lists' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/Lists.php',
|
||||
'think\\console\\command\\Make' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/Make.php',
|
||||
'think\\console\\command\\RouteList' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/RouteList.php',
|
||||
'think\\console\\command\\RunServer' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/RunServer.php',
|
||||
'think\\console\\command\\ServiceDiscover' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/ServiceDiscover.php',
|
||||
'think\\console\\command\\VendorPublish' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/VendorPublish.php',
|
||||
'think\\console\\command\\Version' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/Version.php',
|
||||
'think\\console\\command\\make\\Command' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/make/Command.php',
|
||||
'think\\console\\command\\make\\Controller' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/make/Controller.php',
|
||||
'think\\console\\command\\make\\Event' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/make/Event.php',
|
||||
'think\\console\\command\\make\\Listener' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/make/Listener.php',
|
||||
'think\\console\\command\\make\\Middleware' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/make/Middleware.php',
|
||||
'think\\console\\command\\make\\Model' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/make/Model.php',
|
||||
'think\\console\\command\\make\\Service' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/make/Service.php',
|
||||
'think\\console\\command\\make\\Subscribe' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/make/Subscribe.php',
|
||||
'think\\console\\command\\make\\Validate' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/make/Validate.php',
|
||||
'think\\console\\command\\optimize\\Route' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/optimize/Route.php',
|
||||
'think\\console\\command\\optimize\\Schema' => __DIR__ . '/..' . '/topthink/framework/src/think/console/command/optimize/Schema.php',
|
||||
'think\\console\\input\\Argument' => __DIR__ . '/..' . '/topthink/framework/src/think/console/input/Argument.php',
|
||||
'think\\console\\input\\Definition' => __DIR__ . '/..' . '/topthink/framework/src/think/console/input/Definition.php',
|
||||
'think\\console\\input\\Option' => __DIR__ . '/..' . '/topthink/framework/src/think/console/input/Option.php',
|
||||
'think\\console\\output\\Ask' => __DIR__ . '/..' . '/topthink/framework/src/think/console/output/Ask.php',
|
||||
'think\\console\\output\\Descriptor' => __DIR__ . '/..' . '/topthink/framework/src/think/console/output/Descriptor.php',
|
||||
'think\\console\\output\\Formatter' => __DIR__ . '/..' . '/topthink/framework/src/think/console/output/Formatter.php',
|
||||
'think\\console\\output\\Question' => __DIR__ . '/..' . '/topthink/framework/src/think/console/output/Question.php',
|
||||
'think\\console\\output\\descriptor\\Console' => __DIR__ . '/..' . '/topthink/framework/src/think/console/output/descriptor/Console.php',
|
||||
'think\\console\\output\\driver\\Buffer' => __DIR__ . '/..' . '/topthink/framework/src/think/console/output/driver/Buffer.php',
|
||||
'think\\console\\output\\driver\\Console' => __DIR__ . '/..' . '/topthink/framework/src/think/console/output/driver/Console.php',
|
||||
'think\\console\\output\\driver\\Nothing' => __DIR__ . '/..' . '/topthink/framework/src/think/console/output/driver/Nothing.php',
|
||||
'think\\console\\output\\formatter\\Stack' => __DIR__ . '/..' . '/topthink/framework/src/think/console/output/formatter/Stack.php',
|
||||
'think\\console\\output\\formatter\\Style' => __DIR__ . '/..' . '/topthink/framework/src/think/console/output/formatter/Style.php',
|
||||
'think\\console\\output\\question\\Choice' => __DIR__ . '/..' . '/topthink/framework/src/think/console/output/question/Choice.php',
|
||||
'think\\console\\output\\question\\Confirmation' => __DIR__ . '/..' . '/topthink/framework/src/think/console/output/question/Confirmation.php',
|
||||
'think\\contract\\Arrayable' => __DIR__ . '/..' . '/topthink/think-helper/src/contract/Arrayable.php',
|
||||
'think\\contract\\CacheHandlerInterface' => __DIR__ . '/..' . '/topthink/framework/src/think/contract/CacheHandlerInterface.php',
|
||||
'think\\contract\\Jsonable' => __DIR__ . '/..' . '/topthink/think-helper/src/contract/Jsonable.php',
|
||||
'think\\contract\\LogHandlerInterface' => __DIR__ . '/..' . '/topthink/framework/src/think/contract/LogHandlerInterface.php',
|
||||
'think\\contract\\ModelRelationInterface' => __DIR__ . '/..' . '/topthink/framework/src/think/contract/ModelRelationInterface.php',
|
||||
'think\\contract\\SessionHandlerInterface' => __DIR__ . '/..' . '/topthink/framework/src/think/contract/SessionHandlerInterface.php',
|
||||
'think\\contract\\TemplateHandlerInterface' => __DIR__ . '/..' . '/topthink/framework/src/think/contract/TemplateHandlerInterface.php',
|
||||
'think\\db\\BaseQuery' => __DIR__ . '/..' . '/topthink/think-orm/src/db/BaseQuery.php',
|
||||
'think\\db\\Builder' => __DIR__ . '/..' . '/topthink/think-orm/src/db/Builder.php',
|
||||
'think\\db\\CacheItem' => __DIR__ . '/..' . '/topthink/think-orm/src/db/CacheItem.php',
|
||||
'think\\db\\Connection' => __DIR__ . '/..' . '/topthink/think-orm/src/db/Connection.php',
|
||||
'think\\db\\ConnectionInterface' => __DIR__ . '/..' . '/topthink/think-orm/src/db/ConnectionInterface.php',
|
||||
'think\\db\\Fetch' => __DIR__ . '/..' . '/topthink/think-orm/src/db/Fetch.php',
|
||||
'think\\db\\Mongo' => __DIR__ . '/..' . '/topthink/think-orm/src/db/Mongo.php',
|
||||
'think\\db\\PDOConnection' => __DIR__ . '/..' . '/topthink/think-orm/src/db/PDOConnection.php',
|
||||
'think\\db\\Query' => __DIR__ . '/..' . '/topthink/think-orm/src/db/Query.php',
|
||||
'think\\db\\Raw' => __DIR__ . '/..' . '/topthink/think-orm/src/db/Raw.php',
|
||||
'think\\db\\Where' => __DIR__ . '/..' . '/topthink/think-orm/src/db/Where.php',
|
||||
'think\\db\\builder\\Mongo' => __DIR__ . '/..' . '/topthink/think-orm/src/db/builder/Mongo.php',
|
||||
'think\\db\\builder\\Mysql' => __DIR__ . '/..' . '/topthink/think-orm/src/db/builder/Mysql.php',
|
||||
'think\\db\\builder\\Oracle' => __DIR__ . '/..' . '/topthink/think-orm/src/db/builder/Oracle.php',
|
||||
'think\\db\\builder\\Pgsql' => __DIR__ . '/..' . '/topthink/think-orm/src/db/builder/Pgsql.php',
|
||||
'think\\db\\builder\\Sqlite' => __DIR__ . '/..' . '/topthink/think-orm/src/db/builder/Sqlite.php',
|
||||
'think\\db\\builder\\Sqlsrv' => __DIR__ . '/..' . '/topthink/think-orm/src/db/builder/Sqlsrv.php',
|
||||
'think\\db\\concern\\AggregateQuery' => __DIR__ . '/..' . '/topthink/think-orm/src/db/concern/AggregateQuery.php',
|
||||
'think\\db\\concern\\JoinAndViewQuery' => __DIR__ . '/..' . '/topthink/think-orm/src/db/concern/JoinAndViewQuery.php',
|
||||
'think\\db\\concern\\ModelRelationQuery' => __DIR__ . '/..' . '/topthink/think-orm/src/db/concern/ModelRelationQuery.php',
|
||||
'think\\db\\concern\\ParamsBind' => __DIR__ . '/..' . '/topthink/think-orm/src/db/concern/ParamsBind.php',
|
||||
'think\\db\\concern\\ResultOperation' => __DIR__ . '/..' . '/topthink/think-orm/src/db/concern/ResultOperation.php',
|
||||
'think\\db\\concern\\TableFieldInfo' => __DIR__ . '/..' . '/topthink/think-orm/src/db/concern/TableFieldInfo.php',
|
||||
'think\\db\\concern\\TimeFieldQuery' => __DIR__ . '/..' . '/topthink/think-orm/src/db/concern/TimeFieldQuery.php',
|
||||
'think\\db\\concern\\Transaction' => __DIR__ . '/..' . '/topthink/think-orm/src/db/concern/Transaction.php',
|
||||
'think\\db\\concern\\WhereQuery' => __DIR__ . '/..' . '/topthink/think-orm/src/db/concern/WhereQuery.php',
|
||||
'think\\db\\connector\\Mongo' => __DIR__ . '/..' . '/topthink/think-orm/src/db/connector/Mongo.php',
|
||||
'think\\db\\connector\\Mysql' => __DIR__ . '/..' . '/topthink/think-orm/src/db/connector/Mysql.php',
|
||||
'think\\db\\connector\\Oracle' => __DIR__ . '/..' . '/topthink/think-orm/src/db/connector/Oracle.php',
|
||||
'think\\db\\connector\\Pgsql' => __DIR__ . '/..' . '/topthink/think-orm/src/db/connector/Pgsql.php',
|
||||
'think\\db\\connector\\Sqlite' => __DIR__ . '/..' . '/topthink/think-orm/src/db/connector/Sqlite.php',
|
||||
'think\\db\\connector\\Sqlsrv' => __DIR__ . '/..' . '/topthink/think-orm/src/db/connector/Sqlsrv.php',
|
||||
'think\\db\\exception\\BindParamException' => __DIR__ . '/..' . '/topthink/think-orm/src/db/exception/BindParamException.php',
|
||||
'think\\db\\exception\\DataNotFoundException' => __DIR__ . '/..' . '/topthink/think-orm/src/db/exception/DataNotFoundException.php',
|
||||
'think\\db\\exception\\DbException' => __DIR__ . '/..' . '/topthink/think-orm/src/db/exception/DbException.php',
|
||||
'think\\db\\exception\\InvalidArgumentException' => __DIR__ . '/..' . '/topthink/think-orm/src/db/exception/InvalidArgumentException.php',
|
||||
'think\\db\\exception\\ModelEventException' => __DIR__ . '/..' . '/topthink/think-orm/src/db/exception/ModelEventException.php',
|
||||
'think\\db\\exception\\ModelNotFoundException' => __DIR__ . '/..' . '/topthink/think-orm/src/db/exception/ModelNotFoundException.php',
|
||||
'think\\db\\exception\\PDOException' => __DIR__ . '/..' . '/topthink/think-orm/src/db/exception/PDOException.php',
|
||||
'think\\event\\AppInit' => __DIR__ . '/..' . '/topthink/framework/src/think/event/AppInit.php',
|
||||
'think\\event\\HttpEnd' => __DIR__ . '/..' . '/topthink/framework/src/think/event/HttpEnd.php',
|
||||
'think\\event\\HttpRun' => __DIR__ . '/..' . '/topthink/framework/src/think/event/HttpRun.php',
|
||||
'think\\event\\LogWrite' => __DIR__ . '/..' . '/topthink/framework/src/think/event/LogWrite.php',
|
||||
'think\\event\\RouteLoaded' => __DIR__ . '/..' . '/topthink/framework/src/think/event/RouteLoaded.php',
|
||||
'think\\exception\\ClassNotFoundException' => __DIR__ . '/..' . '/topthink/framework/src/think/exception/ClassNotFoundException.php',
|
||||
'think\\exception\\ErrorException' => __DIR__ . '/..' . '/topthink/framework/src/think/exception/ErrorException.php',
|
||||
'think\\exception\\FileException' => __DIR__ . '/..' . '/topthink/framework/src/think/exception/FileException.php',
|
||||
'think\\exception\\FuncNotFoundException' => __DIR__ . '/..' . '/topthink/framework/src/think/exception/FuncNotFoundException.php',
|
||||
'think\\exception\\Handle' => __DIR__ . '/..' . '/topthink/framework/src/think/exception/Handle.php',
|
||||
'think\\exception\\HttpException' => __DIR__ . '/..' . '/topthink/framework/src/think/exception/HttpException.php',
|
||||
'think\\exception\\HttpResponseException' => __DIR__ . '/..' . '/topthink/framework/src/think/exception/HttpResponseException.php',
|
||||
'think\\exception\\InvalidArgumentException' => __DIR__ . '/..' . '/topthink/framework/src/think/exception/InvalidArgumentException.php',
|
||||
'think\\exception\\RouteNotFoundException' => __DIR__ . '/..' . '/topthink/framework/src/think/exception/RouteNotFoundException.php',
|
||||
'think\\exception\\ValidateException' => __DIR__ . '/..' . '/topthink/framework/src/think/exception/ValidateException.php',
|
||||
'think\\facade\\App' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/App.php',
|
||||
'think\\facade\\Cache' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Cache.php',
|
||||
'think\\facade\\Config' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Config.php',
|
||||
'think\\facade\\Console' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Console.php',
|
||||
'think\\facade\\Cookie' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Cookie.php',
|
||||
'think\\facade\\Db' => __DIR__ . '/..' . '/topthink/think-orm/src/facade/Db.php',
|
||||
'think\\facade\\Env' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Env.php',
|
||||
'think\\facade\\Event' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Event.php',
|
||||
'think\\facade\\Filesystem' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Filesystem.php',
|
||||
'think\\facade\\Lang' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Lang.php',
|
||||
'think\\facade\\Log' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Log.php',
|
||||
'think\\facade\\Middleware' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Middleware.php',
|
||||
'think\\facade\\Request' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Request.php',
|
||||
'think\\facade\\Route' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Route.php',
|
||||
'think\\facade\\Session' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Session.php',
|
||||
'think\\facade\\Template' => __DIR__ . '/..' . '/topthink/think-template/src/facade/Template.php',
|
||||
'think\\facade\\Validate' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/Validate.php',
|
||||
'think\\facade\\View' => __DIR__ . '/..' . '/topthink/framework/src/think/facade/View.php',
|
||||
'think\\file\\UploadedFile' => __DIR__ . '/..' . '/topthink/framework/src/think/file/UploadedFile.php',
|
||||
'think\\filesystem\\CacheStore' => __DIR__ . '/..' . '/topthink/framework/src/think/filesystem/CacheStore.php',
|
||||
'think\\filesystem\\Driver' => __DIR__ . '/..' . '/topthink/framework/src/think/filesystem/Driver.php',
|
||||
'think\\filesystem\\driver\\Local' => __DIR__ . '/..' . '/topthink/framework/src/think/filesystem/driver/Local.php',
|
||||
'think\\helper\\Arr' => __DIR__ . '/..' . '/topthink/think-helper/src/helper/Arr.php',
|
||||
'think\\helper\\Str' => __DIR__ . '/..' . '/topthink/think-helper/src/helper/Str.php',
|
||||
'think\\initializer\\BootService' => __DIR__ . '/..' . '/topthink/framework/src/think/initializer/BootService.php',
|
||||
'think\\initializer\\Error' => __DIR__ . '/..' . '/topthink/framework/src/think/initializer/Error.php',
|
||||
'think\\initializer\\RegisterService' => __DIR__ . '/..' . '/topthink/framework/src/think/initializer/RegisterService.php',
|
||||
'think\\log\\Channel' => __DIR__ . '/..' . '/topthink/framework/src/think/log/Channel.php',
|
||||
'think\\log\\ChannelSet' => __DIR__ . '/..' . '/topthink/framework/src/think/log/ChannelSet.php',
|
||||
'think\\log\\driver\\File' => __DIR__ . '/..' . '/topthink/framework/src/think/log/driver/File.php',
|
||||
'think\\log\\driver\\Socket' => __DIR__ . '/..' . '/topthink/framework/src/think/log/driver/Socket.php',
|
||||
'think\\middleware\\AllowCrossDomain' => __DIR__ . '/..' . '/topthink/framework/src/think/middleware/AllowCrossDomain.php',
|
||||
'think\\middleware\\CheckRequestCache' => __DIR__ . '/..' . '/topthink/framework/src/think/middleware/CheckRequestCache.php',
|
||||
'think\\middleware\\FormTokenCheck' => __DIR__ . '/..' . '/topthink/framework/src/think/middleware/FormTokenCheck.php',
|
||||
'think\\middleware\\LoadLangPack' => __DIR__ . '/..' . '/topthink/framework/src/think/middleware/LoadLangPack.php',
|
||||
'think\\middleware\\SessionInit' => __DIR__ . '/..' . '/topthink/framework/src/think/middleware/SessionInit.php',
|
||||
'think\\model\\Collection' => __DIR__ . '/..' . '/topthink/think-orm/src/model/Collection.php',
|
||||
'think\\model\\Pivot' => __DIR__ . '/..' . '/topthink/think-orm/src/model/Pivot.php',
|
||||
'think\\model\\Relation' => __DIR__ . '/..' . '/topthink/think-orm/src/model/Relation.php',
|
||||
'think\\model\\concern\\Attribute' => __DIR__ . '/..' . '/topthink/think-orm/src/model/concern/Attribute.php',
|
||||
'think\\model\\concern\\Conversion' => __DIR__ . '/..' . '/topthink/think-orm/src/model/concern/Conversion.php',
|
||||
'think\\model\\concern\\ModelEvent' => __DIR__ . '/..' . '/topthink/think-orm/src/model/concern/ModelEvent.php',
|
||||
'think\\model\\concern\\OptimLock' => __DIR__ . '/..' . '/topthink/think-orm/src/model/concern/OptimLock.php',
|
||||
'think\\model\\concern\\RelationShip' => __DIR__ . '/..' . '/topthink/think-orm/src/model/concern/RelationShip.php',
|
||||
'think\\model\\concern\\SoftDelete' => __DIR__ . '/..' . '/topthink/think-orm/src/model/concern/SoftDelete.php',
|
||||
'think\\model\\concern\\TimeStamp' => __DIR__ . '/..' . '/topthink/think-orm/src/model/concern/TimeStamp.php',
|
||||
'think\\model\\relation\\BelongsTo' => __DIR__ . '/..' . '/topthink/think-orm/src/model/relation/BelongsTo.php',
|
||||
'think\\model\\relation\\BelongsToMany' => __DIR__ . '/..' . '/topthink/think-orm/src/model/relation/BelongsToMany.php',
|
||||
'think\\model\\relation\\HasMany' => __DIR__ . '/..' . '/topthink/think-orm/src/model/relation/HasMany.php',
|
||||
'think\\model\\relation\\HasManyThrough' => __DIR__ . '/..' . '/topthink/think-orm/src/model/relation/HasManyThrough.php',
|
||||
'think\\model\\relation\\HasOne' => __DIR__ . '/..' . '/topthink/think-orm/src/model/relation/HasOne.php',
|
||||
'think\\model\\relation\\HasOneThrough' => __DIR__ . '/..' . '/topthink/think-orm/src/model/relation/HasOneThrough.php',
|
||||
'think\\model\\relation\\MorphMany' => __DIR__ . '/..' . '/topthink/think-orm/src/model/relation/MorphMany.php',
|
||||
'think\\model\\relation\\MorphOne' => __DIR__ . '/..' . '/topthink/think-orm/src/model/relation/MorphOne.php',
|
||||
'think\\model\\relation\\MorphTo' => __DIR__ . '/..' . '/topthink/think-orm/src/model/relation/MorphTo.php',
|
||||
'think\\model\\relation\\MorphToMany' => __DIR__ . '/..' . '/topthink/think-orm/src/model/relation/MorphToMany.php',
|
||||
'think\\model\\relation\\OneToOne' => __DIR__ . '/..' . '/topthink/think-orm/src/model/relation/OneToOne.php',
|
||||
'think\\paginator\\driver\\Bootstrap' => __DIR__ . '/..' . '/topthink/think-orm/src/paginator/driver/Bootstrap.php',
|
||||
'think\\response\\File' => __DIR__ . '/..' . '/topthink/framework/src/think/response/File.php',
|
||||
'think\\response\\Html' => __DIR__ . '/..' . '/topthink/framework/src/think/response/Html.php',
|
||||
'think\\response\\Json' => __DIR__ . '/..' . '/topthink/framework/src/think/response/Json.php',
|
||||
'think\\response\\Jsonp' => __DIR__ . '/..' . '/topthink/framework/src/think/response/Jsonp.php',
|
||||
'think\\response\\Redirect' => __DIR__ . '/..' . '/topthink/framework/src/think/response/Redirect.php',
|
||||
'think\\response\\View' => __DIR__ . '/..' . '/topthink/framework/src/think/response/View.php',
|
||||
'think\\response\\Xml' => __DIR__ . '/..' . '/topthink/framework/src/think/response/Xml.php',
|
||||
'think\\route\\Dispatch' => __DIR__ . '/..' . '/topthink/framework/src/think/route/Dispatch.php',
|
||||
'think\\route\\Domain' => __DIR__ . '/..' . '/topthink/framework/src/think/route/Domain.php',
|
||||
'think\\route\\Resource' => __DIR__ . '/..' . '/topthink/framework/src/think/route/Resource.php',
|
||||
'think\\route\\Rule' => __DIR__ . '/..' . '/topthink/framework/src/think/route/Rule.php',
|
||||
'think\\route\\RuleGroup' => __DIR__ . '/..' . '/topthink/framework/src/think/route/RuleGroup.php',
|
||||
'think\\route\\RuleItem' => __DIR__ . '/..' . '/topthink/framework/src/think/route/RuleItem.php',
|
||||
'think\\route\\RuleName' => __DIR__ . '/..' . '/topthink/framework/src/think/route/RuleName.php',
|
||||
'think\\route\\Url' => __DIR__ . '/..' . '/topthink/framework/src/think/route/Url.php',
|
||||
'think\\route\\dispatch\\Callback' => __DIR__ . '/..' . '/topthink/framework/src/think/route/dispatch/Callback.php',
|
||||
'think\\route\\dispatch\\Controller' => __DIR__ . '/..' . '/topthink/framework/src/think/route/dispatch/Controller.php',
|
||||
'think\\route\\dispatch\\Url' => __DIR__ . '/..' . '/topthink/framework/src/think/route/dispatch/Url.php',
|
||||
'think\\service\\ModelService' => __DIR__ . '/..' . '/topthink/framework/src/think/service/ModelService.php',
|
||||
'think\\service\\PaginatorService' => __DIR__ . '/..' . '/topthink/framework/src/think/service/PaginatorService.php',
|
||||
'think\\service\\ValidateService' => __DIR__ . '/..' . '/topthink/framework/src/think/service/ValidateService.php',
|
||||
'think\\session\\Store' => __DIR__ . '/..' . '/topthink/framework/src/think/session/Store.php',
|
||||
'think\\session\\driver\\Cache' => __DIR__ . '/..' . '/topthink/framework/src/think/session/driver/Cache.php',
|
||||
'think\\session\\driver\\File' => __DIR__ . '/..' . '/topthink/framework/src/think/session/driver/File.php',
|
||||
'think\\swoole\\App' => __DIR__ . '/..' . '/topthink/think-swoole/src/App.php',
|
||||
'think\\swoole\\FileWatcher' => __DIR__ . '/..' . '/topthink/think-swoole/src/FileWatcher.php',
|
||||
'think\\swoole\\Http' => __DIR__ . '/..' . '/topthink/think-swoole/src/Http.php',
|
||||
'think\\swoole\\Manager' => __DIR__ . '/..' . '/topthink/think-swoole/src/Manager.php',
|
||||
'think\\swoole\\PidManager' => __DIR__ . '/..' . '/topthink/think-swoole/src/PidManager.php',
|
||||
'think\\swoole\\Pool' => __DIR__ . '/..' . '/topthink/think-swoole/src/Pool.php',
|
||||
'think\\swoole\\RpcManager' => __DIR__ . '/..' . '/topthink/think-swoole/src/RpcManager.php',
|
||||
'think\\swoole\\Sandbox' => __DIR__ . '/..' . '/topthink/think-swoole/src/Sandbox.php',
|
||||
'think\\swoole\\Service' => __DIR__ . '/..' . '/topthink/think-swoole/src/Service.php',
|
||||
'think\\swoole\\Table' => __DIR__ . '/..' . '/topthink/think-swoole/src/Table.php',
|
||||
'think\\swoole\\Websocket' => __DIR__ . '/..' . '/topthink/think-swoole/src/Websocket.php',
|
||||
'think\\swoole\\command\\Rpc' => __DIR__ . '/..' . '/topthink/think-swoole/src/command/Rpc.php',
|
||||
'think\\swoole\\command\\RpcInterface' => __DIR__ . '/..' . '/topthink/think-swoole/src/command/RpcInterface.php',
|
||||
'think\\swoole\\command\\Server' => __DIR__ . '/..' . '/topthink/think-swoole/src/command/Server.php',
|
||||
'think\\swoole\\concerns\\InteractsWithHttp' => __DIR__ . '/..' . '/topthink/think-swoole/src/concerns/InteractsWithHttp.php',
|
||||
'think\\swoole\\concerns\\InteractsWithPools' => __DIR__ . '/..' . '/topthink/think-swoole/src/concerns/InteractsWithPools.php',
|
||||
'think\\swoole\\concerns\\InteractsWithRpcClient' => __DIR__ . '/..' . '/topthink/think-swoole/src/concerns/InteractsWithRpcClient.php',
|
||||
'think\\swoole\\concerns\\InteractsWithRpcServer' => __DIR__ . '/..' . '/topthink/think-swoole/src/concerns/InteractsWithRpcServer.php',
|
||||
'think\\swoole\\concerns\\InteractsWithServer' => __DIR__ . '/..' . '/topthink/think-swoole/src/concerns/InteractsWithServer.php',
|
||||
'think\\swoole\\concerns\\InteractsWithSwooleTable' => __DIR__ . '/..' . '/topthink/think-swoole/src/concerns/InteractsWithSwooleTable.php',
|
||||
'think\\swoole\\concerns\\InteractsWithWebsocket' => __DIR__ . '/..' . '/topthink/think-swoole/src/concerns/InteractsWithWebsocket.php',
|
||||
'think\\swoole\\concerns\\ModifyProperty' => __DIR__ . '/..' . '/topthink/think-swoole/src/concerns/ModifyProperty.php',
|
||||
'think\\swoole\\concerns\\WithApplication' => __DIR__ . '/..' . '/topthink/think-swoole/src/concerns/WithApplication.php',
|
||||
'think\\swoole\\contract\\ResetterInterface' => __DIR__ . '/..' . '/topthink/think-swoole/src/contract/ResetterInterface.php',
|
||||
'think\\swoole\\contract\\rpc\\ParserInterface' => __DIR__ . '/..' . '/topthink/think-swoole/src/contract/rpc/ParserInterface.php',
|
||||
'think\\swoole\\contract\\websocket\\HandlerInterface' => __DIR__ . '/..' . '/topthink/think-swoole/src/contract/websocket/HandlerInterface.php',
|
||||
'think\\swoole\\contract\\websocket\\ParserInterface' => __DIR__ . '/..' . '/topthink/think-swoole/src/contract/websocket/ParserInterface.php',
|
||||
'think\\swoole\\contract\\websocket\\RoomInterface' => __DIR__ . '/..' . '/topthink/think-swoole/src/contract/websocket/RoomInterface.php',
|
||||
'think\\swoole\\coroutine\\Context' => __DIR__ . '/..' . '/topthink/think-swoole/src/coroutine/Context.php',
|
||||
'think\\swoole\\exception\\RpcClientException' => __DIR__ . '/..' . '/topthink/think-swoole/src/exception/RpcClientException.php',
|
||||
'think\\swoole\\exception\\RpcResponseException' => __DIR__ . '/..' . '/topthink/think-swoole/src/exception/RpcResponseException.php',
|
||||
'think\\swoole\\facade\\Server' => __DIR__ . '/..' . '/topthink/think-swoole/src/facade/Server.php',
|
||||
'think\\swoole\\middleware\\ResetVarDumper' => __DIR__ . '/..' . '/topthink/think-swoole/src/middleware/ResetVarDumper.php',
|
||||
'think\\swoole\\pool\\Cache' => __DIR__ . '/..' . '/topthink/think-swoole/src/pool/Cache.php',
|
||||
'think\\swoole\\pool\\Client' => __DIR__ . '/..' . '/topthink/think-swoole/src/pool/Client.php',
|
||||
'think\\swoole\\pool\\Db' => __DIR__ . '/..' . '/topthink/think-swoole/src/pool/Db.php',
|
||||
'think\\swoole\\pool\\Proxy' => __DIR__ . '/..' . '/topthink/think-swoole/src/pool/Proxy.php',
|
||||
'think\\swoole\\pool\\proxy\\Connection' => __DIR__ . '/..' . '/topthink/think-swoole/src/pool/proxy/Connection.php',
|
||||
'think\\swoole\\pool\\proxy\\Store' => __DIR__ . '/..' . '/topthink/think-swoole/src/pool/proxy/Store.php',
|
||||
'think\\swoole\\resetters\\ClearInstances' => __DIR__ . '/..' . '/topthink/think-swoole/src/resetters/ClearInstances.php',
|
||||
'think\\swoole\\resetters\\ResetConfig' => __DIR__ . '/..' . '/topthink/think-swoole/src/resetters/ResetConfig.php',
|
||||
'think\\swoole\\resetters\\ResetEvent' => __DIR__ . '/..' . '/topthink/think-swoole/src/resetters/ResetEvent.php',
|
||||
'think\\swoole\\resetters\\ResetService' => __DIR__ . '/..' . '/topthink/think-swoole/src/resetters/ResetService.php',
|
||||
'think\\swoole\\rpc\\Error' => __DIR__ . '/..' . '/topthink/think-swoole/src/rpc/Error.php',
|
||||
'think\\swoole\\rpc\\File' => __DIR__ . '/..' . '/topthink/think-swoole/src/rpc/File.php',
|
||||
'think\\swoole\\rpc\\JsonParser' => __DIR__ . '/..' . '/topthink/think-swoole/src/rpc/JsonParser.php',
|
||||
'think\\swoole\\rpc\\Packer' => __DIR__ . '/..' . '/topthink/think-swoole/src/rpc/Packer.php',
|
||||
'think\\swoole\\rpc\\Protocol' => __DIR__ . '/..' . '/topthink/think-swoole/src/rpc/Protocol.php',
|
||||
'think\\swoole\\rpc\\client\\Connector' => __DIR__ . '/..' . '/topthink/think-swoole/src/rpc/client/Connector.php',
|
||||
'think\\swoole\\rpc\\client\\Gateway' => __DIR__ . '/..' . '/topthink/think-swoole/src/rpc/client/Gateway.php',
|
||||
'think\\swoole\\rpc\\client\\Proxy' => __DIR__ . '/..' . '/topthink/think-swoole/src/rpc/client/Proxy.php',
|
||||
'think\\swoole\\rpc\\server\\Channel' => __DIR__ . '/..' . '/topthink/think-swoole/src/rpc/server/Channel.php',
|
||||
'think\\swoole\\rpc\\server\\Dispatcher' => __DIR__ . '/..' . '/topthink/think-swoole/src/rpc/server/Dispatcher.php',
|
||||
'think\\swoole\\rpc\\server\\channel\\Buffer' => __DIR__ . '/..' . '/topthink/think-swoole/src/rpc/server/channel/Buffer.php',
|
||||
'think\\swoole\\rpc\\server\\channel\\File' => __DIR__ . '/..' . '/topthink/think-swoole/src/rpc/server/channel/File.php',
|
||||
'think\\swoole\\websocket\\Pusher' => __DIR__ . '/..' . '/topthink/think-swoole/src/websocket/Pusher.php',
|
||||
'think\\swoole\\websocket\\Room' => __DIR__ . '/..' . '/topthink/think-swoole/src/websocket/Room.php',
|
||||
'think\\swoole\\websocket\\SimpleParser' => __DIR__ . '/..' . '/topthink/think-swoole/src/websocket/SimpleParser.php',
|
||||
'think\\swoole\\websocket\\middleware\\SessionInit' => __DIR__ . '/..' . '/topthink/think-swoole/src/websocket/middleware/SessionInit.php',
|
||||
'think\\swoole\\websocket\\room\\Redis' => __DIR__ . '/..' . '/topthink/think-swoole/src/websocket/room/Redis.php',
|
||||
'think\\swoole\\websocket\\room\\Table' => __DIR__ . '/..' . '/topthink/think-swoole/src/websocket/room/Table.php',
|
||||
'think\\swoole\\websocket\\socketio\\Controller' => __DIR__ . '/..' . '/topthink/think-swoole/src/websocket/socketio/Controller.php',
|
||||
'think\\swoole\\websocket\\socketio\\Handler' => __DIR__ . '/..' . '/topthink/think-swoole/src/websocket/socketio/Handler.php',
|
||||
'think\\swoole\\websocket\\socketio\\Packet' => __DIR__ . '/..' . '/topthink/think-swoole/src/websocket/socketio/Packet.php',
|
||||
'think\\swoole\\websocket\\socketio\\Parser' => __DIR__ . '/..' . '/topthink/think-swoole/src/websocket/socketio/Parser.php',
|
||||
'think\\template\\TagLib' => __DIR__ . '/..' . '/topthink/think-template/src/template/TagLib.php',
|
||||
'think\\template\\driver\\File' => __DIR__ . '/..' . '/topthink/think-template/src/template/driver/File.php',
|
||||
'think\\template\\exception\\TemplateNotFoundException' => __DIR__ . '/..' . '/topthink/think-template/src/template/exception/TemplateNotFoundException.php',
|
||||
'think\\template\\taglib\\Cx' => __DIR__ . '/..' . '/topthink/think-template/src/template/taglib/Cx.php',
|
||||
'think\\trace\\Console' => __DIR__ . '/..' . '/topthink/think-trace/src/Console.php',
|
||||
'think\\trace\\Html' => __DIR__ . '/..' . '/topthink/think-trace/src/Html.php',
|
||||
'think\\trace\\Service' => __DIR__ . '/..' . '/topthink/think-trace/src/Service.php',
|
||||
'think\\trace\\TraceDebug' => __DIR__ . '/..' . '/topthink/think-trace/src/TraceDebug.php',
|
||||
'think\\validate\\ValidateRule' => __DIR__ . '/..' . '/topthink/framework/src/think/validate/ValidateRule.php',
|
||||
'think\\view\\driver\\Php' => __DIR__ . '/..' . '/topthink/framework/src/think/view/driver/Php.php',
|
||||
'think\\view\\driver\\Think' => __DIR__ . '/..' . '/topthink/think-view/src/Think.php',
|
||||
);
|
||||
|
||||
public static function getInitializer(ClassLoader $loader)
|
||||
{
|
||||
return \Closure::bind(function () use ($loader) {
|
||||
$loader->prefixLengthsPsr4 = ComposerStaticInit9947e2ce7d1a6501413c1b0d7d3973cf::$prefixLengthsPsr4;
|
||||
$loader->prefixDirsPsr4 = ComposerStaticInit9947e2ce7d1a6501413c1b0d7d3973cf::$prefixDirsPsr4;
|
||||
$loader->fallbackDirsPsr0 = ComposerStaticInit9947e2ce7d1a6501413c1b0d7d3973cf::$fallbackDirsPsr0;
|
||||
$loader->classMap = ComposerStaticInit9947e2ce7d1a6501413c1b0d7d3973cf::$classMap;
|
||||
|
||||
}, null, ClassLoader::class);
|
||||
}
|
||||
}
|
||||
Vendored
-1698
File diff suppressed because it is too large
Load Diff
Vendored
-249
@@ -1,249 +0,0 @@
|
||||
<?php return array (
|
||||
'root' =>
|
||||
array (
|
||||
'pretty_version' => 'dev-master',
|
||||
'version' => 'dev-master',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'c9f65d5ca918842689a627444aec27e5d6aeffc5',
|
||||
'name' => 'topthink/think',
|
||||
),
|
||||
'versions' =>
|
||||
array (
|
||||
'league/flysystem' =>
|
||||
array (
|
||||
'pretty_version' => '1.1.3',
|
||||
'version' => '1.1.3.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '9be3b16c877d477357c015cec057548cf9b2a14a',
|
||||
),
|
||||
'league/flysystem-cached-adapter' =>
|
||||
array (
|
||||
'pretty_version' => '1.1.0',
|
||||
'version' => '1.1.0.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'd1925efb2207ac4be3ad0c40b8277175f99ffaff',
|
||||
),
|
||||
'league/mime-type-detection' =>
|
||||
array (
|
||||
'pretty_version' => '1.5.1',
|
||||
'version' => '1.5.1.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '353f66d7555d8a90781f6f5e7091932f9a4250aa',
|
||||
),
|
||||
'nette/php-generator' =>
|
||||
array (
|
||||
'pretty_version' => 'v3.4.1',
|
||||
'version' => '3.4.1.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '7051954c534cebafd650efe8b145ac75b223cb66',
|
||||
),
|
||||
'nette/utils' =>
|
||||
array (
|
||||
'pretty_version' => 'v3.1.3',
|
||||
'version' => '3.1.3.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'c09937fbb24987b2a41c6022ebe84f4f1b8eec0f',
|
||||
),
|
||||
'open-smf/connection-pool' =>
|
||||
array (
|
||||
'pretty_version' => 'v1.0.15',
|
||||
'version' => '1.0.15.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'f9289cb5ee61d3e901bc74ab745e5b2162461a1e',
|
||||
),
|
||||
'psr/cache' =>
|
||||
array (
|
||||
'pretty_version' => '1.0.1',
|
||||
'version' => '1.0.1.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'd11b50ad223250cf17b86e38383413f5a6764bf8',
|
||||
),
|
||||
'psr/container' =>
|
||||
array (
|
||||
'pretty_version' => '1.0.0',
|
||||
'version' => '1.0.0.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'b7ce3b176482dbbc1245ebf52b181af44c2cf55f',
|
||||
),
|
||||
'psr/log' =>
|
||||
array (
|
||||
'pretty_version' => '1.1.3',
|
||||
'version' => '1.1.3.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc',
|
||||
),
|
||||
'psr/simple-cache' =>
|
||||
array (
|
||||
'pretty_version' => '1.0.1',
|
||||
'version' => '1.0.1.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '408d5eafb83c57f6365a3ca330ff23aa4a5fa39b',
|
||||
),
|
||||
'swoole/ide-helper' =>
|
||||
array (
|
||||
'pretty_version' => '4.5.6',
|
||||
'version' => '4.5.6.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'ab23c2c35880144a6060a3f178a68af0d0c6fc93',
|
||||
),
|
||||
'symfony/finder' =>
|
||||
array (
|
||||
'pretty_version' => 'v4.4.16',
|
||||
'version' => '4.4.16.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '26f63b8d4e92f2eecd90f6791a563ebb001abe31',
|
||||
),
|
||||
'symfony/polyfill-mbstring' =>
|
||||
array (
|
||||
'pretty_version' => 'v1.20.0',
|
||||
'version' => '1.20.0.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '39d483bdf39be819deabf04ec872eb0b2410b531',
|
||||
),
|
||||
'symfony/polyfill-php72' =>
|
||||
array (
|
||||
'pretty_version' => 'v1.20.0',
|
||||
'version' => '1.20.0.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'cede45fcdfabdd6043b3592e83678e42ec69e930',
|
||||
),
|
||||
'symfony/polyfill-php80' =>
|
||||
array (
|
||||
'pretty_version' => 'v1.20.0',
|
||||
'version' => '1.20.0.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'e70aa8b064c5b72d3df2abd5ab1e90464ad009de',
|
||||
),
|
||||
'symfony/var-dumper' =>
|
||||
array (
|
||||
'pretty_version' => 'v4.4.16',
|
||||
'version' => '4.4.16.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '3718e18b68d955348ad860e505991802c09f5f73',
|
||||
),
|
||||
'topthink/framework' =>
|
||||
array (
|
||||
'pretty_version' => 'v6.0.5',
|
||||
'version' => '6.0.5.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '85625d984f5c96699dc27d384869f206c3aec1cc',
|
||||
),
|
||||
'topthink/think' =>
|
||||
array (
|
||||
'pretty_version' => 'dev-master',
|
||||
'version' => 'dev-master',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'c9f65d5ca918842689a627444aec27e5d6aeffc5',
|
||||
),
|
||||
'topthink/think-captcha' =>
|
||||
array (
|
||||
'pretty_version' => 'v3.0.3',
|
||||
'version' => '3.0.3.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '1eef3717c1bcf4f5bbe2d1a1c704011d330a8b55',
|
||||
),
|
||||
'topthink/think-helper' =>
|
||||
array (
|
||||
'pretty_version' => 'v3.1.4',
|
||||
'version' => '3.1.4.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'c28d37743bda4a0455286ca85b17b5791d626e10',
|
||||
),
|
||||
'topthink/think-multi-app' =>
|
||||
array (
|
||||
'pretty_version' => 'v1.0.14',
|
||||
'version' => '1.0.14.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'ccaad7c2d33f42cb1cc2a78d6610aaec02cea4c3',
|
||||
),
|
||||
'topthink/think-orm' =>
|
||||
array (
|
||||
'pretty_version' => 'v2.0.34',
|
||||
'version' => '2.0.34.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '57f9b98895b0ff4ae7b7b75e51456fd8cb8fb629',
|
||||
),
|
||||
'topthink/think-swoole' =>
|
||||
array (
|
||||
'pretty_version' => 'v3.0.9',
|
||||
'version' => '3.0.9.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'c61e95cdc0669f4fe3382e25def9ae25797c0508',
|
||||
),
|
||||
'topthink/think-template' =>
|
||||
array (
|
||||
'pretty_version' => 'v2.0.7',
|
||||
'version' => '2.0.7.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'e98bdbb4a4c94b442f17dfceba81e0134d4fbd19',
|
||||
),
|
||||
'topthink/think-trace' =>
|
||||
array (
|
||||
'pretty_version' => 'v1.4',
|
||||
'version' => '1.4.0.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => '9a9fa8f767b6c66c5a133ad21ca1bc96ad329444',
|
||||
),
|
||||
'topthink/think-view' =>
|
||||
array (
|
||||
'pretty_version' => 'v1.0.14',
|
||||
'version' => '1.0.14.0',
|
||||
'aliases' =>
|
||||
array (
|
||||
),
|
||||
'reference' => 'edce0ae2c9551ab65f9e94a222604b0dead3576d',
|
||||
),
|
||||
),
|
||||
);
|
||||
Vendored
-24
@@ -1,24 +0,0 @@
|
||||
<?php
|
||||
|
||||
// platform_check.php @generated by Composer
|
||||
|
||||
$issues = array();
|
||||
|
||||
if (!(PHP_VERSION_ID >= 70205)) {
|
||||
$issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.5". You are running ' . PHP_VERSION . '.';
|
||||
}
|
||||
|
||||
$missingExtensions = array();
|
||||
extension_loaded('fileinfo') || $missingExtensions[] = 'fileinfo';
|
||||
extension_loaded('json') || $missingExtensions[] = 'json';
|
||||
extension_loaded('mbstring') || $missingExtensions[] = 'mbstring';
|
||||
extension_loaded('swoole') || $missingExtensions[] = 'swoole';
|
||||
|
||||
if ($missingExtensions) {
|
||||
$issues[] = 'Your Composer dependencies require the following PHP extensions to be installed: ' . implode(', ', $missingExtensions);
|
||||
}
|
||||
|
||||
if ($issues) {
|
||||
echo 'Composer detected issues in your platform:' . "\n\n" . implode("\n", $issues);
|
||||
exit(104);
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
; top-most EditorConfig file
|
||||
root = true
|
||||
|
||||
; Unix-style newlines
|
||||
[*]
|
||||
end_of_line = LF
|
||||
|
||||
[*.php]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
@@ -1,4 +0,0 @@
|
||||
coverage
|
||||
coverage.xml
|
||||
composer.lock
|
||||
vendor
|
||||
@@ -1,7 +0,0 @@
|
||||
<?php
|
||||
|
||||
return Symfony\CS\Config\Config::create()
|
||||
->level(Symfony\CS\FixerInterface::PSR2_LEVEL)
|
||||
->fixers(['-yoda_conditions', 'ordered_use', 'short_array_syntax'])
|
||||
->finder(Symfony\CS\Finder\DefaultFinder::create()
|
||||
->in(__DIR__.'/src/'));
|
||||
@@ -1,34 +0,0 @@
|
||||
filter:
|
||||
paths: [src/*]
|
||||
checks:
|
||||
php:
|
||||
code_rating: true
|
||||
remove_extra_empty_lines: true
|
||||
remove_php_closing_tag: true
|
||||
remove_trailing_whitespace: true
|
||||
fix_use_statements:
|
||||
remove_unused: true
|
||||
preserve_multiple: false
|
||||
preserve_blanklines: true
|
||||
order_alphabetically: true
|
||||
fix_php_opening_tag: true
|
||||
fix_linefeed: true
|
||||
fix_line_ending: true
|
||||
fix_identation_4spaces: true
|
||||
fix_doc_comments: true
|
||||
tools:
|
||||
external_code_coverage:
|
||||
timeout: 900
|
||||
runs: 6
|
||||
php_code_coverage: false
|
||||
php_code_sniffer:
|
||||
config:
|
||||
standard: PSR2
|
||||
filter:
|
||||
paths: ['src']
|
||||
php_loc:
|
||||
enabled: true
|
||||
excluded_dirs: [vendor, spec, stubs]
|
||||
php_cpd:
|
||||
enabled: true
|
||||
excluded_dirs: [vendor, spec, stubs]
|
||||
@@ -1,29 +0,0 @@
|
||||
language: php
|
||||
|
||||
php:
|
||||
- 5.5
|
||||
- 5.6
|
||||
- 7.0
|
||||
- 7.1
|
||||
- 7.2
|
||||
|
||||
matrix:
|
||||
allow_failures:
|
||||
- php: 5.5
|
||||
|
||||
env:
|
||||
- COMPOSER_OPTS=""
|
||||
- COMPOSER_OPTS="--prefer-lowest"
|
||||
|
||||
install:
|
||||
- if [[ "${TRAVIS_PHP_VERSION}" == "5.5" ]]; then composer require phpunit/phpunit:^4.8.36 phpspec/phpspec:^2 --prefer-dist --update-with-dependencies; fi
|
||||
- if [[ "${TRAVIS_PHP_VERSION}" == "7.2" ]]; then composer require phpunit/phpunit:^6.0 --prefer-dist --update-with-dependencies; fi
|
||||
- travis_retry composer update --prefer-dist $COMPOSER_OPTS
|
||||
|
||||
script:
|
||||
- vendor/bin/phpspec run
|
||||
- vendor/bin/phpunit
|
||||
|
||||
after_script:
|
||||
- wget https://scrutinizer-ci.com/ocular.phar'
|
||||
- php ocular.phar code-coverage:upload --format=php-clover ./clover/phpunit.xml'
|
||||
-19
@@ -1,19 +0,0 @@
|
||||
Copyright (c) 2015 Frank de Jonge
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
@@ -1,2 +0,0 @@
|
||||
*
|
||||
!.gitignore
|
||||
@@ -1,30 +0,0 @@
|
||||
{
|
||||
"name": "league/flysystem-cached-adapter",
|
||||
"description": "An adapter decorator to enable meta-data caching.",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"League\\Flysystem\\Cached\\": "src/"
|
||||
}
|
||||
},
|
||||
"require": {
|
||||
"league/flysystem": "~1.0",
|
||||
"psr/cache": "^1.0.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpspec/phpspec": "^3.4",
|
||||
"phpunit/phpunit": "^5.7",
|
||||
"mockery/mockery": "~0.9",
|
||||
"predis/predis": "~1.0",
|
||||
"tedivm/stash": "~0.12"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-phpredis": "Pure C implemented extension for PHP"
|
||||
},
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
{
|
||||
"name": "frankdejonge",
|
||||
"email": "info@frenky.net"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
suites:
|
||||
cached_adapter_suite:
|
||||
namespace: League\Flysystem\Cached
|
||||
psr4_prefix: League\Flysystem\Cached
|
||||
formatter.name: pretty
|
||||
@@ -1,3 +0,0 @@
|
||||
<?php
|
||||
|
||||
include __DIR__.'/vendor/autoload.php';
|
||||
@@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<phpunit backupGlobals="false"
|
||||
backupStaticAttributes="false"
|
||||
bootstrap="./phpunit.php"
|
||||
colors="true"
|
||||
convertErrorsToExceptions="true"
|
||||
convertNoticesToExceptions="true"
|
||||
convertWarningsToExceptions="true"
|
||||
processIsolation="false"
|
||||
stopOnFailure="false"
|
||||
syntaxCheck="true"
|
||||
verbose="true"
|
||||
>
|
||||
<testsuites>
|
||||
<testsuite name="flysystem/tests">
|
||||
<directory suffix=".php">./tests/</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
<filter>
|
||||
<whitelist>
|
||||
<directory suffix=".php">./src/</directory>
|
||||
</whitelist>
|
||||
</filter>
|
||||
<logging>
|
||||
<log type="coverage-text" target="php://stdout" showUncoveredFiles="true"/>
|
||||
<log type="coverage-html" target="coverage" showUncoveredFiles="true"/>
|
||||
<log type="coverage-clover" target="clover/phpunit.xml" showUncoveredFiles="true"/>
|
||||
</logging>
|
||||
</phpunit>
|
||||
@@ -1,20 +0,0 @@
|
||||
# Flysystem Cached CachedAdapter
|
||||
|
||||
[](https://twitter.com/frankdejonge)
|
||||
[](https://travis-ci.org/thephpleague/flysystem-cached-adapter)
|
||||
[](https://scrutinizer-ci.com/g/thephpleague/flysystem-cached-adapter/code-structure)
|
||||
[](https://scrutinizer-ci.com/g/thephpleague/flysystem-cached-adapter)
|
||||
[](LICENSE)
|
||||
[](https://packagist.org/packages/league/flysystem-cached-adapter)
|
||||
[](https://packagist.org/packages/league/flysystem-cached-adapter)
|
||||
|
||||
|
||||
The adapter decorator caches metadata and directory listings.
|
||||
|
||||
```bash
|
||||
composer require league/flysystem-cached-adapter
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
[Check out the docs.](https://flysystem.thephpleague.com/docs/advanced/caching/)
|
||||
@@ -1,435 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace spec\League\Flysystem\Cached;
|
||||
|
||||
use League\Flysystem\AdapterInterface;
|
||||
use League\Flysystem\Cached\CacheInterface;
|
||||
use League\Flysystem\Config;
|
||||
use PhpSpec\ObjectBehavior;
|
||||
|
||||
class CachedAdapterSpec extends ObjectBehavior
|
||||
{
|
||||
/**
|
||||
* @var AdapterInterface
|
||||
*/
|
||||
private $adapter;
|
||||
|
||||
/**
|
||||
* @var CacheInterface
|
||||
*/
|
||||
private $cache;
|
||||
|
||||
public function let(AdapterInterface $adapter, CacheInterface $cache)
|
||||
{
|
||||
$this->adapter = $adapter;
|
||||
$this->cache = $cache;
|
||||
$this->cache->load()->shouldBeCalled();
|
||||
$this->beConstructedWith($adapter, $cache);
|
||||
}
|
||||
|
||||
public function it_is_initializable()
|
||||
{
|
||||
$this->shouldHaveType('League\Flysystem\Cached\CachedAdapter');
|
||||
$this->shouldHaveType('League\Flysystem\AdapterInterface');
|
||||
}
|
||||
|
||||
public function it_should_forward_read_streams()
|
||||
{
|
||||
$path = 'path.txt';
|
||||
$response = ['path' => $path];
|
||||
$this->adapter->readStream($path)->willReturn($response);
|
||||
$this->readStream($path)->shouldbe($response);
|
||||
}
|
||||
|
||||
public function it_should_cache_writes()
|
||||
{
|
||||
$type = 'file';
|
||||
$path = 'path.txt';
|
||||
$contents = 'contents';
|
||||
$config = new Config();
|
||||
$response = compact('path', 'contents', 'type');
|
||||
$this->adapter->write($path, $contents, $config)->willReturn($response);
|
||||
$this->cache->updateObject($path, $response, true)->shouldBeCalled();
|
||||
$this->write($path, $contents, $config)->shouldBe($response);
|
||||
}
|
||||
|
||||
public function it_should_cache_streamed_writes()
|
||||
{
|
||||
$type = 'file';
|
||||
$path = 'path.txt';
|
||||
$stream = tmpfile();
|
||||
$config = new Config();
|
||||
$response = compact('path', 'stream', 'type');
|
||||
$this->adapter->writeStream($path, $stream, $config)->willReturn($response);
|
||||
$this->cache->updateObject($path, ['contents' => false] + $response, true)->shouldBeCalled();
|
||||
$this->writeStream($path, $stream, $config)->shouldBe($response);
|
||||
fclose($stream);
|
||||
}
|
||||
|
||||
public function it_should_cache_streamed_updates()
|
||||
{
|
||||
$type = 'file';
|
||||
$path = 'path.txt';
|
||||
$stream = tmpfile();
|
||||
$config = new Config();
|
||||
$response = compact('path', 'stream', 'type');
|
||||
$this->adapter->updateStream($path, $stream, $config)->willReturn($response);
|
||||
$this->cache->updateObject($path, ['contents' => false] + $response, true)->shouldBeCalled();
|
||||
$this->updateStream($path, $stream, $config)->shouldBe($response);
|
||||
fclose($stream);
|
||||
}
|
||||
|
||||
public function it_should_ignore_failed_writes()
|
||||
{
|
||||
$path = 'path.txt';
|
||||
$contents = 'contents';
|
||||
$config = new Config();
|
||||
$this->adapter->write($path, $contents, $config)->willReturn(false);
|
||||
$this->write($path, $contents, $config)->shouldBe(false);
|
||||
}
|
||||
|
||||
public function it_should_ignore_failed_streamed_writes()
|
||||
{
|
||||
$path = 'path.txt';
|
||||
$contents = tmpfile();
|
||||
$config = new Config();
|
||||
$this->adapter->writeStream($path, $contents, $config)->willReturn(false);
|
||||
$this->writeStream($path, $contents, $config)->shouldBe(false);
|
||||
fclose($contents);
|
||||
}
|
||||
|
||||
public function it_should_cache_updated()
|
||||
{
|
||||
$type = 'file';
|
||||
$path = 'path.txt';
|
||||
$contents = 'contents';
|
||||
$config = new Config();
|
||||
$response = compact('path', 'contents', 'type');
|
||||
$this->adapter->update($path, $contents, $config)->willReturn($response);
|
||||
$this->cache->updateObject($path, $response, true)->shouldBeCalled();
|
||||
$this->update($path, $contents, $config)->shouldBe($response);
|
||||
}
|
||||
|
||||
public function it_should_ignore_failed_updates()
|
||||
{
|
||||
$path = 'path.txt';
|
||||
$contents = 'contents';
|
||||
$config = new Config();
|
||||
$this->adapter->update($path, $contents, $config)->willReturn(false);
|
||||
$this->update($path, $contents, $config)->shouldBe(false);
|
||||
}
|
||||
|
||||
public function it_should_ignore_failed_streamed_updates()
|
||||
{
|
||||
$path = 'path.txt';
|
||||
$contents = tmpfile();
|
||||
$config = new Config();
|
||||
$this->adapter->updateStream($path, $contents, $config)->willReturn(false);
|
||||
$this->updateStream($path, $contents, $config)->shouldBe(false);
|
||||
fclose($contents);
|
||||
}
|
||||
|
||||
public function it_should_cache_renames()
|
||||
{
|
||||
$old = 'old.txt';
|
||||
$new = 'new.txt';
|
||||
$this->adapter->rename($old, $new)->willReturn(true);
|
||||
$this->cache->rename($old, $new)->shouldBeCalled();
|
||||
$this->rename($old, $new)->shouldBe(true);
|
||||
}
|
||||
|
||||
public function it_should_ignore_rename_fails()
|
||||
{
|
||||
$old = 'old.txt';
|
||||
$new = 'new.txt';
|
||||
$this->adapter->rename($old, $new)->willReturn(false);
|
||||
$this->rename($old, $new)->shouldBe(false);
|
||||
}
|
||||
|
||||
public function it_should_cache_copies()
|
||||
{
|
||||
$old = 'old.txt';
|
||||
$new = 'new.txt';
|
||||
$this->adapter->copy($old, $new)->willReturn(true);
|
||||
$this->cache->copy($old, $new)->shouldBeCalled();
|
||||
$this->copy($old, $new)->shouldBe(true);
|
||||
}
|
||||
|
||||
public function it_should_ignore_copy_fails()
|
||||
{
|
||||
$old = 'old.txt';
|
||||
$new = 'new.txt';
|
||||
$this->adapter->copy($old, $new)->willReturn(false);
|
||||
$this->copy($old, $new)->shouldBe(false);
|
||||
}
|
||||
|
||||
public function it_should_cache_deletes()
|
||||
{
|
||||
$delete = 'delete.txt';
|
||||
$this->adapter->delete($delete)->willReturn(true);
|
||||
$this->cache->delete($delete)->shouldBeCalled();
|
||||
$this->delete($delete)->shouldBe(true);
|
||||
}
|
||||
|
||||
public function it_should_ignore_delete_fails()
|
||||
{
|
||||
$delete = 'delete.txt';
|
||||
$this->adapter->delete($delete)->willReturn(false);
|
||||
$this->delete($delete)->shouldBe(false);
|
||||
}
|
||||
|
||||
public function it_should_cache_dir_deletes()
|
||||
{
|
||||
$delete = 'delete';
|
||||
$this->adapter->deleteDir($delete)->willReturn(true);
|
||||
$this->cache->deleteDir($delete)->shouldBeCalled();
|
||||
$this->deleteDir($delete)->shouldBe(true);
|
||||
}
|
||||
|
||||
public function it_should_ignore_delete_dir_fails()
|
||||
{
|
||||
$delete = 'delete';
|
||||
$this->adapter->deleteDir($delete)->willReturn(false);
|
||||
$this->deleteDir($delete)->shouldBe(false);
|
||||
}
|
||||
|
||||
public function it_should_cache_dir_creates()
|
||||
{
|
||||
$dirname = 'dirname';
|
||||
$config = new Config();
|
||||
$response = ['path' => $dirname, 'type' => 'dir'];
|
||||
$this->adapter->createDir($dirname, $config)->willReturn($response);
|
||||
$this->cache->updateObject($dirname, $response, true)->shouldBeCalled();
|
||||
$this->createDir($dirname, $config)->shouldBe($response);
|
||||
}
|
||||
|
||||
public function it_should_ignore_create_dir_fails()
|
||||
{
|
||||
$dirname = 'dirname';
|
||||
$config = new Config();
|
||||
$this->adapter->createDir($dirname, $config)->willReturn(false);
|
||||
$this->createDir($dirname, $config)->shouldBe(false);
|
||||
}
|
||||
|
||||
public function it_should_cache_set_visibility()
|
||||
{
|
||||
$path = 'path.txt';
|
||||
$visibility = AdapterInterface::VISIBILITY_PUBLIC;
|
||||
$this->adapter->setVisibility($path, $visibility)->willReturn(true);
|
||||
$this->cache->updateObject($path, ['path' => $path, 'visibility' => $visibility], true)->shouldBeCalled();
|
||||
$this->setVisibility($path, $visibility)->shouldBe(true);
|
||||
}
|
||||
|
||||
public function it_should_ignore_set_visibility_fails()
|
||||
{
|
||||
$dirname = 'delete';
|
||||
$visibility = AdapterInterface::VISIBILITY_PUBLIC;
|
||||
$this->adapter->setVisibility($dirname, $visibility)->willReturn(false);
|
||||
$this->setVisibility($dirname, $visibility)->shouldBe(false);
|
||||
}
|
||||
|
||||
public function it_should_indicate_missing_files()
|
||||
{
|
||||
$this->cache->has($path = 'path.txt')->willReturn(false);
|
||||
$this->has($path)->shouldBe(false);
|
||||
}
|
||||
|
||||
public function it_should_indicate_file_existance()
|
||||
{
|
||||
$this->cache->has($path = 'path.txt')->willReturn(true);
|
||||
$this->has($path)->shouldBe(true);
|
||||
}
|
||||
|
||||
public function it_should_cache_missing_files()
|
||||
{
|
||||
$this->cache->has($path = 'path.txt')->willReturn(null);
|
||||
$this->adapter->has($path)->willReturn(false);
|
||||
$this->cache->storeMiss($path)->shouldBeCalled();
|
||||
$this->has($path)->shouldBe(false);
|
||||
}
|
||||
|
||||
public function it_should_delete_when_metadata_is_missing()
|
||||
{
|
||||
$path = 'path.txt';
|
||||
$this->cache->has($path)->willReturn(true);
|
||||
$this->cache->getSize($path)->willReturn(['path' => $path]);
|
||||
$this->adapter->getSize($path)->willReturn($response = ['path' => $path, 'size' => 1024]);
|
||||
$this->cache->updateObject($path, $response, true)->shouldBeCalled();
|
||||
$this->getSize($path)->shouldBe($response);
|
||||
}
|
||||
|
||||
public function it_should_cache_has()
|
||||
{
|
||||
$this->cache->has($path = 'path.txt')->willReturn(null);
|
||||
$this->adapter->has($path)->willReturn(true);
|
||||
$this->cache->updateObject($path, compact('path'), true)->shouldBeCalled();
|
||||
$this->has($path)->shouldBe(true);
|
||||
}
|
||||
|
||||
public function it_should_list_cached_contents()
|
||||
{
|
||||
$this->cache->isComplete($dirname = 'dirname', $recursive = true)->willReturn(true);
|
||||
$response = [['path' => 'path.txt']];
|
||||
$this->cache->listContents($dirname, $recursive)->willReturn($response);
|
||||
$this->listContents($dirname, $recursive)->shouldBe($response);
|
||||
}
|
||||
|
||||
public function it_should_ignore_failed_list_contents()
|
||||
{
|
||||
$this->cache->isComplete($dirname = 'dirname', $recursive = true)->willReturn(false);
|
||||
$this->adapter->listContents($dirname, $recursive)->willReturn(false);
|
||||
$this->listContents($dirname, $recursive)->shouldBe(false);
|
||||
}
|
||||
|
||||
public function it_should_cache_contents_listings()
|
||||
{
|
||||
$this->cache->isComplete($dirname = 'dirname', $recursive = true)->willReturn(false);
|
||||
$response = [['path' => 'path.txt']];
|
||||
$this->adapter->listContents($dirname, $recursive)->willReturn($response);
|
||||
$this->cache->storeContents($dirname, $response, $recursive)->shouldBeCalled();
|
||||
$this->listContents($dirname, $recursive)->shouldBe($response);
|
||||
}
|
||||
|
||||
public function it_should_use_cached_visibility()
|
||||
{
|
||||
$this->make_it_use_getter_cache('getVisibility', 'path.txt', [
|
||||
'path' => 'path.txt',
|
||||
'visibility' => AdapterInterface::VISIBILITY_PUBLIC,
|
||||
]);
|
||||
}
|
||||
|
||||
public function it_should_cache_get_visibility()
|
||||
{
|
||||
$path = 'path.txt';
|
||||
$response = ['visibility' => AdapterInterface::VISIBILITY_PUBLIC, 'path' => $path];
|
||||
$this->make_it_cache_getter('getVisibility', $path, $response);
|
||||
}
|
||||
|
||||
public function it_should_ignore_failed_get_visibility()
|
||||
{
|
||||
$path = 'path.txt';
|
||||
$this->make_it_ignore_failed_getter('getVisibility', $path);
|
||||
}
|
||||
|
||||
public function it_should_use_cached_timestamp()
|
||||
{
|
||||
$this->make_it_use_getter_cache('getTimestamp', 'path.txt', [
|
||||
'path' => 'path.txt',
|
||||
'timestamp' => 1234,
|
||||
]);
|
||||
}
|
||||
|
||||
public function it_should_cache_timestamps()
|
||||
{
|
||||
$this->make_it_cache_getter('getTimestamp', 'path.txt', [
|
||||
'path' => 'path.txt',
|
||||
'timestamp' => 1234,
|
||||
]);
|
||||
}
|
||||
|
||||
public function it_should_ignore_failed_get_timestamps()
|
||||
{
|
||||
$this->make_it_ignore_failed_getter('getTimestamp', 'path.txt');
|
||||
}
|
||||
|
||||
public function it_should_cache_get_metadata()
|
||||
{
|
||||
$path = 'path.txt';
|
||||
$response = ['visibility' => AdapterInterface::VISIBILITY_PUBLIC, 'path' => $path];
|
||||
$this->make_it_cache_getter('getMetadata', $path, $response);
|
||||
}
|
||||
|
||||
public function it_should_use_cached_metadata()
|
||||
{
|
||||
$this->make_it_use_getter_cache('getMetadata', 'path.txt', [
|
||||
'path' => 'path.txt',
|
||||
'timestamp' => 1234,
|
||||
]);
|
||||
}
|
||||
|
||||
public function it_should_ignore_failed_get_metadata()
|
||||
{
|
||||
$this->make_it_ignore_failed_getter('getMetadata', 'path.txt');
|
||||
}
|
||||
|
||||
public function it_should_cache_get_size()
|
||||
{
|
||||
$path = 'path.txt';
|
||||
$response = ['size' => 1234, 'path' => $path];
|
||||
$this->make_it_cache_getter('getSize', $path, $response);
|
||||
}
|
||||
|
||||
public function it_should_use_cached_size()
|
||||
{
|
||||
$this->make_it_use_getter_cache('getSize', 'path.txt', [
|
||||
'path' => 'path.txt',
|
||||
'size' => 1234,
|
||||
]);
|
||||
}
|
||||
|
||||
public function it_should_ignore_failed_get_size()
|
||||
{
|
||||
$this->make_it_ignore_failed_getter('getSize', 'path.txt');
|
||||
}
|
||||
|
||||
public function it_should_cache_get_mimetype()
|
||||
{
|
||||
$path = 'path.txt';
|
||||
$response = ['mimetype' => 'text/plain', 'path' => $path];
|
||||
$this->make_it_cache_getter('getMimetype', $path, $response);
|
||||
}
|
||||
|
||||
public function it_should_use_cached_mimetype()
|
||||
{
|
||||
$this->make_it_use_getter_cache('getMimetype', 'path.txt', [
|
||||
'path' => 'path.txt',
|
||||
'mimetype' => 'text/plain',
|
||||
]);
|
||||
}
|
||||
|
||||
public function it_should_ignore_failed_get_mimetype()
|
||||
{
|
||||
$this->make_it_ignore_failed_getter('getMimetype', 'path.txt');
|
||||
}
|
||||
|
||||
public function it_should_cache_reads()
|
||||
{
|
||||
$path = 'path.txt';
|
||||
$response = ['path' => $path, 'contents' => 'contents'];
|
||||
$this->make_it_cache_getter('read', $path, $response);
|
||||
}
|
||||
|
||||
public function it_should_use_cached_file_contents()
|
||||
{
|
||||
$this->make_it_use_getter_cache('read', 'path.txt', [
|
||||
'path' => 'path.txt',
|
||||
'contents' => 'contents'
|
||||
]);
|
||||
}
|
||||
|
||||
public function it_should_ignore_failed_reads()
|
||||
{
|
||||
$this->make_it_ignore_failed_getter('read', 'path.txt');
|
||||
}
|
||||
|
||||
protected function make_it_use_getter_cache($method, $path, $response)
|
||||
{
|
||||
$this->cache->{$method}($path)->willReturn($response);
|
||||
$this->{$method}($path)->shouldBe($response);
|
||||
}
|
||||
|
||||
protected function make_it_cache_getter($method, $path, $response)
|
||||
{
|
||||
$this->cache->{$method}($path)->willReturn(false);
|
||||
$this->adapter->{$method}($path)->willReturn($response);
|
||||
$this->cache->updateObject($path, $response, true)->shouldBeCalled();
|
||||
$this->{$method}($path)->shouldBe($response);
|
||||
}
|
||||
|
||||
protected function make_it_ignore_failed_getter($method, $path)
|
||||
{
|
||||
$this->cache->{$method}($path)->willReturn(false);
|
||||
$this->adapter->{$method}($path)->willReturn(false);
|
||||
$this->{$method}($path)->shouldBe(false);
|
||||
}
|
||||
}
|
||||
@@ -1,101 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Cached;
|
||||
|
||||
use League\Flysystem\ReadInterface;
|
||||
|
||||
interface CacheInterface extends ReadInterface
|
||||
{
|
||||
/**
|
||||
* Check whether the directory listing of a given directory is complete.
|
||||
*
|
||||
* @param string $dirname
|
||||
* @param bool $recursive
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isComplete($dirname, $recursive);
|
||||
|
||||
/**
|
||||
* Set a directory to completely listed.
|
||||
*
|
||||
* @param string $dirname
|
||||
* @param bool $recursive
|
||||
*/
|
||||
public function setComplete($dirname, $recursive);
|
||||
|
||||
/**
|
||||
* Store the contents of a directory.
|
||||
*
|
||||
* @param string $directory
|
||||
* @param array $contents
|
||||
* @param bool $recursive
|
||||
*/
|
||||
public function storeContents($directory, array $contents, $recursive);
|
||||
|
||||
/**
|
||||
* Flush the cache.
|
||||
*/
|
||||
public function flush();
|
||||
|
||||
/**
|
||||
* Autosave trigger.
|
||||
*/
|
||||
public function autosave();
|
||||
|
||||
/**
|
||||
* Store the cache.
|
||||
*/
|
||||
public function save();
|
||||
|
||||
/**
|
||||
* Load the cache.
|
||||
*/
|
||||
public function load();
|
||||
|
||||
/**
|
||||
* Rename a file.
|
||||
*
|
||||
* @param string $path
|
||||
* @param string $newpath
|
||||
*/
|
||||
public function rename($path, $newpath);
|
||||
|
||||
/**
|
||||
* Copy a file.
|
||||
*
|
||||
* @param string $path
|
||||
* @param string $newpath
|
||||
*/
|
||||
public function copy($path, $newpath);
|
||||
|
||||
/**
|
||||
* Delete an object from cache.
|
||||
*
|
||||
* @param string $path object path
|
||||
*/
|
||||
public function delete($path);
|
||||
|
||||
/**
|
||||
* Delete all objects from from a directory.
|
||||
*
|
||||
* @param string $dirname directory path
|
||||
*/
|
||||
public function deleteDir($dirname);
|
||||
|
||||
/**
|
||||
* Update the metadata for an object.
|
||||
*
|
||||
* @param string $path object path
|
||||
* @param array $object object metadata
|
||||
* @param bool $autosave whether to trigger the autosave routine
|
||||
*/
|
||||
public function updateObject($path, array $object, $autosave = false);
|
||||
|
||||
/**
|
||||
* Store object hit miss.
|
||||
*
|
||||
* @param string $path
|
||||
*/
|
||||
public function storeMiss($path);
|
||||
}
|
||||
@@ -1,346 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Cached;
|
||||
|
||||
use League\Flysystem\AdapterInterface;
|
||||
use League\Flysystem\Config;
|
||||
|
||||
class CachedAdapter implements AdapterInterface
|
||||
{
|
||||
/**
|
||||
* @var AdapterInterface
|
||||
*/
|
||||
private $adapter;
|
||||
|
||||
/**
|
||||
* @var CacheInterface
|
||||
*/
|
||||
private $cache;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param AdapterInterface $adapter
|
||||
* @param CacheInterface $cache
|
||||
*/
|
||||
public function __construct(AdapterInterface $adapter, CacheInterface $cache)
|
||||
{
|
||||
$this->adapter = $adapter;
|
||||
$this->cache = $cache;
|
||||
$this->cache->load();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the underlying Adapter implementation.
|
||||
*
|
||||
* @return AdapterInterface
|
||||
*/
|
||||
public function getAdapter()
|
||||
{
|
||||
return $this->adapter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the used Cache implementation.
|
||||
*
|
||||
* @return CacheInterface
|
||||
*/
|
||||
public function getCache()
|
||||
{
|
||||
return $this->cache;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function write($path, $contents, Config $config)
|
||||
{
|
||||
$result = $this->adapter->write($path, $contents, $config);
|
||||
|
||||
if ($result !== false) {
|
||||
$result['type'] = 'file';
|
||||
$this->cache->updateObject($path, $result + compact('path', 'contents'), true);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function writeStream($path, $resource, Config $config)
|
||||
{
|
||||
$result = $this->adapter->writeStream($path, $resource, $config);
|
||||
|
||||
if ($result !== false) {
|
||||
$result['type'] = 'file';
|
||||
$contents = false;
|
||||
$this->cache->updateObject($path, $result + compact('path', 'contents'), true);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function update($path, $contents, Config $config)
|
||||
{
|
||||
$result = $this->adapter->update($path, $contents, $config);
|
||||
|
||||
if ($result !== false) {
|
||||
$result['type'] = 'file';
|
||||
$this->cache->updateObject($path, $result + compact('path', 'contents'), true);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function updateStream($path, $resource, Config $config)
|
||||
{
|
||||
$result = $this->adapter->updateStream($path, $resource, $config);
|
||||
|
||||
if ($result !== false) {
|
||||
$result['type'] = 'file';
|
||||
$contents = false;
|
||||
$this->cache->updateObject($path, $result + compact('path', 'contents'), true);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function rename($path, $newPath)
|
||||
{
|
||||
$result = $this->adapter->rename($path, $newPath);
|
||||
|
||||
if ($result !== false) {
|
||||
$this->cache->rename($path, $newPath);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function copy($path, $newpath)
|
||||
{
|
||||
$result = $this->adapter->copy($path, $newpath);
|
||||
|
||||
if ($result !== false) {
|
||||
$this->cache->copy($path, $newpath);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function delete($path)
|
||||
{
|
||||
$result = $this->adapter->delete($path);
|
||||
|
||||
if ($result !== false) {
|
||||
$this->cache->delete($path);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function deleteDir($dirname)
|
||||
{
|
||||
$result = $this->adapter->deleteDir($dirname);
|
||||
|
||||
if ($result !== false) {
|
||||
$this->cache->deleteDir($dirname);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function createDir($dirname, Config $config)
|
||||
{
|
||||
$result = $this->adapter->createDir($dirname, $config);
|
||||
|
||||
if ($result !== false) {
|
||||
$type = 'dir';
|
||||
$path = $dirname;
|
||||
$this->cache->updateObject($dirname, compact('path', 'type'), true);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function setVisibility($path, $visibility)
|
||||
{
|
||||
$result = $this->adapter->setVisibility($path, $visibility);
|
||||
|
||||
if ($result !== false) {
|
||||
$this->cache->updateObject($path, compact('path', 'visibility'), true);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function has($path)
|
||||
{
|
||||
$cacheHas = $this->cache->has($path);
|
||||
|
||||
if ($cacheHas !== null) {
|
||||
return $cacheHas;
|
||||
}
|
||||
|
||||
$adapterResponse = $this->adapter->has($path);
|
||||
|
||||
if (! $adapterResponse) {
|
||||
$this->cache->storeMiss($path);
|
||||
} else {
|
||||
$cacheEntry = is_array($adapterResponse) ? $adapterResponse : compact('path');
|
||||
$this->cache->updateObject($path, $cacheEntry, true);
|
||||
}
|
||||
|
||||
return $adapterResponse;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function read($path)
|
||||
{
|
||||
return $this->callWithFallback('contents', $path, 'read');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function readStream($path)
|
||||
{
|
||||
return $this->adapter->readStream($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the path prefix.
|
||||
*
|
||||
* @return string|null path prefix or null if pathPrefix is empty
|
||||
*/
|
||||
public function getPathPrefix()
|
||||
{
|
||||
return $this->adapter->getPathPrefix();
|
||||
}
|
||||
|
||||
/**
|
||||
* Prefix a path.
|
||||
*
|
||||
* @param string $path
|
||||
*
|
||||
* @return string prefixed path
|
||||
*/
|
||||
public function applyPathPrefix($path)
|
||||
{
|
||||
return $this->adapter->applyPathPrefix($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function listContents($directory = '', $recursive = false)
|
||||
{
|
||||
if ($this->cache->isComplete($directory, $recursive)) {
|
||||
return $this->cache->listContents($directory, $recursive);
|
||||
}
|
||||
|
||||
$result = $this->adapter->listContents($directory, $recursive);
|
||||
|
||||
if ($result !== false) {
|
||||
$this->cache->storeContents($directory, $result, $recursive);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMetadata($path)
|
||||
{
|
||||
return $this->callWithFallback(null, $path, 'getMetadata');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getSize($path)
|
||||
{
|
||||
return $this->callWithFallback('size', $path, 'getSize');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMimetype($path)
|
||||
{
|
||||
return $this->callWithFallback('mimetype', $path, 'getMimetype');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getTimestamp($path)
|
||||
{
|
||||
return $this->callWithFallback('timestamp', $path, 'getTimestamp');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getVisibility($path)
|
||||
{
|
||||
return $this->callWithFallback('visibility', $path, 'getVisibility');
|
||||
}
|
||||
|
||||
/**
|
||||
* Call a method and cache the response.
|
||||
*
|
||||
* @param string $property
|
||||
* @param string $path
|
||||
* @param string $method
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
protected function callWithFallback($property, $path, $method)
|
||||
{
|
||||
$result = $this->cache->{$method}($path);
|
||||
|
||||
if ($result !== false && ($property === null || array_key_exists($property, $result))) {
|
||||
return $result;
|
||||
}
|
||||
|
||||
$result = $this->adapter->{$method}($path);
|
||||
|
||||
if ($result) {
|
||||
$object = $result + compact('path');
|
||||
$this->cache->updateObject($path, $object, true);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
@@ -1,418 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Cached\Storage;
|
||||
|
||||
use League\Flysystem\Cached\CacheInterface;
|
||||
use League\Flysystem\Util;
|
||||
|
||||
abstract class AbstractCache implements CacheInterface
|
||||
{
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $autosave = true;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $cache = [];
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $complete = [];
|
||||
|
||||
/**
|
||||
* Destructor.
|
||||
*/
|
||||
public function __destruct()
|
||||
{
|
||||
if (! $this->autosave) {
|
||||
$this->save();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the autosave setting.
|
||||
*
|
||||
* @return bool autosave
|
||||
*/
|
||||
public function getAutosave()
|
||||
{
|
||||
return $this->autosave;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the autosave setting.
|
||||
*
|
||||
* @param bool $autosave
|
||||
*/
|
||||
public function setAutosave($autosave)
|
||||
{
|
||||
$this->autosave = $autosave;
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the contents listing.
|
||||
*
|
||||
* @param string $directory
|
||||
* @param array $contents
|
||||
* @param bool $recursive
|
||||
*
|
||||
* @return array contents listing
|
||||
*/
|
||||
public function storeContents($directory, array $contents, $recursive = false)
|
||||
{
|
||||
$directories = [$directory];
|
||||
|
||||
foreach ($contents as $object) {
|
||||
$this->updateObject($object['path'], $object);
|
||||
$object = $this->cache[$object['path']];
|
||||
|
||||
if ($recursive && $this->pathIsInDirectory($directory, $object['path'])) {
|
||||
$directories[] = $object['dirname'];
|
||||
}
|
||||
}
|
||||
|
||||
foreach (array_unique($directories) as $directory) {
|
||||
$this->setComplete($directory, $recursive);
|
||||
}
|
||||
|
||||
$this->autosave();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the metadata for an object.
|
||||
*
|
||||
* @param string $path object path
|
||||
* @param array $object object metadata
|
||||
* @param bool $autosave whether to trigger the autosave routine
|
||||
*/
|
||||
public function updateObject($path, array $object, $autosave = false)
|
||||
{
|
||||
if (! $this->has($path)) {
|
||||
$this->cache[$path] = Util::pathinfo($path);
|
||||
}
|
||||
|
||||
$this->cache[$path] = array_merge($this->cache[$path], $object);
|
||||
|
||||
if ($autosave) {
|
||||
$this->autosave();
|
||||
}
|
||||
|
||||
$this->ensureParentDirectories($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store object hit miss.
|
||||
*
|
||||
* @param string $path
|
||||
*/
|
||||
public function storeMiss($path)
|
||||
{
|
||||
$this->cache[$path] = false;
|
||||
$this->autosave();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the contents listing.
|
||||
*
|
||||
* @param string $dirname
|
||||
* @param bool $recursive
|
||||
*
|
||||
* @return array contents listing
|
||||
*/
|
||||
public function listContents($dirname = '', $recursive = false)
|
||||
{
|
||||
$result = [];
|
||||
|
||||
foreach ($this->cache as $object) {
|
||||
if ($object === false) {
|
||||
continue;
|
||||
}
|
||||
if ($object['dirname'] === $dirname) {
|
||||
$result[] = $object;
|
||||
} elseif ($recursive && $this->pathIsInDirectory($dirname, $object['path'])) {
|
||||
$result[] = $object;
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function has($path)
|
||||
{
|
||||
if ($path !== false && array_key_exists($path, $this->cache)) {
|
||||
return $this->cache[$path] !== false;
|
||||
}
|
||||
|
||||
if ($this->isComplete(Util::dirname($path), false)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function read($path)
|
||||
{
|
||||
if (isset($this->cache[$path]['contents']) && $this->cache[$path]['contents'] !== false) {
|
||||
return $this->cache[$path];
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function readStream($path)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function rename($path, $newpath)
|
||||
{
|
||||
if ($this->has($path)) {
|
||||
$object = $this->cache[$path];
|
||||
unset($this->cache[$path]);
|
||||
$object['path'] = $newpath;
|
||||
$object = array_merge($object, Util::pathinfo($newpath));
|
||||
$this->cache[$newpath] = $object;
|
||||
$this->autosave();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function copy($path, $newpath)
|
||||
{
|
||||
if ($this->has($path)) {
|
||||
$object = $this->cache[$path];
|
||||
$object = array_merge($object, Util::pathinfo($newpath));
|
||||
$this->updateObject($newpath, $object, true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function delete($path)
|
||||
{
|
||||
$this->storeMiss($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function deleteDir($dirname)
|
||||
{
|
||||
foreach ($this->cache as $path => $object) {
|
||||
if ($this->pathIsInDirectory($dirname, $path) || $path === $dirname) {
|
||||
unset($this->cache[$path]);
|
||||
}
|
||||
}
|
||||
|
||||
unset($this->complete[$dirname]);
|
||||
|
||||
$this->autosave();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMimetype($path)
|
||||
{
|
||||
if (isset($this->cache[$path]['mimetype'])) {
|
||||
return $this->cache[$path];
|
||||
}
|
||||
|
||||
if (! $result = $this->read($path)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$mimetype = Util::guessMimeType($path, $result['contents']);
|
||||
$this->cache[$path]['mimetype'] = $mimetype;
|
||||
|
||||
return $this->cache[$path];
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getSize($path)
|
||||
{
|
||||
if (isset($this->cache[$path]['size'])) {
|
||||
return $this->cache[$path];
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getTimestamp($path)
|
||||
{
|
||||
if (isset($this->cache[$path]['timestamp'])) {
|
||||
return $this->cache[$path];
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getVisibility($path)
|
||||
{
|
||||
if (isset($this->cache[$path]['visibility'])) {
|
||||
return $this->cache[$path];
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMetadata($path)
|
||||
{
|
||||
if (isset($this->cache[$path]['type'])) {
|
||||
return $this->cache[$path];
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function isComplete($dirname, $recursive)
|
||||
{
|
||||
if (! array_key_exists($dirname, $this->complete)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($recursive && $this->complete[$dirname] !== 'recursive') {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function setComplete($dirname, $recursive)
|
||||
{
|
||||
$this->complete[$dirname] = $recursive ? 'recursive' : true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the contents from a listing.
|
||||
*
|
||||
* @param array $contents object listing
|
||||
*
|
||||
* @return array filtered contents
|
||||
*/
|
||||
public function cleanContents(array $contents)
|
||||
{
|
||||
$cachedProperties = array_flip([
|
||||
'path', 'dirname', 'basename', 'extension', 'filename',
|
||||
'size', 'mimetype', 'visibility', 'timestamp', 'type',
|
||||
'md5',
|
||||
]);
|
||||
|
||||
foreach ($contents as $path => $object) {
|
||||
if (is_array($object)) {
|
||||
$contents[$path] = array_intersect_key($object, $cachedProperties);
|
||||
}
|
||||
}
|
||||
|
||||
return $contents;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function flush()
|
||||
{
|
||||
$this->cache = [];
|
||||
$this->complete = [];
|
||||
$this->autosave();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function autosave()
|
||||
{
|
||||
if ($this->autosave) {
|
||||
$this->save();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve serialized cache data.
|
||||
*
|
||||
* @return string serialized data
|
||||
*/
|
||||
public function getForStorage()
|
||||
{
|
||||
$cleaned = $this->cleanContents($this->cache);
|
||||
|
||||
return json_encode([$cleaned, $this->complete]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load from serialized cache data.
|
||||
*
|
||||
* @param string $json
|
||||
*/
|
||||
public function setFromStorage($json)
|
||||
{
|
||||
list($cache, $complete) = json_decode($json, true);
|
||||
|
||||
if (json_last_error() === JSON_ERROR_NONE && is_array($cache) && is_array($complete)) {
|
||||
$this->cache = $cache;
|
||||
$this->complete = $complete;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensure parent directories of an object.
|
||||
*
|
||||
* @param string $path object path
|
||||
*/
|
||||
public function ensureParentDirectories($path)
|
||||
{
|
||||
$object = $this->cache[$path];
|
||||
|
||||
while ($object['dirname'] !== '' && ! isset($this->cache[$object['dirname']])) {
|
||||
$object = Util::pathinfo($object['dirname']);
|
||||
$object['type'] = 'dir';
|
||||
$this->cache[$object['path']] = $object;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if the path is inside the directory.
|
||||
*
|
||||
* @param string $directory
|
||||
* @param string $path
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
protected function pathIsInDirectory($directory, $path)
|
||||
{
|
||||
return $directory === '' || strpos($path, $directory . '/') === 0;
|
||||
}
|
||||
}
|
||||
@@ -1,115 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Cached\Storage;
|
||||
|
||||
use League\Flysystem\AdapterInterface;
|
||||
use League\Flysystem\Config;
|
||||
|
||||
class Adapter extends AbstractCache
|
||||
{
|
||||
/**
|
||||
* @var AdapterInterface An adapter
|
||||
*/
|
||||
protected $adapter;
|
||||
|
||||
/**
|
||||
* @var string the file to cache to
|
||||
*/
|
||||
protected $file;
|
||||
|
||||
/**
|
||||
* @var int|null seconds until cache expiration
|
||||
*/
|
||||
protected $expire = null;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param AdapterInterface $adapter adapter
|
||||
* @param string $file the file to cache to
|
||||
* @param int|null $expire seconds until cache expiration
|
||||
*/
|
||||
public function __construct(AdapterInterface $adapter, $file, $expire = null)
|
||||
{
|
||||
$this->adapter = $adapter;
|
||||
$this->file = $file;
|
||||
$this->setExpire($expire);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the expiration time in seconds.
|
||||
*
|
||||
* @param int $expire relative expiration time
|
||||
*/
|
||||
protected function setExpire($expire)
|
||||
{
|
||||
if ($expire) {
|
||||
$this->expire = $this->getTime($expire);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get expiration time in seconds.
|
||||
*
|
||||
* @param int $time relative expiration time
|
||||
*
|
||||
* @return int actual expiration time
|
||||
*/
|
||||
protected function getTime($time = 0)
|
||||
{
|
||||
return intval(microtime(true)) + $time;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function setFromStorage($json)
|
||||
{
|
||||
list($cache, $complete, $expire) = json_decode($json, true);
|
||||
|
||||
if (! $expire || $expire > $this->getTime()) {
|
||||
$this->cache = is_array($cache) ? $cache : [];
|
||||
$this->complete = is_array($complete) ? $complete : [];
|
||||
} else {
|
||||
$this->adapter->delete($this->file);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function load()
|
||||
{
|
||||
if ($this->adapter->has($this->file)) {
|
||||
$file = $this->adapter->read($this->file);
|
||||
if ($file && !empty($file['contents'])) {
|
||||
$this->setFromStorage($file['contents']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getForStorage()
|
||||
{
|
||||
$cleaned = $this->cleanContents($this->cache);
|
||||
|
||||
return json_encode([$cleaned, $this->complete, $this->expire]);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function save()
|
||||
{
|
||||
$config = new Config();
|
||||
$contents = $this->getForStorage();
|
||||
|
||||
if ($this->adapter->has($this->file)) {
|
||||
$this->adapter->update($this->file, $contents, $config);
|
||||
} else {
|
||||
$this->adapter->write($this->file, $contents, $config);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Cached\Storage;
|
||||
|
||||
use Memcached as NativeMemcached;
|
||||
|
||||
class Memcached extends AbstractCache
|
||||
{
|
||||
/**
|
||||
* @var string storage key
|
||||
*/
|
||||
protected $key;
|
||||
|
||||
/**
|
||||
* @var int|null seconds until cache expiration
|
||||
*/
|
||||
protected $expire;
|
||||
|
||||
/**
|
||||
* @var \Memcached Memcached instance
|
||||
*/
|
||||
protected $memcached;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param \Memcached $memcached
|
||||
* @param string $key storage key
|
||||
* @param int|null $expire seconds until cache expiration
|
||||
*/
|
||||
public function __construct(NativeMemcached $memcached, $key = 'flysystem', $expire = null)
|
||||
{
|
||||
$this->key = $key;
|
||||
$this->expire = $expire;
|
||||
$this->memcached = $memcached;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function load()
|
||||
{
|
||||
$contents = $this->memcached->get($this->key);
|
||||
|
||||
if ($contents !== false) {
|
||||
$this->setFromStorage($contents);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function save()
|
||||
{
|
||||
$contents = $this->getForStorage();
|
||||
$expiration = $this->expire === null ? 0 : time() + $this->expire;
|
||||
$this->memcached->set($this->key, $contents, $expiration);
|
||||
}
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Cached\Storage;
|
||||
|
||||
class Memory extends AbstractCache
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function save()
|
||||
{
|
||||
// There is nothing to save
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function load()
|
||||
{
|
||||
// There is nothing to load
|
||||
}
|
||||
}
|
||||
@@ -1,171 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Cached\Storage;
|
||||
|
||||
class Noop extends AbstractCache
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected $autosave = false;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function updateObject($path, array $object, $autosave = false)
|
||||
{
|
||||
return $object;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function isComplete($dirname, $recursive)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function setComplete($dirname, $recursive)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function copy($path, $newpath)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function rename($path, $newpath)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function storeContents($directory, array $contents, $recursive = false)
|
||||
{
|
||||
return $contents;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function storeMiss($path)
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function flush()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function autosave()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function save()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function load()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function has($path)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function read($path)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function readStream($path)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function listContents($directory = '', $recursive = false)
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMetadata($path)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getSize($path)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getMimetype($path)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getTimestamp($path)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function getVisibility($path)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Cached\Storage;
|
||||
|
||||
use Redis;
|
||||
|
||||
class PhpRedis extends AbstractCache
|
||||
{
|
||||
/**
|
||||
* @var Redis PhpRedis Client
|
||||
*/
|
||||
protected $client;
|
||||
|
||||
/**
|
||||
* @var string storage key
|
||||
*/
|
||||
protected $key;
|
||||
|
||||
/**
|
||||
* @var int|null seconds until cache expiration
|
||||
*/
|
||||
protected $expire;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param Redis|null $client phpredis client
|
||||
* @param string $key storage key
|
||||
* @param int|null $expire seconds until cache expiration
|
||||
*/
|
||||
public function __construct(Redis $client = null, $key = 'flysystem', $expire = null)
|
||||
{
|
||||
$this->client = $client ?: new Redis();
|
||||
$this->key = $key;
|
||||
$this->expire = $expire;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function load()
|
||||
{
|
||||
$contents = $this->client->get($this->key);
|
||||
|
||||
if ($contents !== false) {
|
||||
$this->setFromStorage($contents);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function save()
|
||||
{
|
||||
$contents = $this->getForStorage();
|
||||
$this->client->set($this->key, $contents);
|
||||
|
||||
if ($this->expire !== null) {
|
||||
$this->client->expire($this->key, $this->expire);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,75 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Cached\Storage;
|
||||
|
||||
use Predis\Client;
|
||||
|
||||
class Predis extends AbstractCache
|
||||
{
|
||||
/**
|
||||
* @var \Predis\Client Predis Client
|
||||
*/
|
||||
protected $client;
|
||||
|
||||
/**
|
||||
* @var string storage key
|
||||
*/
|
||||
protected $key;
|
||||
|
||||
/**
|
||||
* @var int|null seconds until cache expiration
|
||||
*/
|
||||
protected $expire;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param \Predis\Client $client predis client
|
||||
* @param string $key storage key
|
||||
* @param int|null $expire seconds until cache expiration
|
||||
*/
|
||||
public function __construct(Client $client = null, $key = 'flysystem', $expire = null)
|
||||
{
|
||||
$this->client = $client ?: new Client();
|
||||
$this->key = $key;
|
||||
$this->expire = $expire;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function load()
|
||||
{
|
||||
if (($contents = $this->executeCommand('get', [$this->key])) !== null) {
|
||||
$this->setFromStorage($contents);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function save()
|
||||
{
|
||||
$contents = $this->getForStorage();
|
||||
$this->executeCommand('set', [$this->key, $contents]);
|
||||
|
||||
if ($this->expire !== null) {
|
||||
$this->executeCommand('expire', [$this->key, $this->expire]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute a Predis command.
|
||||
*
|
||||
* @param string $name
|
||||
* @param array $arguments
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function executeCommand($name, array $arguments)
|
||||
{
|
||||
$command = $this->client->createCommand($name, $arguments);
|
||||
|
||||
return $this->client->executeCommand($command);
|
||||
}
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Cached\Storage;
|
||||
|
||||
use Psr\Cache\CacheItemPoolInterface;
|
||||
|
||||
class Psr6Cache extends AbstractCache
|
||||
{
|
||||
/**
|
||||
* @var CacheItemPoolInterface
|
||||
*/
|
||||
private $pool;
|
||||
|
||||
/**
|
||||
* @var string storage key
|
||||
*/
|
||||
protected $key;
|
||||
|
||||
/**
|
||||
* @var int|null seconds until cache expiration
|
||||
*/
|
||||
protected $expire;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param CacheItemPoolInterface $pool
|
||||
* @param string $key storage key
|
||||
* @param int|null $expire seconds until cache expiration
|
||||
*/
|
||||
public function __construct(CacheItemPoolInterface $pool, $key = 'flysystem', $expire = null)
|
||||
{
|
||||
$this->pool = $pool;
|
||||
$this->key = $key;
|
||||
$this->expire = $expire;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function save()
|
||||
{
|
||||
$item = $this->pool->getItem($this->key);
|
||||
$item->set($this->getForStorage());
|
||||
$item->expiresAfter($this->expire);
|
||||
$this->pool->save($item);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function load()
|
||||
{
|
||||
$item = $this->pool->getItem($this->key);
|
||||
if ($item->isHit()) {
|
||||
$this->setFromStorage($item->get());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Cached\Storage;
|
||||
|
||||
use Stash\Pool;
|
||||
|
||||
class Stash extends AbstractCache
|
||||
{
|
||||
/**
|
||||
* @var string storage key
|
||||
*/
|
||||
protected $key;
|
||||
|
||||
/**
|
||||
* @var int|null seconds until cache expiration
|
||||
*/
|
||||
protected $expire;
|
||||
|
||||
/**
|
||||
* @var \Stash\Pool Stash pool instance
|
||||
*/
|
||||
protected $pool;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param \Stash\Pool $pool
|
||||
* @param string $key storage key
|
||||
* @param int|null $expire seconds until cache expiration
|
||||
*/
|
||||
public function __construct(Pool $pool, $key = 'flysystem', $expire = null)
|
||||
{
|
||||
$this->key = $key;
|
||||
$this->expire = $expire;
|
||||
$this->pool = $pool;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function load()
|
||||
{
|
||||
$item = $this->pool->getItem($this->key);
|
||||
$contents = $item->get();
|
||||
|
||||
if ($item->isMiss() === false) {
|
||||
$this->setFromStorage($contents);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function save()
|
||||
{
|
||||
$contents = $this->getForStorage();
|
||||
$item = $this->pool->getItem($this->key);
|
||||
$item->set($contents, $this->expire);
|
||||
}
|
||||
}
|
||||
@@ -1,104 +0,0 @@
|
||||
<?php
|
||||
|
||||
use League\Flysystem\Cached\Storage\Adapter;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class AdapterCacheTests extends TestCase
|
||||
{
|
||||
public function testLoadFail()
|
||||
{
|
||||
$adapter = Mockery::mock('League\Flysystem\AdapterInterface');
|
||||
$adapter->shouldReceive('has')->once()->with('file.json')->andReturn(false);
|
||||
$cache = new Adapter($adapter, 'file.json', 10);
|
||||
$cache->load();
|
||||
$this->assertFalse($cache->isComplete('', false));
|
||||
}
|
||||
|
||||
public function testLoadExpired()
|
||||
{
|
||||
$response = ['contents' => json_encode([[], ['' => true], 1234567890]), 'path' => 'file.json'];
|
||||
$adapter = Mockery::mock('League\Flysystem\AdapterInterface');
|
||||
$adapter->shouldReceive('has')->once()->with('file.json')->andReturn(true);
|
||||
$adapter->shouldReceive('read')->once()->with('file.json')->andReturn($response);
|
||||
$adapter->shouldReceive('delete')->once()->with('file.json');
|
||||
$cache = new Adapter($adapter, 'file.json', 10);
|
||||
$cache->load();
|
||||
$this->assertFalse($cache->isComplete('', false));
|
||||
}
|
||||
|
||||
public function testLoadSuccess()
|
||||
{
|
||||
$response = ['contents' => json_encode([[], ['' => true], 9876543210]), 'path' => 'file.json'];
|
||||
$adapter = Mockery::mock('League\Flysystem\AdapterInterface');
|
||||
$adapter->shouldReceive('has')->once()->with('file.json')->andReturn(true);
|
||||
$adapter->shouldReceive('read')->once()->with('file.json')->andReturn($response);
|
||||
$cache = new Adapter($adapter, 'file.json', 10);
|
||||
$cache->load();
|
||||
$this->assertTrue($cache->isComplete('', false));
|
||||
}
|
||||
|
||||
public function testSaveExists()
|
||||
{
|
||||
$response = json_encode([[], [], null]);
|
||||
$adapter = Mockery::mock('League\Flysystem\AdapterInterface');
|
||||
$adapter->shouldReceive('has')->once()->with('file.json')->andReturn(true);
|
||||
$adapter->shouldReceive('update')->once()->with('file.json', $response, Mockery::any());
|
||||
$cache = new Adapter($adapter, 'file.json', null);
|
||||
$cache->save();
|
||||
}
|
||||
|
||||
public function testSaveNew()
|
||||
{
|
||||
$response = json_encode([[], [], null]);
|
||||
$adapter = Mockery::mock('League\Flysystem\AdapterInterface');
|
||||
$adapter->shouldReceive('has')->once()->with('file.json')->andReturn(false);
|
||||
$adapter->shouldReceive('write')->once()->with('file.json', $response, Mockery::any());
|
||||
$cache = new Adapter($adapter, 'file.json', null);
|
||||
$cache->save();
|
||||
}
|
||||
|
||||
public function testStoreContentsRecursive()
|
||||
{
|
||||
$adapter = Mockery::mock('League\Flysystem\AdapterInterface');
|
||||
$adapter->shouldReceive('has')->once()->with('file.json')->andReturn(false);
|
||||
$adapter->shouldReceive('write')->once()->with('file.json', Mockery::any(), Mockery::any());
|
||||
|
||||
$cache = new Adapter($adapter, 'file.json', null);
|
||||
|
||||
$contents = [
|
||||
['path' => 'foo/bar', 'dirname' => 'foo'],
|
||||
['path' => 'afoo/bang', 'dirname' => 'afoo'],
|
||||
];
|
||||
|
||||
$cache->storeContents('foo', $contents, true);
|
||||
|
||||
$this->assertTrue($cache->isComplete('foo', true));
|
||||
$this->assertFalse($cache->isComplete('afoo', true));
|
||||
}
|
||||
|
||||
public function testDeleteDir()
|
||||
{
|
||||
$cache_data = [
|
||||
'foo' => ['path' => 'foo', 'type' => 'dir', 'dirname' => ''],
|
||||
'foo/bar' => ['path' => 'foo/bar', 'type' => 'file', 'dirname' => 'foo'],
|
||||
'foobaz' => ['path' => 'foobaz', 'type' => 'file', 'dirname' => ''],
|
||||
];
|
||||
|
||||
$response = [
|
||||
'contents' => json_encode([$cache_data, [], null]),
|
||||
'path' => 'file.json',
|
||||
];
|
||||
|
||||
$adapter = Mockery::mock('League\Flysystem\AdapterInterface');
|
||||
$adapter->shouldReceive('has')->zeroOrMoreTimes()->with('file.json')->andReturn(true);
|
||||
$adapter->shouldReceive('read')->once()->with('file.json')->andReturn($response);
|
||||
$adapter->shouldReceive('update')->once()->with('file.json', Mockery::any(), Mockery::any())->andReturn(true);
|
||||
|
||||
$cache = new Adapter($adapter, 'file.json', null);
|
||||
$cache->load();
|
||||
|
||||
$cache->deleteDir('foo', true);
|
||||
|
||||
$this->assertSame(1, count($cache->listContents('', true)));
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
<?php
|
||||
|
||||
use League\Flysystem\Cached\CachedAdapter;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class InspectionTests extends TestCase {
|
||||
|
||||
public function testGetAdapter()
|
||||
{
|
||||
$adapter = Mockery::mock('League\Flysystem\AdapterInterface');
|
||||
$cache = Mockery::mock('League\Flysystem\Cached\CacheInterface');
|
||||
$cache->shouldReceive('load')->once();
|
||||
$cached_adapter = new CachedAdapter($adapter, $cache);
|
||||
$this->assertInstanceOf('League\Flysystem\AdapterInterface', $cached_adapter->getAdapter());
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
use League\Flysystem\Cached\Storage\Memcached;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class MemcachedTests extends TestCase
|
||||
{
|
||||
public function testLoadFail()
|
||||
{
|
||||
$client = Mockery::mock('Memcached');
|
||||
$client->shouldReceive('get')->once()->andReturn(false);
|
||||
$cache = new Memcached($client);
|
||||
$cache->load();
|
||||
$this->assertFalse($cache->isComplete('', false));
|
||||
}
|
||||
|
||||
public function testLoadSuccess()
|
||||
{
|
||||
$response = json_encode([[], ['' => true]]);
|
||||
$client = Mockery::mock('Memcached');
|
||||
$client->shouldReceive('get')->once()->andReturn($response);
|
||||
$cache = new Memcached($client);
|
||||
$cache->load();
|
||||
$this->assertTrue($cache->isComplete('', false));
|
||||
}
|
||||
|
||||
public function testSave()
|
||||
{
|
||||
$response = json_encode([[], []]);
|
||||
$client = Mockery::mock('Memcached');
|
||||
$client->shouldReceive('set')->once()->andReturn($response);
|
||||
$cache = new Memcached($client);
|
||||
$cache->save();
|
||||
}
|
||||
}
|
||||
@@ -1,255 +0,0 @@
|
||||
<?php
|
||||
|
||||
use League\Flysystem\Cached\Storage\Memory;
|
||||
use League\Flysystem\Util;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class MemoryCacheTests extends TestCase
|
||||
{
|
||||
public function testAutosave()
|
||||
{
|
||||
$cache = new Memory();
|
||||
$cache->setAutosave(true);
|
||||
$this->assertTrue($cache->getAutosave());
|
||||
$cache->setAutosave(false);
|
||||
$this->assertFalse($cache->getAutosave());
|
||||
}
|
||||
|
||||
public function testCacheMiss()
|
||||
{
|
||||
$cache = new Memory();
|
||||
$cache->storeMiss('path.txt');
|
||||
$this->assertFalse($cache->has('path.txt'));
|
||||
}
|
||||
|
||||
public function testIsComplete()
|
||||
{
|
||||
$cache = new Memory();
|
||||
$this->assertFalse($cache->isComplete('dirname', false));
|
||||
$cache->setComplete('dirname', false);
|
||||
$this->assertFalse($cache->isComplete('dirname', true));
|
||||
$cache->setComplete('dirname', true);
|
||||
$this->assertTrue($cache->isComplete('dirname', true));
|
||||
}
|
||||
|
||||
public function testCleanContents()
|
||||
{
|
||||
$cache = new Memory();
|
||||
$input = [[
|
||||
'path' => 'path.txt',
|
||||
'visibility' => 'public',
|
||||
'invalid' => 'thing',
|
||||
]];
|
||||
|
||||
$expected = [[
|
||||
'path' => 'path.txt',
|
||||
'visibility' => 'public',
|
||||
]];
|
||||
|
||||
$output = $cache->cleanContents($input);
|
||||
$this->assertEquals($expected, $output);
|
||||
}
|
||||
|
||||
public function testGetForStorage()
|
||||
{
|
||||
$cache = new Memory();
|
||||
$input = [[
|
||||
'path' => 'path.txt',
|
||||
'visibility' => 'public',
|
||||
'type' => 'file',
|
||||
]];
|
||||
|
||||
$cache->storeContents('', $input, true);
|
||||
$contents = $cache->listContents('', true);
|
||||
$cached = [];
|
||||
foreach ($contents as $item) {
|
||||
$cached[$item['path']] = $item;
|
||||
}
|
||||
|
||||
$this->assertEquals(json_encode([$cached, ['' => 'recursive']]), $cache->getForStorage());
|
||||
}
|
||||
|
||||
public function testParentCompleteIsUsedDuringHas()
|
||||
{
|
||||
$cache = new Memory();
|
||||
$cache->setComplete('dirname', false);
|
||||
$this->assertFalse($cache->has('dirname/path.txt'));
|
||||
}
|
||||
|
||||
public function testFlush()
|
||||
{
|
||||
$cache = new Memory();
|
||||
$cache->setComplete('dirname', true);
|
||||
$cache->updateObject('path.txt', [
|
||||
'path' => 'path.txt',
|
||||
'visibility' => 'public',
|
||||
]);
|
||||
$cache->flush();
|
||||
$this->assertFalse($cache->isComplete('dirname', true));
|
||||
$this->assertNull($cache->has('path.txt'));
|
||||
}
|
||||
|
||||
public function testSetFromStorage()
|
||||
{
|
||||
$cache = new Memory();
|
||||
$json = [[
|
||||
'path.txt' => ['path' => 'path.txt', 'type' => 'file'],
|
||||
], ['dirname' => 'recursive']];
|
||||
$jsonString = json_encode($json);
|
||||
$cache->setFromStorage($jsonString);
|
||||
$this->assertTrue($cache->has('path.txt'));
|
||||
$this->assertTrue($cache->isComplete('dirname', true));
|
||||
}
|
||||
|
||||
public function testGetMetadataFail()
|
||||
{
|
||||
$cache = new Memory();
|
||||
$this->assertFalse($cache->getMetadata('path.txt'));
|
||||
}
|
||||
|
||||
public function metaGetterProvider()
|
||||
{
|
||||
return [
|
||||
['getTimestamp', 'timestamp', 12344],
|
||||
['getMimetype', 'mimetype', 'text/plain'],
|
||||
['getSize', 'size', 12],
|
||||
['getVisibility', 'visibility', 'private'],
|
||||
['read', 'contents', '__contents__'],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider metaGetterProvider
|
||||
*
|
||||
* @param $method
|
||||
* @param $key
|
||||
* @param $value
|
||||
*/
|
||||
public function testMetaGetters($method, $key, $value)
|
||||
{
|
||||
$cache = new Memory();
|
||||
$this->assertFalse($cache->{$method}('path.txt'));
|
||||
$cache->updateObject('path.txt', $object = [
|
||||
'path' => 'path.txt',
|
||||
'type' => 'file',
|
||||
$key => $value,
|
||||
] + Util::pathinfo('path.txt'), true);
|
||||
$this->assertEquals($object, $cache->{$method}('path.txt'));
|
||||
$this->assertEquals($object, $cache->getMetadata('path.txt'));
|
||||
}
|
||||
|
||||
public function testGetDerivedMimetype()
|
||||
{
|
||||
$cache = new Memory();
|
||||
$cache->updateObject('path.txt', [
|
||||
'contents' => 'something',
|
||||
]);
|
||||
$response = $cache->getMimetype('path.txt');
|
||||
$this->assertEquals('text/plain', $response['mimetype']);
|
||||
}
|
||||
|
||||
public function testCopyFail()
|
||||
{
|
||||
$cache = new Memory();
|
||||
$cache->copy('one', 'two');
|
||||
$this->assertNull($cache->has('two'));
|
||||
$this->assertNull($cache->load());
|
||||
}
|
||||
|
||||
public function testStoreContents()
|
||||
{
|
||||
$cache = new Memory();
|
||||
$cache->storeContents('dirname', [
|
||||
['path' => 'dirname', 'type' => 'dir'],
|
||||
['path' => 'dirname/nested', 'type' => 'dir'],
|
||||
['path' => 'dirname/nested/deep', 'type' => 'dir'],
|
||||
['path' => 'other/nested/deep', 'type' => 'dir'],
|
||||
], true);
|
||||
|
||||
$this->isTrue($cache->isComplete('other/nested', true));
|
||||
}
|
||||
|
||||
public function testDelete()
|
||||
{
|
||||
$cache = new Memory();
|
||||
$cache->updateObject('path.txt', ['type' => 'file']);
|
||||
$this->assertTrue($cache->has('path.txt'));
|
||||
$cache->delete('path.txt');
|
||||
$this->assertFalse($cache->has('path.txt'));
|
||||
}
|
||||
|
||||
public function testDeleteDir()
|
||||
{
|
||||
$cache = new Memory();
|
||||
$cache->storeContents('dirname', [
|
||||
['path' => 'dirname/path.txt', 'type' => 'file'],
|
||||
]);
|
||||
$this->assertTrue($cache->isComplete('dirname', false));
|
||||
$this->assertTrue($cache->has('dirname/path.txt'));
|
||||
$cache->deleteDir('dirname');
|
||||
$this->assertFalse($cache->isComplete('dirname', false));
|
||||
$this->assertNull($cache->has('dirname/path.txt'));
|
||||
}
|
||||
|
||||
public function testReadStream()
|
||||
{
|
||||
$cache = new Memory();
|
||||
$this->assertFalse($cache->readStream('path.txt'));
|
||||
}
|
||||
|
||||
public function testRename()
|
||||
{
|
||||
$cache = new Memory();
|
||||
$cache->updateObject('path.txt', ['type' => 'file']);
|
||||
$cache->rename('path.txt', 'newpath.txt');
|
||||
$this->assertTrue($cache->has('newpath.txt'));
|
||||
}
|
||||
|
||||
public function testCopy()
|
||||
{
|
||||
$cache = new Memory();
|
||||
$cache->updateObject('path.txt', ['type' => 'file']);
|
||||
$cache->copy('path.txt', 'newpath.txt');
|
||||
$this->assertTrue($cache->has('newpath.txt'));
|
||||
}
|
||||
|
||||
public function testComplextListContents()
|
||||
{
|
||||
$cache = new Memory();
|
||||
$cache->storeContents('', [
|
||||
['path' => 'dirname', 'type' => 'dir'],
|
||||
['path' => 'dirname/file.txt', 'type' => 'file'],
|
||||
['path' => 'other', 'type' => 'dir'],
|
||||
['path' => 'other/file.txt', 'type' => 'file'],
|
||||
['path' => 'other/nested/file.txt', 'type' => 'file'],
|
||||
]);
|
||||
|
||||
$this->assertCount(3, $cache->listContents('other', true));
|
||||
}
|
||||
|
||||
public function testComplextListContentsWithDeletedFile()
|
||||
{
|
||||
$cache = new Memory();
|
||||
$cache->storeContents('', [
|
||||
['path' => 'dirname', 'type' => 'dir'],
|
||||
['path' => 'dirname/file.txt', 'type' => 'file'],
|
||||
['path' => 'other', 'type' => 'dir'],
|
||||
['path' => 'other/file.txt', 'type' => 'file'],
|
||||
['path' => 'other/another_file.txt', 'type' => 'file'],
|
||||
]);
|
||||
|
||||
$cache->delete('other/another_file.txt');
|
||||
$this->assertCount(4, $cache->listContents('', true));
|
||||
}
|
||||
|
||||
public function testCacheMissIfContentsIsFalse()
|
||||
{
|
||||
$cache = new Memory();
|
||||
$cache->updateObject('path.txt', [
|
||||
'path' => 'path.txt',
|
||||
'contents' => false,
|
||||
], true);
|
||||
|
||||
$this->assertFalse($cache->read('path.txt'));
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
use League\Flysystem\Cached\Storage\Noop;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class NoopCacheTests extends TestCase
|
||||
{
|
||||
public function testNoop()
|
||||
{
|
||||
$cache = new Noop();
|
||||
$this->assertEquals($cache, $cache->storeMiss('file.txt'));
|
||||
$this->assertNull($cache->setComplete('', false));
|
||||
$this->assertNull($cache->load());
|
||||
$this->assertNull($cache->flush());
|
||||
$this->assertNull($cache->has('path.txt'));
|
||||
$this->assertNull($cache->autosave());
|
||||
$this->assertFalse($cache->isComplete('', false));
|
||||
$this->assertFalse($cache->read('something'));
|
||||
$this->assertFalse($cache->readStream('something'));
|
||||
$this->assertFalse($cache->getMetadata('something'));
|
||||
$this->assertFalse($cache->getMimetype('something'));
|
||||
$this->assertFalse($cache->getSize('something'));
|
||||
$this->assertFalse($cache->getTimestamp('something'));
|
||||
$this->assertFalse($cache->getVisibility('something'));
|
||||
$this->assertEmpty($cache->listContents('', false));
|
||||
$this->assertFalse($cache->rename('', ''));
|
||||
$this->assertFalse($cache->copy('', ''));
|
||||
$this->assertNull($cache->save());
|
||||
$object = ['path' => 'path.ext'];
|
||||
$this->assertEquals($object, $cache->updateObject('path.txt', $object));
|
||||
$this->assertEquals([['path' => 'some/file.txt']], $cache->storeContents('unknwon', [
|
||||
['path' => 'some/file.txt'],
|
||||
], false));
|
||||
}
|
||||
}
|
||||
@@ -1,45 +0,0 @@
|
||||
<?php
|
||||
|
||||
use League\Flysystem\Cached\Storage\PhpRedis;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class PhpRedisTests extends TestCase
|
||||
{
|
||||
public function testLoadFail()
|
||||
{
|
||||
$client = Mockery::mock('Redis');
|
||||
$client->shouldReceive('get')->with('flysystem')->once()->andReturn(false);
|
||||
$cache = new PhpRedis($client);
|
||||
$cache->load();
|
||||
$this->assertFalse($cache->isComplete('', false));
|
||||
}
|
||||
|
||||
public function testLoadSuccess()
|
||||
{
|
||||
$response = json_encode([[], ['' => true]]);
|
||||
$client = Mockery::mock('Redis');
|
||||
$client->shouldReceive('get')->with('flysystem')->once()->andReturn($response);
|
||||
$cache = new PhpRedis($client);
|
||||
$cache->load();
|
||||
$this->assertTrue($cache->isComplete('', false));
|
||||
}
|
||||
|
||||
public function testSave()
|
||||
{
|
||||
$data = json_encode([[], []]);
|
||||
$client = Mockery::mock('Redis');
|
||||
$client->shouldReceive('set')->with('flysystem', $data)->once();
|
||||
$cache = new PhpRedis($client);
|
||||
$cache->save();
|
||||
}
|
||||
|
||||
public function testSaveWithExpire()
|
||||
{
|
||||
$data = json_encode([[], []]);
|
||||
$client = Mockery::mock('Redis');
|
||||
$client->shouldReceive('set')->with('flysystem', $data)->once();
|
||||
$client->shouldReceive('expire')->with('flysystem', 20)->once();
|
||||
$cache = new PhpRedis($client, 'flysystem', 20);
|
||||
$cache->save();
|
||||
}
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
<?php
|
||||
|
||||
use League\Flysystem\Cached\Storage\Predis;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class PredisTests extends TestCase
|
||||
{
|
||||
public function testLoadFail()
|
||||
{
|
||||
$client = Mockery::mock('Predis\Client');
|
||||
$command = Mockery::mock('Predis\Command\CommandInterface');
|
||||
$client->shouldReceive('createCommand')->with('get', ['flysystem'])->once()->andReturn($command);
|
||||
$client->shouldReceive('executeCommand')->with($command)->andReturn(null);
|
||||
$cache = new Predis($client);
|
||||
$cache->load();
|
||||
$this->assertFalse($cache->isComplete('', false));
|
||||
}
|
||||
|
||||
public function testLoadSuccess()
|
||||
{
|
||||
$response = json_encode([[], ['' => true]]);
|
||||
$client = Mockery::mock('Predis\Client');
|
||||
$command = Mockery::mock('Predis\Command\CommandInterface');
|
||||
$client->shouldReceive('createCommand')->with('get', ['flysystem'])->once()->andReturn($command);
|
||||
$client->shouldReceive('executeCommand')->with($command)->andReturn($response);
|
||||
$cache = new Predis($client);
|
||||
$cache->load();
|
||||
$this->assertTrue($cache->isComplete('', false));
|
||||
}
|
||||
|
||||
public function testSave()
|
||||
{
|
||||
$data = json_encode([[], []]);
|
||||
$client = Mockery::mock('Predis\Client');
|
||||
$command = Mockery::mock('Predis\Command\CommandInterface');
|
||||
$client->shouldReceive('createCommand')->with('set', ['flysystem', $data])->once()->andReturn($command);
|
||||
$client->shouldReceive('executeCommand')->with($command)->once();
|
||||
$cache = new Predis($client);
|
||||
$cache->save();
|
||||
}
|
||||
|
||||
public function testSaveWithExpire()
|
||||
{
|
||||
$data = json_encode([[], []]);
|
||||
$client = Mockery::mock('Predis\Client');
|
||||
$command = Mockery::mock('Predis\Command\CommandInterface');
|
||||
$client->shouldReceive('createCommand')->with('set', ['flysystem', $data])->once()->andReturn($command);
|
||||
$client->shouldReceive('executeCommand')->with($command)->once();
|
||||
$expireCommand = Mockery::mock('Predis\Command\CommandInterface');
|
||||
$client->shouldReceive('createCommand')->with('expire', ['flysystem', 20])->once()->andReturn($expireCommand);
|
||||
$client->shouldReceive('executeCommand')->with($expireCommand)->once();
|
||||
$cache = new Predis($client, 'flysystem', 20);
|
||||
$cache->save();
|
||||
}
|
||||
}
|
||||
@@ -1,45 +0,0 @@
|
||||
<?php
|
||||
|
||||
use League\Flysystem\Cached\Storage\Psr6Cache;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class Psr6CacheTests extends TestCase
|
||||
{
|
||||
public function testLoadFail()
|
||||
{
|
||||
$pool = Mockery::mock('Psr\Cache\CacheItemPoolInterface');
|
||||
$item = Mockery::mock('Psr\Cache\CacheItemInterface');
|
||||
$item->shouldReceive('isHit')->once()->andReturn(false);
|
||||
$pool->shouldReceive('getItem')->once()->andReturn($item);
|
||||
$cache = new Psr6Cache($pool);
|
||||
$cache->load();
|
||||
$this->assertFalse($cache->isComplete('', false));
|
||||
}
|
||||
|
||||
public function testLoadSuccess()
|
||||
{
|
||||
$response = json_encode([[], ['' => true]]);
|
||||
$pool = Mockery::mock('Psr\Cache\CacheItemPoolInterface');
|
||||
$item = Mockery::mock('Psr\Cache\CacheItemInterface');
|
||||
$item->shouldReceive('get')->once()->andReturn($response);
|
||||
$item->shouldReceive('isHit')->once()->andReturn(true);
|
||||
$pool->shouldReceive('getItem')->once()->andReturn($item);
|
||||
$cache = new Psr6Cache($pool);
|
||||
$cache->load();
|
||||
$this->assertTrue($cache->isComplete('', false));
|
||||
}
|
||||
|
||||
public function testSave()
|
||||
{
|
||||
$response = json_encode([[], []]);
|
||||
$ttl = 4711;
|
||||
$pool = Mockery::mock('Psr\Cache\CacheItemPoolInterface');
|
||||
$item = Mockery::mock('Psr\Cache\CacheItemInterface');
|
||||
$item->shouldReceive('expiresAfter')->once()->with($ttl);
|
||||
$item->shouldReceive('set')->once()->andReturn($response);
|
||||
$pool->shouldReceive('getItem')->once()->andReturn($item);
|
||||
$pool->shouldReceive('save')->once()->with($item);
|
||||
$cache = new Psr6Cache($pool, 'foo', $ttl);
|
||||
$cache->save();
|
||||
}
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
<?php
|
||||
|
||||
use League\Flysystem\Cached\Storage\Stash;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class StashTests extends TestCase
|
||||
{
|
||||
public function testLoadFail()
|
||||
{
|
||||
$pool = Mockery::mock('Stash\Pool');
|
||||
$item = Mockery::mock('Stash\Item');
|
||||
$item->shouldReceive('get')->once()->andReturn(null);
|
||||
$item->shouldReceive('isMiss')->once()->andReturn(true);
|
||||
$pool->shouldReceive('getItem')->once()->andReturn($item);
|
||||
$cache = new Stash($pool);
|
||||
$cache->load();
|
||||
$this->assertFalse($cache->isComplete('', false));
|
||||
}
|
||||
|
||||
public function testLoadSuccess()
|
||||
{
|
||||
$response = json_encode([[], ['' => true]]);
|
||||
$pool = Mockery::mock('Stash\Pool');
|
||||
$item = Mockery::mock('Stash\Item');
|
||||
$item->shouldReceive('get')->once()->andReturn($response);
|
||||
$item->shouldReceive('isMiss')->once()->andReturn(false);
|
||||
$pool->shouldReceive('getItem')->once()->andReturn($item);
|
||||
$cache = new Stash($pool);
|
||||
$cache->load();
|
||||
$this->assertTrue($cache->isComplete('', false));
|
||||
}
|
||||
|
||||
public function testSave()
|
||||
{
|
||||
$response = json_encode([[], []]);
|
||||
$pool = Mockery::mock('Stash\Pool');
|
||||
$item = Mockery::mock('Stash\Item');
|
||||
$item->shouldReceive('set')->once()->andReturn($response);
|
||||
$pool->shouldReceive('getItem')->once()->andReturn($item);
|
||||
$cache = new Stash($pool);
|
||||
$cache->save();
|
||||
}
|
||||
}
|
||||
-76
@@ -1,76 +0,0 @@
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
In the interest of fostering an open and welcoming environment, we as
|
||||
contributors and maintainers pledge to making participation in our project and
|
||||
our community a harassment-free experience for everyone, regardless of age, body
|
||||
size, disability, ethnicity, sex characteristics, gender identity and expression,
|
||||
level of experience, education, socio-economic status, nationality, personal
|
||||
appearance, race, religion, or sexual identity and orientation.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to creating a positive environment
|
||||
include:
|
||||
|
||||
* Using welcoming and inclusive language
|
||||
* Being respectful of differing viewpoints and experiences
|
||||
* Gracefully accepting constructive criticism
|
||||
* Focusing on what is best for the community
|
||||
* Showing empathy towards other community members
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
* The use of sexualized language or imagery and unwelcome sexual attention or
|
||||
advances
|
||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or electronic
|
||||
address, without explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Our Responsibilities
|
||||
|
||||
Project maintainers are responsible for clarifying the standards of acceptable
|
||||
behavior and are expected to take appropriate and fair corrective action in
|
||||
response to any instances of unacceptable behavior.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or
|
||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||
that are not aligned to this Code of Conduct, or to ban temporarily or
|
||||
permanently any contributor for other behaviors that they deem inappropriate,
|
||||
threatening, offensive, or harmful.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies both within project spaces and in public spaces
|
||||
when an individual is representing the project or its community. Examples of
|
||||
representing a project or community include using an official project e-mail
|
||||
address, posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event. Representation of a project may be
|
||||
further defined and clarified by project maintainers.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported by contacting the project team at info+flysystem@frankdejonge.nl. All
|
||||
complaints will be reviewed and investigated and will result in a response that
|
||||
is deemed necessary and appropriate to the circumstances. The project team is
|
||||
obligated to maintain confidentiality with regard to the reporter of an incident.
|
||||
Further details of specific enforcement policies may be posted separately.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good
|
||||
faith may face temporary or permanent repercussions as determined by other
|
||||
members of the project's leadership.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
||||
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
|
||||
For answers to common questions about this code of conduct, see
|
||||
https://www.contributor-covenant.org/faq
|
||||
Vendored
-19
@@ -1,19 +0,0 @@
|
||||
Copyright (c) 2013-2019 Frank de Jonge
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
Vendored
-16
@@ -1,16 +0,0 @@
|
||||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
| Version | Supported |
|
||||
| ------- | ------------------ |
|
||||
| 1.0.x | :white_check_mark: |
|
||||
| 2.0.x | :x: |
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
When you've encountered a security vulnerability, please disclose it securely.
|
||||
|
||||
The security process is described at:
|
||||
[https://flysystem.thephpleague.com/docs/security/](https://flysystem.thephpleague.com/docs/security/)
|
||||
|
||||
-69
@@ -1,69 +0,0 @@
|
||||
{
|
||||
"name": "league/flysystem",
|
||||
"type": "library",
|
||||
"description": "Filesystem abstraction: Many filesystems, one API.",
|
||||
"keywords": [
|
||||
"filesystem", "filesystems", "files", "storage", "dropbox", "aws",
|
||||
"abstraction", "s3", "ftp", "sftp", "remote", "webdav",
|
||||
"file systems", "cloud", "cloud files", "rackspace", "copy.com"
|
||||
],
|
||||
"funding": [
|
||||
{
|
||||
"type": "other",
|
||||
"url": "https://offset.earth/frankdejonge"
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Frank de Jonge",
|
||||
"email": "info@frenky.net"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": "^7.2.5 || ^8.0",
|
||||
"ext-fileinfo": "*",
|
||||
"league/mime-type-detection": "^1.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpspec/prophecy": "^1.11.1",
|
||||
"phpunit/phpunit": "^8.5.8"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"League\\Flysystem\\": "src/"
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"League\\Flysystem\\Stub\\": "stub/"
|
||||
}
|
||||
},
|
||||
"suggest": {
|
||||
"ext-fileinfo": "Required for MimeType",
|
||||
"league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem",
|
||||
"league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files",
|
||||
"league/flysystem-azure": "Allows you to use Windows Azure Blob storage",
|
||||
"league/flysystem-webdav": "Allows you to use WebDAV storage",
|
||||
"league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2",
|
||||
"league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3",
|
||||
"spatie/flysystem-dropbox": "Allows you to use Dropbox storage",
|
||||
"srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications",
|
||||
"league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching",
|
||||
"ext-ftp": "Allows you to use FTP server storage",
|
||||
"ext-openssl": "Allows you to use FTPS server storage",
|
||||
"league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib",
|
||||
"league/flysystem-ziparchive": "Allows you to use ZipArchive adapter"
|
||||
},
|
||||
"conflict": {
|
||||
"league/flysystem-sftp": "<1.0.6"
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.1-dev"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"phpstan": "php phpstan.php"
|
||||
}
|
||||
}
|
||||
-19
@@ -1,19 +0,0 @@
|
||||
# Deprecations
|
||||
|
||||
This document lists all the planned deprecations.
|
||||
|
||||
## Handlers will be removed in 2.0
|
||||
|
||||
The `Handler` type and associated calls will be removed in version 2.0.
|
||||
|
||||
### Upgrade path
|
||||
|
||||
You should create your own implementation for handling OOP usage,
|
||||
but it's recommended to move away from using an OOP-style wrapper entirely.
|
||||
|
||||
The reason for this is that it's too easy for implementation details (for
|
||||
your application this is Flysystem) to leak into the application. The most
|
||||
important part for Flysystem is that it improves portability and creates a
|
||||
solid boundary between your application core and the infrastructure you use.
|
||||
The OOP-style handling breaks this principle, therefore I want to stop
|
||||
promoting it.
|
||||
@@ -1,72 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Adapter;
|
||||
|
||||
use League\Flysystem\AdapterInterface;
|
||||
|
||||
abstract class AbstractAdapter implements AdapterInterface
|
||||
{
|
||||
/**
|
||||
* @var string|null path prefix
|
||||
*/
|
||||
protected $pathPrefix;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $pathSeparator = '/';
|
||||
|
||||
/**
|
||||
* Set the path prefix.
|
||||
*
|
||||
* @param string $prefix
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setPathPrefix($prefix)
|
||||
{
|
||||
$prefix = (string) $prefix;
|
||||
|
||||
if ($prefix === '') {
|
||||
$this->pathPrefix = null;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$this->pathPrefix = rtrim($prefix, '\\/') . $this->pathSeparator;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the path prefix.
|
||||
*
|
||||
* @return string|null path prefix or null if pathPrefix is empty
|
||||
*/
|
||||
public function getPathPrefix()
|
||||
{
|
||||
return $this->pathPrefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prefix a path.
|
||||
*
|
||||
* @param string $path
|
||||
*
|
||||
* @return string prefixed path
|
||||
*/
|
||||
public function applyPathPrefix($path)
|
||||
{
|
||||
return $this->getPathPrefix() . ltrim($path, '\\/');
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove a path prefix.
|
||||
*
|
||||
* @param string $path
|
||||
*
|
||||
* @return string path without the prefix
|
||||
*/
|
||||
public function removePathPrefix($path)
|
||||
{
|
||||
return substr($path, strlen($this->getPathPrefix()));
|
||||
}
|
||||
}
|
||||
@@ -1,705 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Adapter;
|
||||
|
||||
use DateTime;
|
||||
use League\Flysystem\AdapterInterface;
|
||||
use League\Flysystem\Config;
|
||||
use League\Flysystem\NotSupportedException;
|
||||
use League\Flysystem\SafeStorage;
|
||||
use RuntimeException;
|
||||
|
||||
abstract class AbstractFtpAdapter extends AbstractAdapter
|
||||
{
|
||||
/**
|
||||
* @var mixed
|
||||
*/
|
||||
protected $connection;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $host;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
protected $port = 21;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $ssl = false;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
protected $timeout = 90;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $passive = true;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $separator = '/';
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
*/
|
||||
protected $root;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
protected $permPublic = 0744;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
protected $permPrivate = 0700;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $configurable = [];
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $systemType;
|
||||
|
||||
/**
|
||||
* @var SafeStorage
|
||||
*/
|
||||
protected $safeStorage;
|
||||
|
||||
/**
|
||||
* True to enable timestamps for FTP servers that return unix-style listings.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
protected $enableTimestampsOnUnixListings = false;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param array $config
|
||||
*/
|
||||
public function __construct(array $config)
|
||||
{
|
||||
$this->safeStorage = new SafeStorage();
|
||||
$this->setConfig($config);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the config.
|
||||
*
|
||||
* @param array $config
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setConfig(array $config)
|
||||
{
|
||||
foreach ($this->configurable as $setting) {
|
||||
if ( ! isset($config[$setting])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$method = 'set' . ucfirst($setting);
|
||||
|
||||
if (method_exists($this, $method)) {
|
||||
$this->$method($config[$setting]);
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the host.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getHost()
|
||||
{
|
||||
return $this->host;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the host.
|
||||
*
|
||||
* @param string $host
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setHost($host)
|
||||
{
|
||||
$this->host = $host;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the public permission value.
|
||||
*
|
||||
* @param int $permPublic
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setPermPublic($permPublic)
|
||||
{
|
||||
$this->permPublic = $permPublic;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the private permission value.
|
||||
*
|
||||
* @param int $permPrivate
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setPermPrivate($permPrivate)
|
||||
{
|
||||
$this->permPrivate = $permPrivate;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the ftp port.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getPort()
|
||||
{
|
||||
return $this->port;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the root folder to work from.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getRoot()
|
||||
{
|
||||
return $this->root;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the ftp port.
|
||||
*
|
||||
* @param int|string $port
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setPort($port)
|
||||
{
|
||||
$this->port = (int) $port;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the root folder to work from.
|
||||
*
|
||||
* @param string $root
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setRoot($root)
|
||||
{
|
||||
$this->root = rtrim($root, '\\/') . $this->separator;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the ftp username.
|
||||
*
|
||||
* @return string username
|
||||
*/
|
||||
public function getUsername()
|
||||
{
|
||||
$username = $this->safeStorage->retrieveSafely('username');
|
||||
|
||||
return $username !== null ? $username : 'anonymous';
|
||||
}
|
||||
|
||||
/**
|
||||
* Set ftp username.
|
||||
*
|
||||
* @param string $username
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setUsername($username)
|
||||
{
|
||||
$this->safeStorage->storeSafely('username', $username);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the password.
|
||||
*
|
||||
* @return string password
|
||||
*/
|
||||
public function getPassword()
|
||||
{
|
||||
return $this->safeStorage->retrieveSafely('password');
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the ftp password.
|
||||
*
|
||||
* @param string $password
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setPassword($password)
|
||||
{
|
||||
$this->safeStorage->storeSafely('password', $password);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the amount of seconds before the connection will timeout.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getTimeout()
|
||||
{
|
||||
return $this->timeout;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the amount of seconds before the connection should timeout.
|
||||
*
|
||||
* @param int $timeout
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setTimeout($timeout)
|
||||
{
|
||||
$this->timeout = (int) $timeout;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the FTP system type.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getSystemType()
|
||||
{
|
||||
return $this->systemType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the FTP system type (windows or unix).
|
||||
*
|
||||
* @param string $systemType
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setSystemType($systemType)
|
||||
{
|
||||
$this->systemType = strtolower($systemType);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* True to enable timestamps for FTP servers that return unix-style listings.
|
||||
*
|
||||
* @param bool $bool
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setEnableTimestampsOnUnixListings($bool = false)
|
||||
{
|
||||
$this->enableTimestampsOnUnixListings = $bool;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function listContents($directory = '', $recursive = false)
|
||||
{
|
||||
return $this->listDirectoryContents($directory, $recursive);
|
||||
}
|
||||
|
||||
abstract protected function listDirectoryContents($directory, $recursive = false);
|
||||
|
||||
/**
|
||||
* Normalize a directory listing.
|
||||
*
|
||||
* @param array $listing
|
||||
* @param string $prefix
|
||||
*
|
||||
* @return array directory listing
|
||||
*/
|
||||
protected function normalizeListing(array $listing, $prefix = '')
|
||||
{
|
||||
$base = $prefix;
|
||||
$result = [];
|
||||
$listing = $this->removeDotDirectories($listing);
|
||||
|
||||
while ($item = array_shift($listing)) {
|
||||
if (preg_match('#^.*:$#', $item)) {
|
||||
$base = preg_replace('~^\./*|:$~', '', $item);
|
||||
continue;
|
||||
}
|
||||
|
||||
$result[] = $this->normalizeObject($item, $base);
|
||||
}
|
||||
|
||||
return $this->sortListing($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sort a directory listing.
|
||||
*
|
||||
* @param array $result
|
||||
*
|
||||
* @return array sorted listing
|
||||
*/
|
||||
protected function sortListing(array $result)
|
||||
{
|
||||
$compare = function ($one, $two) {
|
||||
return strnatcmp($one['path'], $two['path']);
|
||||
};
|
||||
|
||||
usort($result, $compare);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Normalize a file entry.
|
||||
*
|
||||
* @param string $item
|
||||
* @param string $base
|
||||
*
|
||||
* @return array normalized file array
|
||||
*
|
||||
* @throws NotSupportedException
|
||||
*/
|
||||
protected function normalizeObject($item, $base)
|
||||
{
|
||||
$systemType = $this->systemType ?: $this->detectSystemType($item);
|
||||
|
||||
if ($systemType === 'unix') {
|
||||
return $this->normalizeUnixObject($item, $base);
|
||||
} elseif ($systemType === 'windows') {
|
||||
return $this->normalizeWindowsObject($item, $base);
|
||||
}
|
||||
|
||||
throw NotSupportedException::forFtpSystemType($systemType);
|
||||
}
|
||||
|
||||
/**
|
||||
* Normalize a Unix file entry.
|
||||
*
|
||||
* Given $item contains:
|
||||
* '-rw-r--r-- 1 ftp ftp 409 Aug 19 09:01 file1.txt'
|
||||
*
|
||||
* This function will return:
|
||||
* [
|
||||
* 'type' => 'file',
|
||||
* 'path' => 'file1.txt',
|
||||
* 'visibility' => 'public',
|
||||
* 'size' => 409,
|
||||
* 'timestamp' => 1566205260
|
||||
* ]
|
||||
*
|
||||
* @param string $item
|
||||
* @param string $base
|
||||
*
|
||||
* @return array normalized file array
|
||||
*/
|
||||
protected function normalizeUnixObject($item, $base)
|
||||
{
|
||||
$item = preg_replace('#\s+#', ' ', trim($item), 7);
|
||||
|
||||
if (count(explode(' ', $item, 9)) !== 9) {
|
||||
throw new RuntimeException("Metadata can't be parsed from item '$item' , not enough parts.");
|
||||
}
|
||||
|
||||
list($permissions, /* $number */, /* $owner */, /* $group */, $size, $month, $day, $timeOrYear, $name) = explode(' ', $item, 9);
|
||||
$type = $this->detectType($permissions);
|
||||
$path = $base === '' ? $name : $base . $this->separator . $name;
|
||||
|
||||
if ($type === 'dir') {
|
||||
$result = compact('type', 'path');
|
||||
if ($this->enableTimestampsOnUnixListings) {
|
||||
$timestamp = $this->normalizeUnixTimestamp($month, $day, $timeOrYear);
|
||||
$result += compact('timestamp');
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
$permissions = $this->normalizePermissions($permissions);
|
||||
$visibility = $permissions & 0044 ? AdapterInterface::VISIBILITY_PUBLIC : AdapterInterface::VISIBILITY_PRIVATE;
|
||||
$size = (int) $size;
|
||||
|
||||
$result = compact('type', 'path', 'visibility', 'size');
|
||||
if ($this->enableTimestampsOnUnixListings) {
|
||||
$timestamp = $this->normalizeUnixTimestamp($month, $day, $timeOrYear);
|
||||
$result += compact('timestamp');
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Only accurate to the minute (current year), or to the day.
|
||||
*
|
||||
* Inadequacies in timestamp accuracy are due to limitations of the FTP 'LIST' command
|
||||
*
|
||||
* Note: The 'MLSD' command is a machine-readable replacement for 'LIST'
|
||||
* but many FTP servers do not support it :(
|
||||
*
|
||||
* @param string $month e.g. 'Aug'
|
||||
* @param string $day e.g. '19'
|
||||
* @param string $timeOrYear e.g. '09:01' OR '2015'
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
protected function normalizeUnixTimestamp($month, $day, $timeOrYear)
|
||||
{
|
||||
if (is_numeric($timeOrYear)) {
|
||||
$year = $timeOrYear;
|
||||
$hour = '00';
|
||||
$minute = '00';
|
||||
$seconds = '00';
|
||||
} else {
|
||||
$year = date('Y');
|
||||
list($hour, $minute) = explode(':', $timeOrYear);
|
||||
$seconds = '00';
|
||||
}
|
||||
$dateTime = DateTime::createFromFormat('Y-M-j-G:i:s', "{$year}-{$month}-{$day}-{$hour}:{$minute}:{$seconds}");
|
||||
|
||||
return $dateTime->getTimestamp();
|
||||
}
|
||||
|
||||
/**
|
||||
* Normalize a Windows/DOS file entry.
|
||||
*
|
||||
* @param string $item
|
||||
* @param string $base
|
||||
*
|
||||
* @return array normalized file array
|
||||
*/
|
||||
protected function normalizeWindowsObject($item, $base)
|
||||
{
|
||||
$item = preg_replace('#\s+#', ' ', trim($item), 3);
|
||||
|
||||
if (count(explode(' ', $item, 4)) !== 4) {
|
||||
throw new RuntimeException("Metadata can't be parsed from item '$item' , not enough parts.");
|
||||
}
|
||||
|
||||
list($date, $time, $size, $name) = explode(' ', $item, 4);
|
||||
$path = $base === '' ? $name : $base . $this->separator . $name;
|
||||
|
||||
// Check for the correct date/time format
|
||||
$format = strlen($date) === 8 ? 'm-d-yH:iA' : 'Y-m-dH:i';
|
||||
$dt = DateTime::createFromFormat($format, $date . $time);
|
||||
$timestamp = $dt ? $dt->getTimestamp() : (int) strtotime("$date $time");
|
||||
|
||||
if ($size === '<DIR>') {
|
||||
$type = 'dir';
|
||||
|
||||
return compact('type', 'path', 'timestamp');
|
||||
}
|
||||
|
||||
$type = 'file';
|
||||
$visibility = AdapterInterface::VISIBILITY_PUBLIC;
|
||||
$size = (int) $size;
|
||||
|
||||
return compact('type', 'path', 'visibility', 'size', 'timestamp');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the system type from a listing item.
|
||||
*
|
||||
* @param string $item
|
||||
*
|
||||
* @return string the system type
|
||||
*/
|
||||
protected function detectSystemType($item)
|
||||
{
|
||||
return preg_match('/^[0-9]{2,4}-[0-9]{2}-[0-9]{2}/', $item) ? 'windows' : 'unix';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the file type from the permissions.
|
||||
*
|
||||
* @param string $permissions
|
||||
*
|
||||
* @return string file type
|
||||
*/
|
||||
protected function detectType($permissions)
|
||||
{
|
||||
return substr($permissions, 0, 1) === 'd' ? 'dir' : 'file';
|
||||
}
|
||||
|
||||
/**
|
||||
* Normalize a permissions string.
|
||||
*
|
||||
* @param string $permissions
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
protected function normalizePermissions($permissions)
|
||||
{
|
||||
if (is_numeric($permissions)) {
|
||||
return ((int) $permissions) & 0777;
|
||||
}
|
||||
|
||||
// remove the type identifier
|
||||
$permissions = substr($permissions, 1);
|
||||
|
||||
// map the string rights to the numeric counterparts
|
||||
$map = ['-' => '0', 'r' => '4', 'w' => '2', 'x' => '1'];
|
||||
$permissions = strtr($permissions, $map);
|
||||
|
||||
// split up the permission groups
|
||||
$parts = str_split($permissions, 3);
|
||||
|
||||
// convert the groups
|
||||
$mapper = function ($part) {
|
||||
return array_sum(str_split($part));
|
||||
};
|
||||
|
||||
// converts to decimal number
|
||||
return octdec(implode('', array_map($mapper, $parts)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter out dot-directories.
|
||||
*
|
||||
* @param array $list
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function removeDotDirectories(array $list)
|
||||
{
|
||||
$filter = function ($line) {
|
||||
return $line !== '' && ! preg_match('#.* \.(\.)?$|^total#', $line);
|
||||
};
|
||||
|
||||
return array_filter($list, $filter);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function has($path)
|
||||
{
|
||||
return $this->getMetadata($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getSize($path)
|
||||
{
|
||||
return $this->getMetadata($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getVisibility($path)
|
||||
{
|
||||
return $this->getMetadata($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensure a directory exists.
|
||||
*
|
||||
* @param string $dirname
|
||||
*/
|
||||
public function ensureDirectory($dirname)
|
||||
{
|
||||
$dirname = (string) $dirname;
|
||||
|
||||
if ($dirname !== '' && ! $this->has($dirname)) {
|
||||
$this->createDir($dirname, new Config());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getConnection()
|
||||
{
|
||||
if ( ! $this->isConnected()) {
|
||||
$this->disconnect();
|
||||
$this->connect();
|
||||
}
|
||||
|
||||
return $this->connection;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the public permission value.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getPermPublic()
|
||||
{
|
||||
return $this->permPublic;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the private permission value.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getPermPrivate()
|
||||
{
|
||||
return $this->permPrivate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Disconnect on destruction.
|
||||
*/
|
||||
public function __destruct()
|
||||
{
|
||||
$this->disconnect();
|
||||
}
|
||||
|
||||
/**
|
||||
* Establish a connection.
|
||||
*/
|
||||
abstract public function connect();
|
||||
|
||||
/**
|
||||
* Close the connection.
|
||||
*/
|
||||
abstract public function disconnect();
|
||||
|
||||
/**
|
||||
* Check if a connection is active.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
abstract public function isConnected();
|
||||
|
||||
protected function escapePath($path)
|
||||
{
|
||||
return str_replace(['*', '[', ']'], ['\\*', '\\[', '\\]'], $path);
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace League\Flysystem\Adapter;
|
||||
|
||||
/**
|
||||
* Adapters that implement this interface let the Filesystem know that files can be overwritten using the write
|
||||
* functions and don't need the update function to be called. This can help improve performance when asserts are disabled.
|
||||
*/
|
||||
interface CanOverwriteFiles
|
||||
{
|
||||
}
|
||||
-579
@@ -1,579 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Adapter;
|
||||
|
||||
use League\Flysystem\Adapter\Polyfill\StreamedCopyTrait;
|
||||
use League\Flysystem\AdapterInterface;
|
||||
use League\Flysystem\Config;
|
||||
use League\Flysystem\ConnectionErrorException;
|
||||
use League\Flysystem\ConnectionRuntimeException;
|
||||
use League\Flysystem\InvalidRootException;
|
||||
use League\Flysystem\Util;
|
||||
use League\Flysystem\Util\MimeType;
|
||||
|
||||
class Ftp extends AbstractFtpAdapter
|
||||
{
|
||||
use StreamedCopyTrait;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
protected $transferMode = FTP_BINARY;
|
||||
|
||||
/**
|
||||
* @var null|bool
|
||||
*/
|
||||
protected $ignorePassiveAddress = null;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $recurseManually = false;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $utf8 = false;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $configurable = [
|
||||
'host',
|
||||
'port',
|
||||
'username',
|
||||
'password',
|
||||
'ssl',
|
||||
'timeout',
|
||||
'root',
|
||||
'permPrivate',
|
||||
'permPublic',
|
||||
'passive',
|
||||
'transferMode',
|
||||
'systemType',
|
||||
'ignorePassiveAddress',
|
||||
'recurseManually',
|
||||
'utf8',
|
||||
'enableTimestampsOnUnixListings',
|
||||
];
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $isPureFtpd;
|
||||
|
||||
/**
|
||||
* Set the transfer mode.
|
||||
*
|
||||
* @param int $mode
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setTransferMode($mode)
|
||||
{
|
||||
$this->transferMode = $mode;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set if Ssl is enabled.
|
||||
*
|
||||
* @param bool $ssl
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setSsl($ssl)
|
||||
{
|
||||
$this->ssl = (bool) $ssl;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set if passive mode should be used.
|
||||
*
|
||||
* @param bool $passive
|
||||
*/
|
||||
public function setPassive($passive = true)
|
||||
{
|
||||
$this->passive = $passive;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $ignorePassiveAddress
|
||||
*/
|
||||
public function setIgnorePassiveAddress($ignorePassiveAddress)
|
||||
{
|
||||
$this->ignorePassiveAddress = $ignorePassiveAddress;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $recurseManually
|
||||
*/
|
||||
public function setRecurseManually($recurseManually)
|
||||
{
|
||||
$this->recurseManually = $recurseManually;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $utf8
|
||||
*/
|
||||
public function setUtf8($utf8)
|
||||
{
|
||||
$this->utf8 = (bool) $utf8;
|
||||
}
|
||||
|
||||
/**
|
||||
* Connect to the FTP server.
|
||||
*/
|
||||
public function connect()
|
||||
{
|
||||
$tries = 3;
|
||||
start_connecting:
|
||||
|
||||
if ($this->ssl) {
|
||||
$this->connection = @ftp_ssl_connect($this->getHost(), $this->getPort(), $this->getTimeout());
|
||||
} else {
|
||||
$this->connection = @ftp_connect($this->getHost(), $this->getPort(), $this->getTimeout());
|
||||
}
|
||||
|
||||
if ( ! $this->connection) {
|
||||
$tries--;
|
||||
|
||||
if ($tries > 0) goto start_connecting;
|
||||
|
||||
throw new ConnectionRuntimeException('Could not connect to host: ' . $this->getHost() . ', port:' . $this->getPort());
|
||||
}
|
||||
|
||||
$this->login();
|
||||
$this->setUtf8Mode();
|
||||
$this->setConnectionPassiveMode();
|
||||
$this->setConnectionRoot();
|
||||
$this->isPureFtpd = $this->isPureFtpdServer();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the connection to UTF-8 mode.
|
||||
*/
|
||||
protected function setUtf8Mode()
|
||||
{
|
||||
if ($this->utf8) {
|
||||
$response = ftp_raw($this->connection, "OPTS UTF8 ON");
|
||||
if (substr($response[0], 0, 3) !== '200') {
|
||||
throw new ConnectionRuntimeException(
|
||||
'Could not set UTF-8 mode for connection: ' . $this->getHost() . '::' . $this->getPort()
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the connections to passive mode.
|
||||
*
|
||||
* @throws ConnectionRuntimeException
|
||||
*/
|
||||
protected function setConnectionPassiveMode()
|
||||
{
|
||||
if (is_bool($this->ignorePassiveAddress) && defined('FTP_USEPASVADDRESS')) {
|
||||
ftp_set_option($this->connection, FTP_USEPASVADDRESS, ! $this->ignorePassiveAddress);
|
||||
}
|
||||
|
||||
if ( ! ftp_pasv($this->connection, $this->passive)) {
|
||||
throw new ConnectionRuntimeException(
|
||||
'Could not set passive mode for connection: ' . $this->getHost() . '::' . $this->getPort()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the connection root.
|
||||
*/
|
||||
protected function setConnectionRoot()
|
||||
{
|
||||
$root = $this->getRoot();
|
||||
$connection = $this->connection;
|
||||
|
||||
if ($root && ! ftp_chdir($connection, $root)) {
|
||||
throw new InvalidRootException('Root is invalid or does not exist: ' . $this->getRoot());
|
||||
}
|
||||
|
||||
// Store absolute path for further reference.
|
||||
// This is needed when creating directories and
|
||||
// initial root was a relative path, else the root
|
||||
// would be relative to the chdir'd path.
|
||||
$this->root = ftp_pwd($connection);
|
||||
}
|
||||
|
||||
/**
|
||||
* Login.
|
||||
*
|
||||
* @throws ConnectionRuntimeException
|
||||
*/
|
||||
protected function login()
|
||||
{
|
||||
set_error_handler(function () {
|
||||
});
|
||||
$isLoggedIn = ftp_login(
|
||||
$this->connection,
|
||||
$this->getUsername(),
|
||||
$this->getPassword()
|
||||
);
|
||||
restore_error_handler();
|
||||
|
||||
if ( ! $isLoggedIn) {
|
||||
$this->disconnect();
|
||||
throw new ConnectionRuntimeException(
|
||||
'Could not login with connection: ' . $this->getHost() . '::' . $this->getPort(
|
||||
) . ', username: ' . $this->getUsername()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Disconnect from the FTP server.
|
||||
*/
|
||||
public function disconnect()
|
||||
{
|
||||
if (is_resource($this->connection)) {
|
||||
@ftp_close($this->connection);
|
||||
}
|
||||
|
||||
$this->connection = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function write($path, $contents, Config $config)
|
||||
{
|
||||
$stream = fopen('php://temp', 'w+b');
|
||||
fwrite($stream, $contents);
|
||||
rewind($stream);
|
||||
$result = $this->writeStream($path, $stream, $config);
|
||||
fclose($stream);
|
||||
|
||||
if ($result === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$result['contents'] = $contents;
|
||||
$result['mimetype'] = $config->get('mimetype') ?: Util::guessMimeType($path, $contents);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function writeStream($path, $resource, Config $config)
|
||||
{
|
||||
$this->ensureDirectory(Util::dirname($path));
|
||||
|
||||
if ( ! ftp_fput($this->getConnection(), $path, $resource, $this->transferMode)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($visibility = $config->get('visibility')) {
|
||||
$this->setVisibility($path, $visibility);
|
||||
}
|
||||
|
||||
$type = 'file';
|
||||
|
||||
return compact('type', 'path', 'visibility');
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function update($path, $contents, Config $config)
|
||||
{
|
||||
return $this->write($path, $contents, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function updateStream($path, $resource, Config $config)
|
||||
{
|
||||
return $this->writeStream($path, $resource, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function rename($path, $newpath)
|
||||
{
|
||||
return ftp_rename($this->getConnection(), $path, $newpath);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function delete($path)
|
||||
{
|
||||
return ftp_delete($this->getConnection(), $path);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function deleteDir($dirname)
|
||||
{
|
||||
$connection = $this->getConnection();
|
||||
$contents = array_reverse($this->listDirectoryContents($dirname, false));
|
||||
|
||||
foreach ($contents as $object) {
|
||||
if ($object['type'] === 'file') {
|
||||
if ( ! ftp_delete($connection, $object['path'])) {
|
||||
return false;
|
||||
}
|
||||
} elseif ( ! $this->deleteDir($object['path'])) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return ftp_rmdir($connection, $dirname);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function createDir($dirname, Config $config)
|
||||
{
|
||||
$connection = $this->getConnection();
|
||||
$directories = explode('/', $dirname);
|
||||
|
||||
foreach ($directories as $directory) {
|
||||
if (false === $this->createActualDirectory($directory, $connection)) {
|
||||
$this->setConnectionRoot();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
ftp_chdir($connection, $directory);
|
||||
}
|
||||
|
||||
$this->setConnectionRoot();
|
||||
|
||||
return ['type' => 'dir', 'path' => $dirname];
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a directory.
|
||||
*
|
||||
* @param string $directory
|
||||
* @param resource $connection
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
protected function createActualDirectory($directory, $connection)
|
||||
{
|
||||
// List the current directory
|
||||
$listing = ftp_nlist($connection, '.') ?: [];
|
||||
|
||||
foreach ($listing as $key => $item) {
|
||||
if (preg_match('~^\./.*~', $item)) {
|
||||
$listing[$key] = substr($item, 2);
|
||||
}
|
||||
}
|
||||
|
||||
if (in_array($directory, $listing, true)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return (boolean) ftp_mkdir($connection, $directory);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getMetadata($path)
|
||||
{
|
||||
if ($path === '') {
|
||||
return ['type' => 'dir', 'path' => ''];
|
||||
}
|
||||
|
||||
if (@ftp_chdir($this->getConnection(), $path) === true) {
|
||||
$this->setConnectionRoot();
|
||||
|
||||
return ['type' => 'dir', 'path' => $path];
|
||||
}
|
||||
|
||||
$listing = $this->ftpRawlist('-A', $path);
|
||||
|
||||
if (empty($listing) || in_array('total 0', $listing, true)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (preg_match('/.* not found/', $listing[0])) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (preg_match('/^total [0-9]*$/', $listing[0])) {
|
||||
array_shift($listing);
|
||||
}
|
||||
|
||||
return $this->normalizeObject($listing[0], '');
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getMimetype($path)
|
||||
{
|
||||
if ( ! $metadata = $this->getMetadata($path)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$metadata['mimetype'] = MimeType::detectByFilename($path);
|
||||
|
||||
return $metadata;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getTimestamp($path)
|
||||
{
|
||||
$timestamp = ftp_mdtm($this->getConnection(), $path);
|
||||
|
||||
return ($timestamp !== -1) ? ['path' => $path, 'timestamp' => $timestamp] : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function read($path)
|
||||
{
|
||||
if ( ! $object = $this->readStream($path)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$object['contents'] = stream_get_contents($object['stream']);
|
||||
fclose($object['stream']);
|
||||
unset($object['stream']);
|
||||
|
||||
return $object;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function readStream($path)
|
||||
{
|
||||
$stream = fopen('php://temp', 'w+b');
|
||||
$result = ftp_fget($this->getConnection(), $stream, $path, $this->transferMode);
|
||||
rewind($stream);
|
||||
|
||||
if ( ! $result) {
|
||||
fclose($stream);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return ['type' => 'file', 'path' => $path, 'stream' => $stream];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function setVisibility($path, $visibility)
|
||||
{
|
||||
$mode = $visibility === AdapterInterface::VISIBILITY_PUBLIC ? $this->getPermPublic() : $this->getPermPrivate();
|
||||
|
||||
if ( ! ftp_chmod($this->getConnection(), $mode, $path)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return compact('path', 'visibility');
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*
|
||||
* @param string $directory
|
||||
*/
|
||||
protected function listDirectoryContents($directory, $recursive = true)
|
||||
{
|
||||
if ($recursive && $this->recurseManually) {
|
||||
return $this->listDirectoryContentsRecursive($directory);
|
||||
}
|
||||
|
||||
$options = $recursive ? '-alnR' : '-aln';
|
||||
$listing = $this->ftpRawlist($options, $directory);
|
||||
|
||||
return $listing ? $this->normalizeListing($listing, $directory) : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*
|
||||
* @param string $directory
|
||||
*/
|
||||
protected function listDirectoryContentsRecursive($directory)
|
||||
{
|
||||
$listing = $this->normalizeListing($this->ftpRawlist('-aln', $directory) ?: [], $directory);
|
||||
$output = [];
|
||||
|
||||
foreach ($listing as $item) {
|
||||
$output[] = $item;
|
||||
if ($item['type'] !== 'dir') {
|
||||
continue;
|
||||
}
|
||||
$output = array_merge($output, $this->listDirectoryContentsRecursive($item['path']));
|
||||
}
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the connection is open.
|
||||
*
|
||||
* @return bool
|
||||
*
|
||||
* @throws ConnectionErrorException
|
||||
*/
|
||||
public function isConnected()
|
||||
{
|
||||
return is_resource($this->connection)
|
||||
&& $this->getRawExecResponseCode('NOOP') === 200;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
protected function isPureFtpdServer()
|
||||
{
|
||||
$response = ftp_raw($this->connection, 'HELP');
|
||||
|
||||
return stripos(implode(' ', $response), 'Pure-FTPd') !== false;
|
||||
}
|
||||
|
||||
/**
|
||||
* The ftp_rawlist function with optional escaping.
|
||||
*
|
||||
* @param string $options
|
||||
* @param string $path
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function ftpRawlist($options, $path)
|
||||
{
|
||||
$connection = $this->getConnection();
|
||||
|
||||
if ($this->isPureFtpd) {
|
||||
$path = str_replace(' ', '\ ', $path);
|
||||
$this->escapePath($path);
|
||||
}
|
||||
|
||||
return ftp_rawlist($connection, $options . ' ' . $path);
|
||||
}
|
||||
|
||||
private function getRawExecResponseCode($command)
|
||||
{
|
||||
$response = @ftp_raw($this->connection, trim($command));
|
||||
|
||||
return (int) preg_replace('/\D/', '', implode(' ', $response));
|
||||
}
|
||||
}
|
||||
-48
@@ -1,48 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Adapter;
|
||||
|
||||
class Ftpd extends Ftp
|
||||
{
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getMetadata($path)
|
||||
{
|
||||
if ($path === '') {
|
||||
return ['type' => 'dir', 'path' => ''];
|
||||
}
|
||||
|
||||
if (@ftp_chdir($this->getConnection(), $path) === true) {
|
||||
$this->setConnectionRoot();
|
||||
|
||||
return ['type' => 'dir', 'path' => $path];
|
||||
}
|
||||
|
||||
$object = ftp_raw($this->getConnection(), 'STAT ' . $this->escapePath($path));
|
||||
|
||||
if ( ! $object || count($object) < 3) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (substr($object[1], 0, 5) === "ftpd:") {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $this->normalizeObject($object[1], '');
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
protected function listDirectoryContents($directory, $recursive = true)
|
||||
{
|
||||
$listing = ftp_rawlist($this->getConnection(), $this->escapePath($directory), $recursive);
|
||||
|
||||
if ($listing === false || ( ! empty($listing) && substr($listing[0], 0, 5) === "ftpd:")) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return $this->normalizeListing($listing, $directory);
|
||||
}
|
||||
}
|
||||
-533
@@ -1,533 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Adapter;
|
||||
|
||||
use DirectoryIterator;
|
||||
use FilesystemIterator;
|
||||
use finfo as Finfo;
|
||||
use League\Flysystem\Config;
|
||||
use League\Flysystem\Exception;
|
||||
use League\Flysystem\NotSupportedException;
|
||||
use League\Flysystem\UnreadableFileException;
|
||||
use League\Flysystem\Util;
|
||||
use LogicException;
|
||||
use RecursiveDirectoryIterator;
|
||||
use RecursiveIteratorIterator;
|
||||
use SplFileInfo;
|
||||
|
||||
class Local extends AbstractAdapter
|
||||
{
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
const SKIP_LINKS = 0001;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
const DISALLOW_LINKS = 0002;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected static $permissions = [
|
||||
'file' => [
|
||||
'public' => 0644,
|
||||
'private' => 0600,
|
||||
],
|
||||
'dir' => [
|
||||
'public' => 0755,
|
||||
'private' => 0700,
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $pathSeparator = DIRECTORY_SEPARATOR;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $permissionMap;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
protected $writeFlags;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
private $linkHandling;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param string $root
|
||||
* @param int $writeFlags
|
||||
* @param int $linkHandling
|
||||
* @param array $permissions
|
||||
*
|
||||
* @throws LogicException
|
||||
*/
|
||||
public function __construct($root, $writeFlags = LOCK_EX, $linkHandling = self::DISALLOW_LINKS, array $permissions = [])
|
||||
{
|
||||
$root = is_link($root) ? realpath($root) : $root;
|
||||
$this->permissionMap = array_replace_recursive(static::$permissions, $permissions);
|
||||
$this->ensureDirectory($root);
|
||||
|
||||
if ( ! is_dir($root) || ! is_readable($root)) {
|
||||
throw new LogicException('The root path ' . $root . ' is not readable.');
|
||||
}
|
||||
|
||||
$this->setPathPrefix($root);
|
||||
$this->writeFlags = $writeFlags;
|
||||
$this->linkHandling = $linkHandling;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensure the root directory exists.
|
||||
*
|
||||
* @param string $root root directory path
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @throws Exception in case the root directory can not be created
|
||||
*/
|
||||
protected function ensureDirectory($root)
|
||||
{
|
||||
if ( ! is_dir($root)) {
|
||||
$umask = umask(0);
|
||||
|
||||
if ( ! @mkdir($root, $this->permissionMap['dir']['public'], true)) {
|
||||
$mkdirError = error_get_last();
|
||||
}
|
||||
|
||||
umask($umask);
|
||||
clearstatcache(false, $root);
|
||||
|
||||
if ( ! is_dir($root)) {
|
||||
$errorMessage = isset($mkdirError['message']) ? $mkdirError['message'] : '';
|
||||
throw new Exception(sprintf('Impossible to create the root directory "%s". %s', $root, $errorMessage));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function has($path)
|
||||
{
|
||||
$location = $this->applyPathPrefix($path);
|
||||
|
||||
return file_exists($location);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function write($path, $contents, Config $config)
|
||||
{
|
||||
$location = $this->applyPathPrefix($path);
|
||||
$this->ensureDirectory(dirname($location));
|
||||
|
||||
if (($size = file_put_contents($location, $contents, $this->writeFlags)) === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$type = 'file';
|
||||
$result = compact('contents', 'type', 'size', 'path');
|
||||
|
||||
if ($visibility = $config->get('visibility')) {
|
||||
$result['visibility'] = $visibility;
|
||||
$this->setVisibility($path, $visibility);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function writeStream($path, $resource, Config $config)
|
||||
{
|
||||
$location = $this->applyPathPrefix($path);
|
||||
$this->ensureDirectory(dirname($location));
|
||||
$stream = fopen($location, 'w+b');
|
||||
|
||||
if ( ! $stream || stream_copy_to_stream($resource, $stream) === false || ! fclose($stream)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$type = 'file';
|
||||
$result = compact('type', 'path');
|
||||
|
||||
if ($visibility = $config->get('visibility')) {
|
||||
$this->setVisibility($path, $visibility);
|
||||
$result['visibility'] = $visibility;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function readStream($path)
|
||||
{
|
||||
$location = $this->applyPathPrefix($path);
|
||||
$stream = fopen($location, 'rb');
|
||||
|
||||
return ['type' => 'file', 'path' => $path, 'stream' => $stream];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function updateStream($path, $resource, Config $config)
|
||||
{
|
||||
return $this->writeStream($path, $resource, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function update($path, $contents, Config $config)
|
||||
{
|
||||
$location = $this->applyPathPrefix($path);
|
||||
$size = file_put_contents($location, $contents, $this->writeFlags);
|
||||
|
||||
if ($size === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$type = 'file';
|
||||
|
||||
$result = compact('type', 'path', 'size', 'contents');
|
||||
|
||||
if ($visibility = $config->get('visibility')) {
|
||||
$this->setVisibility($path, $visibility);
|
||||
$result['visibility'] = $visibility;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function read($path)
|
||||
{
|
||||
$location = $this->applyPathPrefix($path);
|
||||
$contents = @file_get_contents($location);
|
||||
|
||||
if ($contents === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return ['type' => 'file', 'path' => $path, 'contents' => $contents];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function rename($path, $newpath)
|
||||
{
|
||||
$location = $this->applyPathPrefix($path);
|
||||
$destination = $this->applyPathPrefix($newpath);
|
||||
$parentDirectory = $this->applyPathPrefix(Util::dirname($newpath));
|
||||
$this->ensureDirectory($parentDirectory);
|
||||
|
||||
return rename($location, $destination);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function copy($path, $newpath)
|
||||
{
|
||||
$location = $this->applyPathPrefix($path);
|
||||
$destination = $this->applyPathPrefix($newpath);
|
||||
$this->ensureDirectory(dirname($destination));
|
||||
|
||||
return copy($location, $destination);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function delete($path)
|
||||
{
|
||||
$location = $this->applyPathPrefix($path);
|
||||
|
||||
return @unlink($location);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function listContents($directory = '', $recursive = false)
|
||||
{
|
||||
$result = [];
|
||||
$location = $this->applyPathPrefix($directory);
|
||||
|
||||
if ( ! is_dir($location)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$iterator = $recursive ? $this->getRecursiveDirectoryIterator($location) : $this->getDirectoryIterator($location);
|
||||
|
||||
foreach ($iterator as $file) {
|
||||
$path = $this->getFilePath($file);
|
||||
|
||||
if (preg_match('#(^|/|\\\\)\.{1,2}$#', $path)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$result[] = $this->normalizeFileInfo($file);
|
||||
}
|
||||
|
||||
unset($iterator);
|
||||
|
||||
return array_filter($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getMetadata($path)
|
||||
{
|
||||
$location = $this->applyPathPrefix($path);
|
||||
clearstatcache(false, $location);
|
||||
$info = new SplFileInfo($location);
|
||||
|
||||
return $this->normalizeFileInfo($info);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getSize($path)
|
||||
{
|
||||
return $this->getMetadata($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getMimetype($path)
|
||||
{
|
||||
$location = $this->applyPathPrefix($path);
|
||||
$finfo = new Finfo(FILEINFO_MIME_TYPE);
|
||||
$mimetype = $finfo->file($location);
|
||||
|
||||
if (in_array($mimetype, ['application/octet-stream', 'inode/x-empty', 'application/x-empty'])) {
|
||||
$mimetype = Util\MimeType::detectByFilename($location);
|
||||
}
|
||||
|
||||
return ['path' => $path, 'type' => 'file', 'mimetype' => $mimetype];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getTimestamp($path)
|
||||
{
|
||||
return $this->getMetadata($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getVisibility($path)
|
||||
{
|
||||
$location = $this->applyPathPrefix($path);
|
||||
clearstatcache(false, $location);
|
||||
$permissions = octdec(substr(sprintf('%o', fileperms($location)), -4));
|
||||
$type = is_dir($location) ? 'dir' : 'file';
|
||||
|
||||
foreach ($this->permissionMap[$type] as $visibility => $visibilityPermissions) {
|
||||
if ($visibilityPermissions == $permissions) {
|
||||
return compact('path', 'visibility');
|
||||
}
|
||||
}
|
||||
|
||||
$visibility = substr(sprintf('%o', fileperms($location)), -4);
|
||||
|
||||
return compact('path', 'visibility');
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function setVisibility($path, $visibility)
|
||||
{
|
||||
$location = $this->applyPathPrefix($path);
|
||||
$type = is_dir($location) ? 'dir' : 'file';
|
||||
$success = chmod($location, $this->permissionMap[$type][$visibility]);
|
||||
|
||||
if ($success === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return compact('path', 'visibility');
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function createDir($dirname, Config $config)
|
||||
{
|
||||
$location = $this->applyPathPrefix($dirname);
|
||||
$umask = umask(0);
|
||||
$visibility = $config->get('visibility', 'public');
|
||||
$return = ['path' => $dirname, 'type' => 'dir'];
|
||||
|
||||
if ( ! is_dir($location)) {
|
||||
if (false === @mkdir($location, $this->permissionMap['dir'][$visibility], true)
|
||||
|| false === is_dir($location)) {
|
||||
$return = false;
|
||||
}
|
||||
}
|
||||
|
||||
umask($umask);
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function deleteDir($dirname)
|
||||
{
|
||||
$location = $this->applyPathPrefix($dirname);
|
||||
|
||||
if ( ! is_dir($location)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$contents = $this->getRecursiveDirectoryIterator($location, RecursiveIteratorIterator::CHILD_FIRST);
|
||||
|
||||
/** @var SplFileInfo $file */
|
||||
foreach ($contents as $file) {
|
||||
$this->guardAgainstUnreadableFileInfo($file);
|
||||
$this->deleteFileInfoObject($file);
|
||||
}
|
||||
|
||||
unset($contents);
|
||||
|
||||
return rmdir($location);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param SplFileInfo $file
|
||||
*/
|
||||
protected function deleteFileInfoObject(SplFileInfo $file)
|
||||
{
|
||||
switch ($file->getType()) {
|
||||
case 'dir':
|
||||
rmdir($file->getRealPath());
|
||||
break;
|
||||
case 'link':
|
||||
unlink($file->getPathname());
|
||||
break;
|
||||
default:
|
||||
unlink($file->getRealPath());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Normalize the file info.
|
||||
*
|
||||
* @param SplFileInfo $file
|
||||
*
|
||||
* @return array|void
|
||||
*
|
||||
* @throws NotSupportedException
|
||||
*/
|
||||
protected function normalizeFileInfo(SplFileInfo $file)
|
||||
{
|
||||
if ( ! $file->isLink()) {
|
||||
return $this->mapFileInfo($file);
|
||||
}
|
||||
|
||||
if ($this->linkHandling & self::DISALLOW_LINKS) {
|
||||
throw NotSupportedException::forLink($file);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the normalized path from a SplFileInfo object.
|
||||
*
|
||||
* @param SplFileInfo $file
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function getFilePath(SplFileInfo $file)
|
||||
{
|
||||
$location = $file->getPathname();
|
||||
$path = $this->removePathPrefix($location);
|
||||
|
||||
return trim(str_replace('\\', '/', $path), '/');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $path
|
||||
* @param int $mode
|
||||
*
|
||||
* @return RecursiveIteratorIterator
|
||||
*/
|
||||
protected function getRecursiveDirectoryIterator($path, $mode = RecursiveIteratorIterator::SELF_FIRST)
|
||||
{
|
||||
return new RecursiveIteratorIterator(
|
||||
new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS),
|
||||
$mode
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $path
|
||||
*
|
||||
* @return DirectoryIterator
|
||||
*/
|
||||
protected function getDirectoryIterator($path)
|
||||
{
|
||||
$iterator = new DirectoryIterator($path);
|
||||
|
||||
return $iterator;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param SplFileInfo $file
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function mapFileInfo(SplFileInfo $file)
|
||||
{
|
||||
$normalized = [
|
||||
'type' => $file->getType(),
|
||||
'path' => $this->getFilePath($file),
|
||||
];
|
||||
|
||||
$normalized['timestamp'] = $file->getMTime();
|
||||
|
||||
if ($normalized['type'] === 'file') {
|
||||
$normalized['size'] = $file->getSize();
|
||||
}
|
||||
|
||||
return $normalized;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param SplFileInfo $file
|
||||
*
|
||||
* @throws UnreadableFileException
|
||||
*/
|
||||
protected function guardAgainstUnreadableFileInfo(SplFileInfo $file)
|
||||
{
|
||||
if ( ! $file->isReadable()) {
|
||||
throw UnreadableFileException::forFileInfo($file);
|
||||
}
|
||||
}
|
||||
}
|
||||
-144
@@ -1,144 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Adapter;
|
||||
|
||||
use League\Flysystem\Adapter\Polyfill\StreamedCopyTrait;
|
||||
use League\Flysystem\Adapter\Polyfill\StreamedTrait;
|
||||
use League\Flysystem\Config;
|
||||
|
||||
class NullAdapter extends AbstractAdapter
|
||||
{
|
||||
use StreamedTrait;
|
||||
use StreamedCopyTrait;
|
||||
|
||||
/**
|
||||
* Check whether a file is present.
|
||||
*
|
||||
* @param string $path
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function has($path)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function write($path, $contents, Config $config)
|
||||
{
|
||||
$type = 'file';
|
||||
$result = compact('contents', 'type', 'path');
|
||||
|
||||
if ($visibility = $config->get('visibility')) {
|
||||
$result['visibility'] = $visibility;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function update($path, $contents, Config $config)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function read($path)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function rename($path, $newpath)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function delete($path)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function listContents($directory = '', $recursive = false)
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getMetadata($path)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getSize($path)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getMimetype($path)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getTimestamp($path)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getVisibility($path)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function setVisibility($path, $visibility)
|
||||
{
|
||||
return compact('visibility');
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function createDir($dirname, Config $config)
|
||||
{
|
||||
return ['path' => $dirname, 'type' => 'dir'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function deleteDir($dirname)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
-33
@@ -1,33 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Adapter\Polyfill;
|
||||
|
||||
use LogicException;
|
||||
|
||||
trait NotSupportingVisibilityTrait
|
||||
{
|
||||
/**
|
||||
* Get the visibility of a file.
|
||||
*
|
||||
* @param string $path
|
||||
*
|
||||
* @throws LogicException
|
||||
*/
|
||||
public function getVisibility($path)
|
||||
{
|
||||
throw new LogicException(get_class($this) . ' does not support visibility. Path: ' . $path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the visibility for a file.
|
||||
*
|
||||
* @param string $path
|
||||
* @param string $visibility
|
||||
*
|
||||
* @throws LogicException
|
||||
*/
|
||||
public function setVisibility($path, $visibility)
|
||||
{
|
||||
throw new LogicException(get_class($this) . ' does not support visibility. Path: ' . $path . ', visibility: ' . $visibility);
|
||||
}
|
||||
}
|
||||
@@ -1,51 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Adapter\Polyfill;
|
||||
|
||||
use League\Flysystem\Config;
|
||||
|
||||
trait StreamedCopyTrait
|
||||
{
|
||||
/**
|
||||
* Copy a file.
|
||||
*
|
||||
* @param string $path
|
||||
* @param string $newpath
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function copy($path, $newpath)
|
||||
{
|
||||
$response = $this->readStream($path);
|
||||
|
||||
if ($response === false || ! is_resource($response['stream'])) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$result = $this->writeStream($newpath, $response['stream'], new Config());
|
||||
|
||||
if ($result !== false && is_resource($response['stream'])) {
|
||||
fclose($response['stream']);
|
||||
}
|
||||
|
||||
return $result !== false;
|
||||
}
|
||||
|
||||
// Required abstract method
|
||||
|
||||
/**
|
||||
* @param string $path
|
||||
*
|
||||
* @return resource
|
||||
*/
|
||||
abstract public function readStream($path);
|
||||
|
||||
/**
|
||||
* @param string $path
|
||||
* @param resource $resource
|
||||
* @param Config $config
|
||||
*
|
||||
* @return resource
|
||||
*/
|
||||
abstract public function writeStream($path, $resource, Config $config);
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Adapter\Polyfill;
|
||||
|
||||
/**
|
||||
* A helper for adapters that only handle strings to provide read streams.
|
||||
*/
|
||||
trait StreamedReadingTrait
|
||||
{
|
||||
/**
|
||||
* Reads a file as a stream.
|
||||
*
|
||||
* @param string $path
|
||||
*
|
||||
* @return array|false
|
||||
*
|
||||
* @see League\Flysystem\ReadInterface::readStream()
|
||||
*/
|
||||
public function readStream($path)
|
||||
{
|
||||
if ( ! $data = $this->read($path)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$stream = fopen('php://temp', 'w+b');
|
||||
fwrite($stream, $data['contents']);
|
||||
rewind($stream);
|
||||
$data['stream'] = $stream;
|
||||
unset($data['contents']);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads a file.
|
||||
*
|
||||
* @param string $path
|
||||
*
|
||||
* @return array|false
|
||||
*
|
||||
* @see League\Flysystem\ReadInterface::read()
|
||||
*/
|
||||
abstract public function read($path);
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Adapter\Polyfill;
|
||||
|
||||
trait StreamedTrait
|
||||
{
|
||||
use StreamedReadingTrait;
|
||||
use StreamedWritingTrait;
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Adapter\Polyfill;
|
||||
|
||||
use League\Flysystem\Config;
|
||||
use League\Flysystem\Util;
|
||||
|
||||
trait StreamedWritingTrait
|
||||
{
|
||||
/**
|
||||
* Stream fallback delegator.
|
||||
*
|
||||
* @param string $path
|
||||
* @param resource $resource
|
||||
* @param Config $config
|
||||
* @param string $fallback
|
||||
*
|
||||
* @return mixed fallback result
|
||||
*/
|
||||
protected function stream($path, $resource, Config $config, $fallback)
|
||||
{
|
||||
Util::rewindStream($resource);
|
||||
$contents = stream_get_contents($resource);
|
||||
$fallbackCall = [$this, $fallback];
|
||||
|
||||
return call_user_func($fallbackCall, $path, $contents, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write using a stream.
|
||||
*
|
||||
* @param string $path
|
||||
* @param resource $resource
|
||||
* @param Config $config
|
||||
*
|
||||
* @return mixed false or file metadata
|
||||
*/
|
||||
public function writeStream($path, $resource, Config $config)
|
||||
{
|
||||
return $this->stream($path, $resource, $config, 'write');
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a file using a stream.
|
||||
*
|
||||
* @param string $path
|
||||
* @param resource $resource
|
||||
* @param Config $config Config object or visibility setting
|
||||
*
|
||||
* @return mixed false of file metadata
|
||||
*/
|
||||
public function updateStream($path, $resource, Config $config)
|
||||
{
|
||||
return $this->stream($path, $resource, $config, 'update');
|
||||
}
|
||||
|
||||
// Required abstract methods
|
||||
abstract public function write($pash, $contents, Config $config);
|
||||
abstract public function update($pash, $contents, Config $config);
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Adapter;
|
||||
|
||||
class SynologyFtp extends Ftpd
|
||||
{
|
||||
// This class merely exists because of BC.
|
||||
}
|
||||
-118
@@ -1,118 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem;
|
||||
|
||||
interface AdapterInterface extends ReadInterface
|
||||
{
|
||||
/**
|
||||
* @const VISIBILITY_PUBLIC public visibility
|
||||
*/
|
||||
const VISIBILITY_PUBLIC = 'public';
|
||||
|
||||
/**
|
||||
* @const VISIBILITY_PRIVATE private visibility
|
||||
*/
|
||||
const VISIBILITY_PRIVATE = 'private';
|
||||
|
||||
/**
|
||||
* Write a new file.
|
||||
*
|
||||
* @param string $path
|
||||
* @param string $contents
|
||||
* @param Config $config Config object
|
||||
*
|
||||
* @return array|false false on failure file meta data on success
|
||||
*/
|
||||
public function write($path, $contents, Config $config);
|
||||
|
||||
/**
|
||||
* Write a new file using a stream.
|
||||
*
|
||||
* @param string $path
|
||||
* @param resource $resource
|
||||
* @param Config $config Config object
|
||||
*
|
||||
* @return array|false false on failure file meta data on success
|
||||
*/
|
||||
public function writeStream($path, $resource, Config $config);
|
||||
|
||||
/**
|
||||
* Update a file.
|
||||
*
|
||||
* @param string $path
|
||||
* @param string $contents
|
||||
* @param Config $config Config object
|
||||
*
|
||||
* @return array|false false on failure file meta data on success
|
||||
*/
|
||||
public function update($path, $contents, Config $config);
|
||||
|
||||
/**
|
||||
* Update a file using a stream.
|
||||
*
|
||||
* @param string $path
|
||||
* @param resource $resource
|
||||
* @param Config $config Config object
|
||||
*
|
||||
* @return array|false false on failure file meta data on success
|
||||
*/
|
||||
public function updateStream($path, $resource, Config $config);
|
||||
|
||||
/**
|
||||
* Rename a file.
|
||||
*
|
||||
* @param string $path
|
||||
* @param string $newpath
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function rename($path, $newpath);
|
||||
|
||||
/**
|
||||
* Copy a file.
|
||||
*
|
||||
* @param string $path
|
||||
* @param string $newpath
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function copy($path, $newpath);
|
||||
|
||||
/**
|
||||
* Delete a file.
|
||||
*
|
||||
* @param string $path
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function delete($path);
|
||||
|
||||
/**
|
||||
* Delete a directory.
|
||||
*
|
||||
* @param string $dirname
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function deleteDir($dirname);
|
||||
|
||||
/**
|
||||
* Create a directory.
|
||||
*
|
||||
* @param string $dirname directory name
|
||||
* @param Config $config
|
||||
*
|
||||
* @return array|false
|
||||
*/
|
||||
public function createDir($dirname, Config $config);
|
||||
|
||||
/**
|
||||
* Set the visibility for a file.
|
||||
*
|
||||
* @param string $path
|
||||
* @param string $visibility
|
||||
*
|
||||
* @return array|false file meta data
|
||||
*/
|
||||
public function setVisibility($path, $visibility);
|
||||
}
|
||||
-107
@@ -1,107 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem;
|
||||
|
||||
class Config
|
||||
{
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $settings = [];
|
||||
|
||||
/**
|
||||
* @var Config|null
|
||||
*/
|
||||
protected $fallback;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param array $settings
|
||||
*/
|
||||
public function __construct(array $settings = [])
|
||||
{
|
||||
$this->settings = $settings;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a setting.
|
||||
*
|
||||
* @param string $key
|
||||
* @param mixed $default
|
||||
*
|
||||
* @return mixed config setting or default when not found
|
||||
*/
|
||||
public function get($key, $default = null)
|
||||
{
|
||||
if ( ! array_key_exists($key, $this->settings)) {
|
||||
return $this->getDefault($key, $default);
|
||||
}
|
||||
|
||||
return $this->settings[$key];
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if an item exists by key.
|
||||
*
|
||||
* @param string $key
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function has($key)
|
||||
{
|
||||
if (array_key_exists($key, $this->settings)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return $this->fallback instanceof Config
|
||||
? $this->fallback->has($key)
|
||||
: false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Try to retrieve a default setting from a config fallback.
|
||||
*
|
||||
* @param string $key
|
||||
* @param mixed $default
|
||||
*
|
||||
* @return mixed config setting or default when not found
|
||||
*/
|
||||
protected function getDefault($key, $default)
|
||||
{
|
||||
if ( ! $this->fallback) {
|
||||
return $default;
|
||||
}
|
||||
|
||||
return $this->fallback->get($key, $default);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a setting.
|
||||
*
|
||||
* @param string $key
|
||||
* @param mixed $value
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function set($key, $value)
|
||||
{
|
||||
$this->settings[$key] = $value;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the fallback.
|
||||
*
|
||||
* @param Config $fallback
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setFallback(Config $fallback)
|
||||
{
|
||||
$this->fallback = $fallback;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
trait ConfigAwareTrait
|
||||
{
|
||||
/**
|
||||
* @var Config
|
||||
*/
|
||||
protected $config;
|
||||
|
||||
/**
|
||||
* Set the config.
|
||||
*
|
||||
* @param Config|array|null $config
|
||||
*/
|
||||
protected function setConfig($config)
|
||||
{
|
||||
$this->config = $config ? Util::ensureConfig($config) : new Config;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Config.
|
||||
*
|
||||
* @return Config config object
|
||||
*/
|
||||
public function getConfig()
|
||||
{
|
||||
return $this->config;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a config array to a Config object with the correct fallback.
|
||||
*
|
||||
* @param array $config
|
||||
*
|
||||
* @return Config
|
||||
*/
|
||||
protected function prepareConfig(array $config)
|
||||
{
|
||||
$config = new Config($config);
|
||||
$config->setFallback($this->getConfig());
|
||||
|
||||
return $config;
|
||||
}
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem;
|
||||
|
||||
use ErrorException;
|
||||
|
||||
class ConnectionErrorException extends ErrorException implements FilesystemException
|
||||
{
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem;
|
||||
|
||||
use RuntimeException;
|
||||
|
||||
class ConnectionRuntimeException extends RuntimeException implements FilesystemException
|
||||
{
|
||||
}
|
||||
-31
@@ -1,31 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem;
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
*/
|
||||
class Directory extends Handler
|
||||
{
|
||||
/**
|
||||
* Delete the directory.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function delete()
|
||||
{
|
||||
return $this->filesystem->deleteDir($this->path);
|
||||
}
|
||||
|
||||
/**
|
||||
* List the directory contents.
|
||||
*
|
||||
* @param bool $recursive
|
||||
*
|
||||
* @return array|bool directory contents or false
|
||||
*/
|
||||
public function getContents($recursive = false)
|
||||
{
|
||||
return $this->filesystem->listContents($this->path, $recursive);
|
||||
}
|
||||
}
|
||||
-8
@@ -1,8 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem;
|
||||
|
||||
class Exception extends \Exception implements FilesystemException
|
||||
{
|
||||
//
|
||||
}
|
||||
Vendored
-205
@@ -1,205 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem;
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
*/
|
||||
class File extends Handler
|
||||
{
|
||||
/**
|
||||
* Check whether the file exists.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function exists()
|
||||
{
|
||||
return $this->filesystem->has($this->path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the file.
|
||||
*
|
||||
* @return string|false file contents
|
||||
*/
|
||||
public function read()
|
||||
{
|
||||
return $this->filesystem->read($this->path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the file as a stream.
|
||||
*
|
||||
* @return resource|false file stream
|
||||
*/
|
||||
public function readStream()
|
||||
{
|
||||
return $this->filesystem->readStream($this->path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write the new file.
|
||||
*
|
||||
* @param string $content
|
||||
*
|
||||
* @return bool success boolean
|
||||
*/
|
||||
public function write($content)
|
||||
{
|
||||
return $this->filesystem->write($this->path, $content);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write the new file using a stream.
|
||||
*
|
||||
* @param resource $resource
|
||||
*
|
||||
* @return bool success boolean
|
||||
*/
|
||||
public function writeStream($resource)
|
||||
{
|
||||
return $this->filesystem->writeStream($this->path, $resource);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the file contents.
|
||||
*
|
||||
* @param string $content
|
||||
*
|
||||
* @return bool success boolean
|
||||
*/
|
||||
public function update($content)
|
||||
{
|
||||
return $this->filesystem->update($this->path, $content);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the file contents with a stream.
|
||||
*
|
||||
* @param resource $resource
|
||||
*
|
||||
* @return bool success boolean
|
||||
*/
|
||||
public function updateStream($resource)
|
||||
{
|
||||
return $this->filesystem->updateStream($this->path, $resource);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the file or update if exists.
|
||||
*
|
||||
* @param string $content
|
||||
*
|
||||
* @return bool success boolean
|
||||
*/
|
||||
public function put($content)
|
||||
{
|
||||
return $this->filesystem->put($this->path, $content);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the file or update if exists using a stream.
|
||||
*
|
||||
* @param resource $resource
|
||||
*
|
||||
* @return bool success boolean
|
||||
*/
|
||||
public function putStream($resource)
|
||||
{
|
||||
return $this->filesystem->putStream($this->path, $resource);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename the file.
|
||||
*
|
||||
* @param string $newpath
|
||||
*
|
||||
* @return bool success boolean
|
||||
*/
|
||||
public function rename($newpath)
|
||||
{
|
||||
if ($this->filesystem->rename($this->path, $newpath)) {
|
||||
$this->path = $newpath;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy the file.
|
||||
*
|
||||
* @param string $newpath
|
||||
*
|
||||
* @return File|false new file or false
|
||||
*/
|
||||
public function copy($newpath)
|
||||
{
|
||||
if ($this->filesystem->copy($this->path, $newpath)) {
|
||||
return new File($this->filesystem, $newpath);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the file's timestamp.
|
||||
*
|
||||
* @return string|false The timestamp or false on failure.
|
||||
*/
|
||||
public function getTimestamp()
|
||||
{
|
||||
return $this->filesystem->getTimestamp($this->path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the file's mimetype.
|
||||
*
|
||||
* @return string|false The file mime-type or false on failure.
|
||||
*/
|
||||
public function getMimetype()
|
||||
{
|
||||
return $this->filesystem->getMimetype($this->path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the file's visibility.
|
||||
*
|
||||
* @return string|false The visibility (public|private) or false on failure.
|
||||
*/
|
||||
public function getVisibility()
|
||||
{
|
||||
return $this->filesystem->getVisibility($this->path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the file's metadata.
|
||||
*
|
||||
* @return array|false The file metadata or false on failure.
|
||||
*/
|
||||
public function getMetadata()
|
||||
{
|
||||
return $this->filesystem->getMetadata($this->path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the file size.
|
||||
*
|
||||
* @return int|false The file size or false on failure.
|
||||
*/
|
||||
public function getSize()
|
||||
{
|
||||
return $this->filesystem->getSize($this->path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete the file.
|
||||
*
|
||||
* @return bool success boolean
|
||||
*/
|
||||
public function delete()
|
||||
{
|
||||
return $this->filesystem->delete($this->path);
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem;
|
||||
|
||||
use Exception as BaseException;
|
||||
|
||||
class FileExistsException extends Exception
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $path;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param string $path
|
||||
* @param int $code
|
||||
* @param BaseException $previous
|
||||
*/
|
||||
public function __construct($path, $code = 0, BaseException $previous = null)
|
||||
{
|
||||
$this->path = $path;
|
||||
|
||||
parent::__construct('File already exists at path: ' . $this->getPath(), $code, $previous);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the path which was found.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getPath()
|
||||
{
|
||||
return $this->path;
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem;
|
||||
|
||||
use Exception as BaseException;
|
||||
|
||||
class FileNotFoundException extends Exception
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $path;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param string $path
|
||||
* @param int $code
|
||||
* @param \Exception $previous
|
||||
*/
|
||||
public function __construct($path, $code = 0, BaseException $previous = null)
|
||||
{
|
||||
$this->path = $path;
|
||||
|
||||
parent::__construct('File not found at path: ' . $this->getPath(), $code, $previous);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the path which was not found.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getPath()
|
||||
{
|
||||
return $this->path;
|
||||
}
|
||||
}
|
||||
-408
@@ -1,408 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem;
|
||||
|
||||
use InvalidArgumentException;
|
||||
use League\Flysystem\Adapter\CanOverwriteFiles;
|
||||
use League\Flysystem\Plugin\PluggableTrait;
|
||||
use League\Flysystem\Util\ContentListingFormatter;
|
||||
|
||||
/**
|
||||
* @method array getWithMetadata(string $path, array $metadata)
|
||||
* @method bool forceCopy(string $path, string $newpath)
|
||||
* @method bool forceRename(string $path, string $newpath)
|
||||
* @method array listFiles(string $path = '', boolean $recursive = false)
|
||||
* @method array listPaths(string $path = '', boolean $recursive = false)
|
||||
* @method array listWith(array $keys = [], $directory = '', $recursive = false)
|
||||
*/
|
||||
class Filesystem implements FilesystemInterface
|
||||
{
|
||||
use PluggableTrait;
|
||||
use ConfigAwareTrait;
|
||||
|
||||
/**
|
||||
* @var AdapterInterface
|
||||
*/
|
||||
protected $adapter;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param AdapterInterface $adapter
|
||||
* @param Config|array $config
|
||||
*/
|
||||
public function __construct(AdapterInterface $adapter, $config = null)
|
||||
{
|
||||
$this->adapter = $adapter;
|
||||
$this->setConfig($config);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Adapter.
|
||||
*
|
||||
* @return AdapterInterface adapter
|
||||
*/
|
||||
public function getAdapter()
|
||||
{
|
||||
return $this->adapter;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function has($path)
|
||||
{
|
||||
$path = Util::normalizePath($path);
|
||||
|
||||
return strlen($path) === 0 ? false : (bool) $this->getAdapter()->has($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function write($path, $contents, array $config = [])
|
||||
{
|
||||
$path = Util::normalizePath($path);
|
||||
$this->assertAbsent($path);
|
||||
$config = $this->prepareConfig($config);
|
||||
|
||||
return (bool) $this->getAdapter()->write($path, $contents, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function writeStream($path, $resource, array $config = [])
|
||||
{
|
||||
if ( ! is_resource($resource) || get_resource_type($resource) !== 'stream') {
|
||||
throw new InvalidArgumentException(__METHOD__ . ' expects argument #2 to be a valid resource.');
|
||||
}
|
||||
|
||||
$path = Util::normalizePath($path);
|
||||
$this->assertAbsent($path);
|
||||
$config = $this->prepareConfig($config);
|
||||
|
||||
Util::rewindStream($resource);
|
||||
|
||||
return (bool) $this->getAdapter()->writeStream($path, $resource, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function put($path, $contents, array $config = [])
|
||||
{
|
||||
$path = Util::normalizePath($path);
|
||||
$config = $this->prepareConfig($config);
|
||||
|
||||
if ( ! $this->getAdapter() instanceof CanOverwriteFiles && $this->has($path)) {
|
||||
return (bool) $this->getAdapter()->update($path, $contents, $config);
|
||||
}
|
||||
|
||||
return (bool) $this->getAdapter()->write($path, $contents, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function putStream($path, $resource, array $config = [])
|
||||
{
|
||||
if ( ! is_resource($resource) || get_resource_type($resource) !== 'stream') {
|
||||
throw new InvalidArgumentException(__METHOD__ . ' expects argument #2 to be a valid resource.');
|
||||
}
|
||||
|
||||
$path = Util::normalizePath($path);
|
||||
$config = $this->prepareConfig($config);
|
||||
Util::rewindStream($resource);
|
||||
|
||||
if ( ! $this->getAdapter() instanceof CanOverwriteFiles && $this->has($path)) {
|
||||
return (bool) $this->getAdapter()->updateStream($path, $resource, $config);
|
||||
}
|
||||
|
||||
return (bool) $this->getAdapter()->writeStream($path, $resource, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function readAndDelete($path)
|
||||
{
|
||||
$path = Util::normalizePath($path);
|
||||
$this->assertPresent($path);
|
||||
$contents = $this->read($path);
|
||||
|
||||
if ($contents === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->delete($path);
|
||||
|
||||
return $contents;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function update($path, $contents, array $config = [])
|
||||
{
|
||||
$path = Util::normalizePath($path);
|
||||
$config = $this->prepareConfig($config);
|
||||
|
||||
$this->assertPresent($path);
|
||||
|
||||
return (bool) $this->getAdapter()->update($path, $contents, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function updateStream($path, $resource, array $config = [])
|
||||
{
|
||||
if ( ! is_resource($resource) || get_resource_type($resource) !== 'stream') {
|
||||
throw new InvalidArgumentException(__METHOD__ . ' expects argument #2 to be a valid resource.');
|
||||
}
|
||||
|
||||
$path = Util::normalizePath($path);
|
||||
$config = $this->prepareConfig($config);
|
||||
$this->assertPresent($path);
|
||||
Util::rewindStream($resource);
|
||||
|
||||
return (bool) $this->getAdapter()->updateStream($path, $resource, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function read($path)
|
||||
{
|
||||
$path = Util::normalizePath($path);
|
||||
$this->assertPresent($path);
|
||||
|
||||
if ( ! ($object = $this->getAdapter()->read($path))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $object['contents'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function readStream($path)
|
||||
{
|
||||
$path = Util::normalizePath($path);
|
||||
$this->assertPresent($path);
|
||||
|
||||
if ( ! $object = $this->getAdapter()->readStream($path)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $object['stream'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function rename($path, $newpath)
|
||||
{
|
||||
$path = Util::normalizePath($path);
|
||||
$newpath = Util::normalizePath($newpath);
|
||||
$this->assertPresent($path);
|
||||
$this->assertAbsent($newpath);
|
||||
|
||||
return (bool) $this->getAdapter()->rename($path, $newpath);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function copy($path, $newpath)
|
||||
{
|
||||
$path = Util::normalizePath($path);
|
||||
$newpath = Util::normalizePath($newpath);
|
||||
$this->assertPresent($path);
|
||||
$this->assertAbsent($newpath);
|
||||
|
||||
return $this->getAdapter()->copy($path, $newpath);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function delete($path)
|
||||
{
|
||||
$path = Util::normalizePath($path);
|
||||
$this->assertPresent($path);
|
||||
|
||||
return $this->getAdapter()->delete($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function deleteDir($dirname)
|
||||
{
|
||||
$dirname = Util::normalizePath($dirname);
|
||||
|
||||
if ($dirname === '') {
|
||||
throw new RootViolationException('Root directories can not be deleted.');
|
||||
}
|
||||
|
||||
return (bool) $this->getAdapter()->deleteDir($dirname);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function createDir($dirname, array $config = [])
|
||||
{
|
||||
$dirname = Util::normalizePath($dirname);
|
||||
$config = $this->prepareConfig($config);
|
||||
|
||||
return (bool) $this->getAdapter()->createDir($dirname, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function listContents($directory = '', $recursive = false)
|
||||
{
|
||||
$directory = Util::normalizePath($directory);
|
||||
$contents = $this->getAdapter()->listContents($directory, $recursive);
|
||||
|
||||
return (new ContentListingFormatter($directory, $recursive, $this->config->get('case_sensitive', true)))
|
||||
->formatListing($contents);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getMimetype($path)
|
||||
{
|
||||
$path = Util::normalizePath($path);
|
||||
$this->assertPresent($path);
|
||||
|
||||
if (( ! $object = $this->getAdapter()->getMimetype($path)) || ! array_key_exists('mimetype', $object)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $object['mimetype'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getTimestamp($path)
|
||||
{
|
||||
$path = Util::normalizePath($path);
|
||||
$this->assertPresent($path);
|
||||
|
||||
if (( ! $object = $this->getAdapter()->getTimestamp($path)) || ! array_key_exists('timestamp', $object)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return (int) $object['timestamp'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getVisibility($path)
|
||||
{
|
||||
$path = Util::normalizePath($path);
|
||||
$this->assertPresent($path);
|
||||
|
||||
if (( ! $object = $this->getAdapter()->getVisibility($path)) || ! array_key_exists('visibility', $object)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $object['visibility'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getSize($path)
|
||||
{
|
||||
$path = Util::normalizePath($path);
|
||||
$this->assertPresent($path);
|
||||
|
||||
if (( ! $object = $this->getAdapter()->getSize($path)) || ! array_key_exists('size', $object)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return (int) $object['size'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function setVisibility($path, $visibility)
|
||||
{
|
||||
$path = Util::normalizePath($path);
|
||||
$this->assertPresent($path);
|
||||
|
||||
return (bool) $this->getAdapter()->setVisibility($path, $visibility);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getMetadata($path)
|
||||
{
|
||||
$path = Util::normalizePath($path);
|
||||
$this->assertPresent($path);
|
||||
|
||||
return $this->getAdapter()->getMetadata($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function get($path, Handler $handler = null)
|
||||
{
|
||||
$path = Util::normalizePath($path);
|
||||
|
||||
if ( ! $handler) {
|
||||
$metadata = $this->getMetadata($path);
|
||||
$handler = ($metadata && $metadata['type'] === 'file') ? new File($this, $path) : new Directory($this, $path);
|
||||
}
|
||||
|
||||
$handler->setPath($path);
|
||||
$handler->setFilesystem($this);
|
||||
|
||||
return $handler;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assert a file is present.
|
||||
*
|
||||
* @param string $path path to file
|
||||
*
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function assertPresent($path)
|
||||
{
|
||||
if ($this->config->get('disable_asserts', false) === false && ! $this->has($path)) {
|
||||
throw new FileNotFoundException($path);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Assert a file is absent.
|
||||
*
|
||||
* @param string $path path to file
|
||||
*
|
||||
* @throws FileExistsException
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function assertAbsent($path)
|
||||
{
|
||||
if ($this->config->get('disable_asserts', false) === false && $this->has($path)) {
|
||||
throw new FileExistsException($path);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem;
|
||||
|
||||
interface FilesystemException
|
||||
{
|
||||
}
|
||||
-284
@@ -1,284 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem;
|
||||
|
||||
use InvalidArgumentException;
|
||||
|
||||
interface FilesystemInterface
|
||||
{
|
||||
/**
|
||||
* Check whether a file exists.
|
||||
*
|
||||
* @param string $path
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function has($path);
|
||||
|
||||
/**
|
||||
* Read a file.
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
*
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return string|false The file contents or false on failure.
|
||||
*/
|
||||
public function read($path);
|
||||
|
||||
/**
|
||||
* Retrieves a read-stream for a path.
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
*
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return resource|false The path resource or false on failure.
|
||||
*/
|
||||
public function readStream($path);
|
||||
|
||||
/**
|
||||
* List contents of a directory.
|
||||
*
|
||||
* @param string $directory The directory to list.
|
||||
* @param bool $recursive Whether to list recursively.
|
||||
*
|
||||
* @return array A list of file metadata.
|
||||
*/
|
||||
public function listContents($directory = '', $recursive = false);
|
||||
|
||||
/**
|
||||
* Get a file's metadata.
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
*
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return array|false The file metadata or false on failure.
|
||||
*/
|
||||
public function getMetadata($path);
|
||||
|
||||
/**
|
||||
* Get a file's size.
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
*
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return int|false The file size or false on failure.
|
||||
*/
|
||||
public function getSize($path);
|
||||
|
||||
/**
|
||||
* Get a file's mime-type.
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
*
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return string|false The file mime-type or false on failure.
|
||||
*/
|
||||
public function getMimetype($path);
|
||||
|
||||
/**
|
||||
* Get a file's timestamp.
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
*
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return int|false The timestamp or false on failure.
|
||||
*/
|
||||
public function getTimestamp($path);
|
||||
|
||||
/**
|
||||
* Get a file's visibility.
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
*
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return string|false The visibility (public|private) or false on failure.
|
||||
*/
|
||||
public function getVisibility($path);
|
||||
|
||||
/**
|
||||
* Write a new file.
|
||||
*
|
||||
* @param string $path The path of the new file.
|
||||
* @param string $contents The file contents.
|
||||
* @param array $config An optional configuration array.
|
||||
*
|
||||
* @throws FileExistsException
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function write($path, $contents, array $config = []);
|
||||
|
||||
/**
|
||||
* Write a new file using a stream.
|
||||
*
|
||||
* @param string $path The path of the new file.
|
||||
* @param resource $resource The file handle.
|
||||
* @param array $config An optional configuration array.
|
||||
*
|
||||
* @throws InvalidArgumentException If $resource is not a file handle.
|
||||
* @throws FileExistsException
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function writeStream($path, $resource, array $config = []);
|
||||
|
||||
/**
|
||||
* Update an existing file.
|
||||
*
|
||||
* @param string $path The path of the existing file.
|
||||
* @param string $contents The file contents.
|
||||
* @param array $config An optional configuration array.
|
||||
*
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function update($path, $contents, array $config = []);
|
||||
|
||||
/**
|
||||
* Update an existing file using a stream.
|
||||
*
|
||||
* @param string $path The path of the existing file.
|
||||
* @param resource $resource The file handle.
|
||||
* @param array $config An optional configuration array.
|
||||
*
|
||||
* @throws InvalidArgumentException If $resource is not a file handle.
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function updateStream($path, $resource, array $config = []);
|
||||
|
||||
/**
|
||||
* Rename a file.
|
||||
*
|
||||
* @param string $path Path to the existing file.
|
||||
* @param string $newpath The new path of the file.
|
||||
*
|
||||
* @throws FileExistsException Thrown if $newpath exists.
|
||||
* @throws FileNotFoundException Thrown if $path does not exist.
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function rename($path, $newpath);
|
||||
|
||||
/**
|
||||
* Copy a file.
|
||||
*
|
||||
* @param string $path Path to the existing file.
|
||||
* @param string $newpath The new path of the file.
|
||||
*
|
||||
* @throws FileExistsException Thrown if $newpath exists.
|
||||
* @throws FileNotFoundException Thrown if $path does not exist.
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function copy($path, $newpath);
|
||||
|
||||
/**
|
||||
* Delete a file.
|
||||
*
|
||||
* @param string $path
|
||||
*
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function delete($path);
|
||||
|
||||
/**
|
||||
* Delete a directory.
|
||||
*
|
||||
* @param string $dirname
|
||||
*
|
||||
* @throws RootViolationException Thrown if $dirname is empty.
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function deleteDir($dirname);
|
||||
|
||||
/**
|
||||
* Create a directory.
|
||||
*
|
||||
* @param string $dirname The name of the new directory.
|
||||
* @param array $config An optional configuration array.
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function createDir($dirname, array $config = []);
|
||||
|
||||
/**
|
||||
* Set the visibility for a file.
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
* @param string $visibility One of 'public' or 'private'.
|
||||
*
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function setVisibility($path, $visibility);
|
||||
|
||||
/**
|
||||
* Create a file or update if exists.
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
* @param string $contents The file contents.
|
||||
* @param array $config An optional configuration array.
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function put($path, $contents, array $config = []);
|
||||
|
||||
/**
|
||||
* Create a file or update if exists.
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
* @param resource $resource The file handle.
|
||||
* @param array $config An optional configuration array.
|
||||
*
|
||||
* @throws InvalidArgumentException Thrown if $resource is not a resource.
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function putStream($path, $resource, array $config = []);
|
||||
|
||||
/**
|
||||
* Read and delete a file.
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
*
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return string|false The file contents, or false on failure.
|
||||
*/
|
||||
public function readAndDelete($path);
|
||||
|
||||
/**
|
||||
* Get a file/directory handler.
|
||||
*
|
||||
* @deprecated
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
* @param Handler $handler An optional existing handler to populate.
|
||||
*
|
||||
* @return Handler Either a file or directory handler.
|
||||
*/
|
||||
public function get($path, Handler $handler = null);
|
||||
|
||||
/**
|
||||
* Register a plugin.
|
||||
*
|
||||
* @param PluginInterface $plugin The plugin to register.
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function addPlugin(PluginInterface $plugin);
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem;
|
||||
|
||||
use LogicException;
|
||||
|
||||
/**
|
||||
* Thrown when the MountManager cannot find a filesystem.
|
||||
*/
|
||||
class FilesystemNotFoundException extends LogicException implements FilesystemException
|
||||
{
|
||||
}
|
||||
-137
@@ -1,137 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem;
|
||||
|
||||
use BadMethodCallException;
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
*/
|
||||
abstract class Handler
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $path;
|
||||
|
||||
/**
|
||||
* @var FilesystemInterface
|
||||
*/
|
||||
protected $filesystem;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param FilesystemInterface $filesystem
|
||||
* @param string $path
|
||||
*/
|
||||
public function __construct(FilesystemInterface $filesystem = null, $path = null)
|
||||
{
|
||||
$this->path = $path;
|
||||
$this->filesystem = $filesystem;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether the entree is a directory.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isDir()
|
||||
{
|
||||
return $this->getType() === 'dir';
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether the entree is a file.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isFile()
|
||||
{
|
||||
return $this->getType() === 'file';
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the entree type (file|dir).
|
||||
*
|
||||
* @return string file or dir
|
||||
*/
|
||||
public function getType()
|
||||
{
|
||||
$metadata = $this->filesystem->getMetadata($this->path);
|
||||
|
||||
return $metadata ? $metadata['type'] : 'dir';
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the Filesystem object.
|
||||
*
|
||||
* @param FilesystemInterface $filesystem
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setFilesystem(FilesystemInterface $filesystem)
|
||||
{
|
||||
$this->filesystem = $filesystem;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the Filesystem object.
|
||||
*
|
||||
* @return FilesystemInterface
|
||||
*/
|
||||
public function getFilesystem()
|
||||
{
|
||||
return $this->filesystem;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the entree path.
|
||||
*
|
||||
* @param string $path
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setPath($path)
|
||||
{
|
||||
$this->path = $path;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the entree path.
|
||||
*
|
||||
* @return string path
|
||||
*/
|
||||
public function getPath()
|
||||
{
|
||||
return $this->path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Plugins pass-through.
|
||||
*
|
||||
* @param string $method
|
||||
* @param array $arguments
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function __call($method, array $arguments)
|
||||
{
|
||||
array_unshift($arguments, $this->path);
|
||||
$callback = [$this->filesystem, $method];
|
||||
|
||||
try {
|
||||
return call_user_func_array($callback, $arguments);
|
||||
} catch (BadMethodCallException $e) {
|
||||
throw new BadMethodCallException(
|
||||
'Call to undefined method '
|
||||
. get_called_class()
|
||||
. '::' . $method
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem;
|
||||
|
||||
use RuntimeException;
|
||||
|
||||
class InvalidRootException extends RuntimeException implements FilesystemException
|
||||
{
|
||||
}
|
||||
-650
@@ -1,650 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem;
|
||||
|
||||
use InvalidArgumentException;
|
||||
use League\Flysystem\Plugin\PluggableTrait;
|
||||
use League\Flysystem\Plugin\PluginNotFoundException;
|
||||
|
||||
/**
|
||||
* Class MountManager.
|
||||
*
|
||||
* Proxies methods to Filesystem (@see __call):
|
||||
*
|
||||
* @method AdapterInterface getAdapter($prefix)
|
||||
* @method Config getConfig($prefix)
|
||||
* @method array listFiles($directory = '', $recursive = false)
|
||||
* @method array listPaths($directory = '', $recursive = false)
|
||||
* @method array getWithMetadata($path, array $metadata)
|
||||
* @method Filesystem flushCache()
|
||||
* @method void assertPresent($path)
|
||||
* @method void assertAbsent($path)
|
||||
* @method Filesystem addPlugin(PluginInterface $plugin)
|
||||
*
|
||||
* @deprecated This functionality will be removed in 2.0
|
||||
*/
|
||||
class MountManager implements FilesystemInterface
|
||||
{
|
||||
use PluggableTrait;
|
||||
|
||||
/**
|
||||
* @var FilesystemInterface[]
|
||||
*/
|
||||
protected $filesystems = [];
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param FilesystemInterface[] $filesystems [:prefix => Filesystem,]
|
||||
*
|
||||
* @throws InvalidArgumentException
|
||||
*/
|
||||
public function __construct(array $filesystems = [])
|
||||
{
|
||||
$this->mountFilesystems($filesystems);
|
||||
}
|
||||
|
||||
/**
|
||||
* Mount filesystems.
|
||||
*
|
||||
* @param FilesystemInterface[] $filesystems [:prefix => Filesystem,]
|
||||
*
|
||||
* @throws InvalidArgumentException
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function mountFilesystems(array $filesystems)
|
||||
{
|
||||
foreach ($filesystems as $prefix => $filesystem) {
|
||||
$this->mountFilesystem($prefix, $filesystem);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Mount filesystems.
|
||||
*
|
||||
* @param string $prefix
|
||||
* @param FilesystemInterface $filesystem
|
||||
*
|
||||
* @throws InvalidArgumentException
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function mountFilesystem($prefix, FilesystemInterface $filesystem)
|
||||
{
|
||||
if ( ! is_string($prefix)) {
|
||||
throw new InvalidArgumentException(__METHOD__ . ' expects argument #1 to be a string.');
|
||||
}
|
||||
|
||||
$this->filesystems[$prefix] = $filesystem;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the filesystem with the corresponding prefix.
|
||||
*
|
||||
* @param string $prefix
|
||||
*
|
||||
* @throws FilesystemNotFoundException
|
||||
*
|
||||
* @return FilesystemInterface
|
||||
*/
|
||||
public function getFilesystem($prefix)
|
||||
{
|
||||
if ( ! isset($this->filesystems[$prefix])) {
|
||||
throw new FilesystemNotFoundException('No filesystem mounted with prefix ' . $prefix);
|
||||
}
|
||||
|
||||
return $this->filesystems[$prefix];
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the prefix from an arguments array.
|
||||
*
|
||||
* @param array $arguments
|
||||
*
|
||||
* @throws InvalidArgumentException
|
||||
*
|
||||
* @return array [:prefix, :arguments]
|
||||
*/
|
||||
public function filterPrefix(array $arguments)
|
||||
{
|
||||
if (empty($arguments)) {
|
||||
throw new InvalidArgumentException('At least one argument needed');
|
||||
}
|
||||
|
||||
$path = array_shift($arguments);
|
||||
|
||||
if ( ! is_string($path)) {
|
||||
throw new InvalidArgumentException('First argument should be a string');
|
||||
}
|
||||
|
||||
list($prefix, $path) = $this->getPrefixAndPath($path);
|
||||
array_unshift($arguments, $path);
|
||||
|
||||
return [$prefix, $arguments];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $directory
|
||||
* @param bool $recursive
|
||||
*
|
||||
* @throws InvalidArgumentException
|
||||
* @throws FilesystemNotFoundException
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function listContents($directory = '', $recursive = false)
|
||||
{
|
||||
list($prefix, $directory) = $this->getPrefixAndPath($directory);
|
||||
$filesystem = $this->getFilesystem($prefix);
|
||||
$result = $filesystem->listContents($directory, $recursive);
|
||||
|
||||
foreach ($result as &$file) {
|
||||
$file['filesystem'] = $prefix;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Call forwarder.
|
||||
*
|
||||
* @param string $method
|
||||
* @param array $arguments
|
||||
*
|
||||
* @throws InvalidArgumentException
|
||||
* @throws FilesystemNotFoundException
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function __call($method, $arguments)
|
||||
{
|
||||
list($prefix, $arguments) = $this->filterPrefix($arguments);
|
||||
|
||||
return $this->invokePluginOnFilesystem($method, $arguments, $prefix);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $from
|
||||
* @param string $to
|
||||
* @param array $config
|
||||
*
|
||||
* @throws InvalidArgumentException
|
||||
* @throws FilesystemNotFoundException
|
||||
* @throws FileExistsException
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function copy($from, $to, array $config = [])
|
||||
{
|
||||
list($prefixFrom, $from) = $this->getPrefixAndPath($from);
|
||||
|
||||
$buffer = $this->getFilesystem($prefixFrom)->readStream($from);
|
||||
|
||||
if ($buffer === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
list($prefixTo, $to) = $this->getPrefixAndPath($to);
|
||||
|
||||
$result = $this->getFilesystem($prefixTo)->writeStream($to, $buffer, $config);
|
||||
|
||||
if (is_resource($buffer)) {
|
||||
fclose($buffer);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* List with plugin adapter.
|
||||
*
|
||||
* @param array $keys
|
||||
* @param string $directory
|
||||
* @param bool $recursive
|
||||
*
|
||||
* @throws InvalidArgumentException
|
||||
* @throws FilesystemNotFoundException
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function listWith(array $keys = [], $directory = '', $recursive = false)
|
||||
{
|
||||
list($prefix, $directory) = $this->getPrefixAndPath($directory);
|
||||
$arguments = [$keys, $directory, $recursive];
|
||||
|
||||
return $this->invokePluginOnFilesystem('listWith', $arguments, $prefix);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move a file.
|
||||
*
|
||||
* @param string $from
|
||||
* @param string $to
|
||||
* @param array $config
|
||||
*
|
||||
* @throws InvalidArgumentException
|
||||
* @throws FilesystemNotFoundException
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function move($from, $to, array $config = [])
|
||||
{
|
||||
list($prefixFrom, $pathFrom) = $this->getPrefixAndPath($from);
|
||||
list($prefixTo, $pathTo) = $this->getPrefixAndPath($to);
|
||||
|
||||
if ($prefixFrom === $prefixTo) {
|
||||
$filesystem = $this->getFilesystem($prefixFrom);
|
||||
$renamed = $filesystem->rename($pathFrom, $pathTo);
|
||||
|
||||
if ($renamed && isset($config['visibility'])) {
|
||||
return $filesystem->setVisibility($pathTo, $config['visibility']);
|
||||
}
|
||||
|
||||
return $renamed;
|
||||
}
|
||||
|
||||
$copied = $this->copy($from, $to, $config);
|
||||
|
||||
if ($copied) {
|
||||
return $this->delete($from);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Invoke a plugin on a filesystem mounted on a given prefix.
|
||||
*
|
||||
* @param string $method
|
||||
* @param array $arguments
|
||||
* @param string $prefix
|
||||
*
|
||||
* @throws FilesystemNotFoundException
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function invokePluginOnFilesystem($method, $arguments, $prefix)
|
||||
{
|
||||
$filesystem = $this->getFilesystem($prefix);
|
||||
|
||||
try {
|
||||
return $this->invokePlugin($method, $arguments, $filesystem);
|
||||
} catch (PluginNotFoundException $e) {
|
||||
// Let it pass, it's ok, don't panic.
|
||||
}
|
||||
|
||||
$callback = [$filesystem, $method];
|
||||
|
||||
return call_user_func_array($callback, $arguments);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $path
|
||||
*
|
||||
* @throws InvalidArgumentException
|
||||
*
|
||||
* @return string[] [:prefix, :path]
|
||||
*/
|
||||
protected function getPrefixAndPath($path)
|
||||
{
|
||||
if (strpos($path, '://') < 1) {
|
||||
throw new InvalidArgumentException('No prefix detected in path: ' . $path);
|
||||
}
|
||||
|
||||
return explode('://', $path, 2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether a file exists.
|
||||
*
|
||||
* @param string $path
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function has($path)
|
||||
{
|
||||
list($prefix, $path) = $this->getPrefixAndPath($path);
|
||||
|
||||
return $this->getFilesystem($prefix)->has($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Read a file.
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
*
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return string|false The file contents or false on failure.
|
||||
*/
|
||||
public function read($path)
|
||||
{
|
||||
list($prefix, $path) = $this->getPrefixAndPath($path);
|
||||
|
||||
return $this->getFilesystem($prefix)->read($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves a read-stream for a path.
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
*
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return resource|false The path resource or false on failure.
|
||||
*/
|
||||
public function readStream($path)
|
||||
{
|
||||
list($prefix, $path) = $this->getPrefixAndPath($path);
|
||||
|
||||
return $this->getFilesystem($prefix)->readStream($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a file's metadata.
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
*
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return array|false The file metadata or false on failure.
|
||||
*/
|
||||
public function getMetadata($path)
|
||||
{
|
||||
list($prefix, $path) = $this->getPrefixAndPath($path);
|
||||
|
||||
return $this->getFilesystem($prefix)->getMetadata($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a file's size.
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
*
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return int|false The file size or false on failure.
|
||||
*/
|
||||
public function getSize($path)
|
||||
{
|
||||
list($prefix, $path) = $this->getPrefixAndPath($path);
|
||||
|
||||
return $this->getFilesystem($prefix)->getSize($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a file's mime-type.
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
*
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return string|false The file mime-type or false on failure.
|
||||
*/
|
||||
public function getMimetype($path)
|
||||
{
|
||||
list($prefix, $path) = $this->getPrefixAndPath($path);
|
||||
|
||||
return $this->getFilesystem($prefix)->getMimetype($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a file's timestamp.
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
*
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return string|false The timestamp or false on failure.
|
||||
*/
|
||||
public function getTimestamp($path)
|
||||
{
|
||||
list($prefix, $path) = $this->getPrefixAndPath($path);
|
||||
|
||||
return $this->getFilesystem($prefix)->getTimestamp($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a file's visibility.
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
*
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return string|false The visibility (public|private) or false on failure.
|
||||
*/
|
||||
public function getVisibility($path)
|
||||
{
|
||||
list($prefix, $path) = $this->getPrefixAndPath($path);
|
||||
|
||||
return $this->getFilesystem($prefix)->getVisibility($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a new file.
|
||||
*
|
||||
* @param string $path The path of the new file.
|
||||
* @param string $contents The file contents.
|
||||
* @param array $config An optional configuration array.
|
||||
*
|
||||
* @throws FileExistsException
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function write($path, $contents, array $config = [])
|
||||
{
|
||||
list($prefix, $path) = $this->getPrefixAndPath($path);
|
||||
|
||||
return $this->getFilesystem($prefix)->write($path, $contents, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* Write a new file using a stream.
|
||||
*
|
||||
* @param string $path The path of the new file.
|
||||
* @param resource $resource The file handle.
|
||||
* @param array $config An optional configuration array.
|
||||
*
|
||||
* @throws InvalidArgumentException If $resource is not a file handle.
|
||||
* @throws FileExistsException
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function writeStream($path, $resource, array $config = [])
|
||||
{
|
||||
list($prefix, $path) = $this->getPrefixAndPath($path);
|
||||
|
||||
return $this->getFilesystem($prefix)->writeStream($path, $resource, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update an existing file.
|
||||
*
|
||||
* @param string $path The path of the existing file.
|
||||
* @param string $contents The file contents.
|
||||
* @param array $config An optional configuration array.
|
||||
*
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function update($path, $contents, array $config = [])
|
||||
{
|
||||
list($prefix, $path) = $this->getPrefixAndPath($path);
|
||||
|
||||
return $this->getFilesystem($prefix)->update($path, $contents, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update an existing file using a stream.
|
||||
*
|
||||
* @param string $path The path of the existing file.
|
||||
* @param resource $resource The file handle.
|
||||
* @param array $config An optional configuration array.
|
||||
*
|
||||
* @throws InvalidArgumentException If $resource is not a file handle.
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function updateStream($path, $resource, array $config = [])
|
||||
{
|
||||
list($prefix, $path) = $this->getPrefixAndPath($path);
|
||||
|
||||
return $this->getFilesystem($prefix)->updateStream($path, $resource, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename a file.
|
||||
*
|
||||
* @param string $path Path to the existing file.
|
||||
* @param string $newpath The new path of the file.
|
||||
*
|
||||
* @throws FileExistsException Thrown if $newpath exists.
|
||||
* @throws FileNotFoundException Thrown if $path does not exist.
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function rename($path, $newpath)
|
||||
{
|
||||
list($prefix, $path) = $this->getPrefixAndPath($path);
|
||||
|
||||
return $this->getFilesystem($prefix)->rename($path, $newpath);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a file.
|
||||
*
|
||||
* @param string $path
|
||||
*
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function delete($path)
|
||||
{
|
||||
list($prefix, $path) = $this->getPrefixAndPath($path);
|
||||
|
||||
return $this->getFilesystem($prefix)->delete($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a directory.
|
||||
*
|
||||
* @param string $dirname
|
||||
*
|
||||
* @throws RootViolationException Thrown if $dirname is empty.
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function deleteDir($dirname)
|
||||
{
|
||||
list($prefix, $dirname) = $this->getPrefixAndPath($dirname);
|
||||
|
||||
return $this->getFilesystem($prefix)->deleteDir($dirname);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a directory.
|
||||
*
|
||||
* @param string $dirname The name of the new directory.
|
||||
* @param array $config An optional configuration array.
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function createDir($dirname, array $config = [])
|
||||
{
|
||||
list($prefix, $dirname) = $this->getPrefixAndPath($dirname);
|
||||
|
||||
return $this->getFilesystem($prefix)->createDir($dirname);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the visibility for a file.
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
* @param string $visibility One of 'public' or 'private'.
|
||||
*
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function setVisibility($path, $visibility)
|
||||
{
|
||||
list($prefix, $path) = $this->getPrefixAndPath($path);
|
||||
|
||||
return $this->getFilesystem($prefix)->setVisibility($path, $visibility);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a file or update if exists.
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
* @param string $contents The file contents.
|
||||
* @param array $config An optional configuration array.
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function put($path, $contents, array $config = [])
|
||||
{
|
||||
list($prefix, $path) = $this->getPrefixAndPath($path);
|
||||
|
||||
return $this->getFilesystem($prefix)->put($path, $contents, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a file or update if exists.
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
* @param resource $resource The file handle.
|
||||
* @param array $config An optional configuration array.
|
||||
*
|
||||
* @throws InvalidArgumentException Thrown if $resource is not a resource.
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function putStream($path, $resource, array $config = [])
|
||||
{
|
||||
list($prefix, $path) = $this->getPrefixAndPath($path);
|
||||
|
||||
return $this->getFilesystem($prefix)->putStream($path, $resource, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* Read and delete a file.
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
*
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return string|false The file contents, or false on failure.
|
||||
*/
|
||||
public function readAndDelete($path)
|
||||
{
|
||||
list($prefix, $path) = $this->getPrefixAndPath($path);
|
||||
|
||||
return $this->getFilesystem($prefix)->readAndDelete($path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a file/directory handler.
|
||||
*
|
||||
* @deprecated
|
||||
*
|
||||
* @param string $path The path to the file.
|
||||
* @param Handler $handler An optional existing handler to populate.
|
||||
*
|
||||
* @return Handler Either a file or directory handler.
|
||||
*/
|
||||
public function get($path, Handler $handler = null)
|
||||
{
|
||||
list($prefix, $path) = $this->getPrefixAndPath($path);
|
||||
|
||||
return $this->getFilesystem($prefix)->get($path);
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem;
|
||||
|
||||
use RuntimeException;
|
||||
use SplFileInfo;
|
||||
|
||||
class NotSupportedException extends RuntimeException implements FilesystemException
|
||||
{
|
||||
/**
|
||||
* Create a new exception for a link.
|
||||
*
|
||||
* @param SplFileInfo $file
|
||||
*
|
||||
* @return static
|
||||
*/
|
||||
public static function forLink(SplFileInfo $file)
|
||||
{
|
||||
$message = 'Links are not supported, encountered link at ';
|
||||
|
||||
return new static($message . $file->getPathname());
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new exception for a link.
|
||||
*
|
||||
* @param string $systemType
|
||||
*
|
||||
* @return static
|
||||
*/
|
||||
public static function forFtpSystemType($systemType)
|
||||
{
|
||||
$message = "The FTP system type '$systemType' is currently not supported.";
|
||||
|
||||
return new static($message);
|
||||
}
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Plugin;
|
||||
|
||||
use League\Flysystem\FilesystemInterface;
|
||||
use League\Flysystem\PluginInterface;
|
||||
|
||||
abstract class AbstractPlugin implements PluginInterface
|
||||
{
|
||||
/**
|
||||
* @var FilesystemInterface
|
||||
*/
|
||||
protected $filesystem;
|
||||
|
||||
/**
|
||||
* Set the Filesystem object.
|
||||
*
|
||||
* @param FilesystemInterface $filesystem
|
||||
*/
|
||||
public function setFilesystem(FilesystemInterface $filesystem)
|
||||
{
|
||||
$this->filesystem = $filesystem;
|
||||
}
|
||||
}
|
||||
-34
@@ -1,34 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Plugin;
|
||||
|
||||
class EmptyDir extends AbstractPlugin
|
||||
{
|
||||
/**
|
||||
* Get the method name.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getMethod()
|
||||
{
|
||||
return 'emptyDir';
|
||||
}
|
||||
|
||||
/**
|
||||
* Empty a directory's contents.
|
||||
*
|
||||
* @param string $dirname
|
||||
*/
|
||||
public function handle($dirname)
|
||||
{
|
||||
$listing = $this->filesystem->listContents($dirname, false);
|
||||
|
||||
foreach ($listing as $item) {
|
||||
if ($item['type'] === 'dir') {
|
||||
$this->filesystem->deleteDir($item['path']);
|
||||
} else {
|
||||
$this->filesystem->delete($item['path']);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Plugin;
|
||||
|
||||
use League\Flysystem\FileExistsException;
|
||||
use League\Flysystem\FileNotFoundException;
|
||||
|
||||
class ForcedCopy extends AbstractPlugin
|
||||
{
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getMethod()
|
||||
{
|
||||
return 'forceCopy';
|
||||
}
|
||||
|
||||
/**
|
||||
* Copies a file, overwriting any existing files.
|
||||
*
|
||||
* @param string $path Path to the existing file.
|
||||
* @param string $newpath The new path of the file.
|
||||
*
|
||||
* @throws FileExistsException
|
||||
* @throws FileNotFoundException Thrown if $path does not exist.
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function handle($path, $newpath)
|
||||
{
|
||||
try {
|
||||
$deleted = $this->filesystem->delete($newpath);
|
||||
} catch (FileNotFoundException $e) {
|
||||
// The destination path does not exist. That's ok.
|
||||
$deleted = true;
|
||||
}
|
||||
|
||||
if ($deleted) {
|
||||
return $this->filesystem->copy($path, $newpath);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Plugin;
|
||||
|
||||
use League\Flysystem\FileExistsException;
|
||||
use League\Flysystem\FileNotFoundException;
|
||||
|
||||
class ForcedRename extends AbstractPlugin
|
||||
{
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function getMethod()
|
||||
{
|
||||
return 'forceRename';
|
||||
}
|
||||
|
||||
/**
|
||||
* Renames a file, overwriting the destination if it exists.
|
||||
*
|
||||
* @param string $path Path to the existing file.
|
||||
* @param string $newpath The new path of the file.
|
||||
*
|
||||
* @throws FileNotFoundException Thrown if $path does not exist.
|
||||
* @throws FileExistsException
|
||||
*
|
||||
* @return bool True on success, false on failure.
|
||||
*/
|
||||
public function handle($path, $newpath)
|
||||
{
|
||||
try {
|
||||
$deleted = $this->filesystem->delete($newpath);
|
||||
} catch (FileNotFoundException $e) {
|
||||
// The destination path does not exist. That's ok.
|
||||
$deleted = true;
|
||||
}
|
||||
|
||||
if ($deleted) {
|
||||
return $this->filesystem->rename($path, $newpath);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1,51 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Plugin;
|
||||
|
||||
use InvalidArgumentException;
|
||||
use League\Flysystem\FileNotFoundException;
|
||||
|
||||
class GetWithMetadata extends AbstractPlugin
|
||||
{
|
||||
/**
|
||||
* Get the method name.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getMethod()
|
||||
{
|
||||
return 'getWithMetadata';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get metadata for an object with required metadata.
|
||||
*
|
||||
* @param string $path path to file
|
||||
* @param array $metadata metadata keys
|
||||
*
|
||||
* @throws InvalidArgumentException
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @return array|false metadata
|
||||
*/
|
||||
public function handle($path, array $metadata)
|
||||
{
|
||||
$object = $this->filesystem->getMetadata($path);
|
||||
|
||||
if ( ! $object) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$keys = array_diff($metadata, array_keys($object));
|
||||
|
||||
foreach ($keys as $key) {
|
||||
if ( ! method_exists($this->filesystem, $method = 'get' . ucfirst($key))) {
|
||||
throw new InvalidArgumentException('Could not fetch metadata: ' . $key);
|
||||
}
|
||||
|
||||
$object[$key] = $this->filesystem->{$method}($path);
|
||||
}
|
||||
|
||||
return $object;
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Plugin;
|
||||
|
||||
class ListFiles extends AbstractPlugin
|
||||
{
|
||||
/**
|
||||
* Get the method name.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getMethod()
|
||||
{
|
||||
return 'listFiles';
|
||||
}
|
||||
|
||||
/**
|
||||
* List all files in the directory.
|
||||
*
|
||||
* @param string $directory
|
||||
* @param bool $recursive
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function handle($directory = '', $recursive = false)
|
||||
{
|
||||
$contents = $this->filesystem->listContents($directory, $recursive);
|
||||
|
||||
$filter = function ($object) {
|
||||
return $object['type'] === 'file';
|
||||
};
|
||||
|
||||
return array_values(array_filter($contents, $filter));
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Plugin;
|
||||
|
||||
class ListPaths extends AbstractPlugin
|
||||
{
|
||||
/**
|
||||
* Get the method name.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getMethod()
|
||||
{
|
||||
return 'listPaths';
|
||||
}
|
||||
|
||||
/**
|
||||
* List all paths.
|
||||
*
|
||||
* @param string $directory
|
||||
* @param bool $recursive
|
||||
*
|
||||
* @return array paths
|
||||
*/
|
||||
public function handle($directory = '', $recursive = false)
|
||||
{
|
||||
$result = [];
|
||||
$contents = $this->filesystem->listContents($directory, $recursive);
|
||||
|
||||
foreach ($contents as $object) {
|
||||
$result[] = $object['path'];
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
-60
@@ -1,60 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Plugin;
|
||||
|
||||
class ListWith extends AbstractPlugin
|
||||
{
|
||||
/**
|
||||
* Get the method name.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getMethod()
|
||||
{
|
||||
return 'listWith';
|
||||
}
|
||||
|
||||
/**
|
||||
* List contents with metadata.
|
||||
*
|
||||
* @param array $keys
|
||||
* @param string $directory
|
||||
* @param bool $recursive
|
||||
*
|
||||
* @return array listing with metadata
|
||||
*/
|
||||
public function handle(array $keys = [], $directory = '', $recursive = false)
|
||||
{
|
||||
$contents = $this->filesystem->listContents($directory, $recursive);
|
||||
|
||||
foreach ($contents as $index => $object) {
|
||||
if ($object['type'] === 'file') {
|
||||
$missingKeys = array_diff($keys, array_keys($object));
|
||||
$contents[$index] = array_reduce($missingKeys, [$this, 'getMetadataByName'], $object);
|
||||
}
|
||||
}
|
||||
|
||||
return $contents;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a meta-data value by key name.
|
||||
*
|
||||
* @param array $object
|
||||
* @param string $key
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function getMetadataByName(array $object, $key)
|
||||
{
|
||||
$method = 'get' . ucfirst($key);
|
||||
|
||||
if ( ! method_exists($this->filesystem, $method)) {
|
||||
throw new \InvalidArgumentException('Could not get meta-data for key: ' . $key);
|
||||
}
|
||||
|
||||
$object[$key] = $this->filesystem->{$method}($object['path']);
|
||||
|
||||
return $object;
|
||||
}
|
||||
}
|
||||
@@ -1,97 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Plugin;
|
||||
|
||||
use BadMethodCallException;
|
||||
use League\Flysystem\FilesystemInterface;
|
||||
use League\Flysystem\PluginInterface;
|
||||
use LogicException;
|
||||
|
||||
trait PluggableTrait
|
||||
{
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $plugins = [];
|
||||
|
||||
/**
|
||||
* Register a plugin.
|
||||
*
|
||||
* @param PluginInterface $plugin
|
||||
*
|
||||
* @throws LogicException
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function addPlugin(PluginInterface $plugin)
|
||||
{
|
||||
if ( ! method_exists($plugin, 'handle')) {
|
||||
throw new LogicException(get_class($plugin) . ' does not have a handle method.');
|
||||
}
|
||||
|
||||
$this->plugins[$plugin->getMethod()] = $plugin;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find a specific plugin.
|
||||
*
|
||||
* @param string $method
|
||||
*
|
||||
* @throws PluginNotFoundException
|
||||
*
|
||||
* @return PluginInterface
|
||||
*/
|
||||
protected function findPlugin($method)
|
||||
{
|
||||
if ( ! isset($this->plugins[$method])) {
|
||||
throw new PluginNotFoundException('Plugin not found for method: ' . $method);
|
||||
}
|
||||
|
||||
return $this->plugins[$method];
|
||||
}
|
||||
|
||||
/**
|
||||
* Invoke a plugin by method name.
|
||||
*
|
||||
* @param string $method
|
||||
* @param array $arguments
|
||||
* @param FilesystemInterface $filesystem
|
||||
*
|
||||
* @throws PluginNotFoundException
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
protected function invokePlugin($method, array $arguments, FilesystemInterface $filesystem)
|
||||
{
|
||||
$plugin = $this->findPlugin($method);
|
||||
$plugin->setFilesystem($filesystem);
|
||||
$callback = [$plugin, 'handle'];
|
||||
|
||||
return call_user_func_array($callback, $arguments);
|
||||
}
|
||||
|
||||
/**
|
||||
* Plugins pass-through.
|
||||
*
|
||||
* @param string $method
|
||||
* @param array $arguments
|
||||
*
|
||||
* @throws BadMethodCallException
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function __call($method, array $arguments)
|
||||
{
|
||||
try {
|
||||
return $this->invokePlugin($method, $arguments, $this);
|
||||
} catch (PluginNotFoundException $e) {
|
||||
throw new BadMethodCallException(
|
||||
'Call to undefined method '
|
||||
. get_class($this)
|
||||
. '::' . $method
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem\Plugin;
|
||||
|
||||
use LogicException;
|
||||
|
||||
class PluginNotFoundException extends LogicException
|
||||
{
|
||||
// This exception doesn't require additional information.
|
||||
}
|
||||
-20
@@ -1,20 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem;
|
||||
|
||||
interface PluginInterface
|
||||
{
|
||||
/**
|
||||
* Get the method name.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getMethod();
|
||||
|
||||
/**
|
||||
* Set the Filesystem object.
|
||||
*
|
||||
* @param FilesystemInterface $filesystem
|
||||
*/
|
||||
public function setFilesystem(FilesystemInterface $filesystem);
|
||||
}
|
||||
-88
@@ -1,88 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem;
|
||||
|
||||
interface ReadInterface
|
||||
{
|
||||
/**
|
||||
* Check whether a file exists.
|
||||
*
|
||||
* @param string $path
|
||||
*
|
||||
* @return array|bool|null
|
||||
*/
|
||||
public function has($path);
|
||||
|
||||
/**
|
||||
* Read a file.
|
||||
*
|
||||
* @param string $path
|
||||
*
|
||||
* @return array|false
|
||||
*/
|
||||
public function read($path);
|
||||
|
||||
/**
|
||||
* Read a file as a stream.
|
||||
*
|
||||
* @param string $path
|
||||
*
|
||||
* @return array|false
|
||||
*/
|
||||
public function readStream($path);
|
||||
|
||||
/**
|
||||
* List contents of a directory.
|
||||
*
|
||||
* @param string $directory
|
||||
* @param bool $recursive
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function listContents($directory = '', $recursive = false);
|
||||
|
||||
/**
|
||||
* Get all the meta data of a file or directory.
|
||||
*
|
||||
* @param string $path
|
||||
*
|
||||
* @return array|false
|
||||
*/
|
||||
public function getMetadata($path);
|
||||
|
||||
/**
|
||||
* Get the size of a file.
|
||||
*
|
||||
* @param string $path
|
||||
*
|
||||
* @return array|false
|
||||
*/
|
||||
public function getSize($path);
|
||||
|
||||
/**
|
||||
* Get the mimetype of a file.
|
||||
*
|
||||
* @param string $path
|
||||
*
|
||||
* @return array|false
|
||||
*/
|
||||
public function getMimetype($path);
|
||||
|
||||
/**
|
||||
* Get the last modified time of a file as a timestamp.
|
||||
*
|
||||
* @param string $path
|
||||
*
|
||||
* @return array|false
|
||||
*/
|
||||
public function getTimestamp($path);
|
||||
|
||||
/**
|
||||
* Get the visibility of a file.
|
||||
*
|
||||
* @param string $path
|
||||
*
|
||||
* @return array|false
|
||||
*/
|
||||
public function getVisibility($path);
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem;
|
||||
|
||||
use LogicException;
|
||||
|
||||
class RootViolationException extends LogicException implements FilesystemException
|
||||
{
|
||||
//
|
||||
}
|
||||
-39
@@ -1,39 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace League\Flysystem;
|
||||
|
||||
final class SafeStorage
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $hash;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected static $safeStorage = [];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->hash = spl_object_hash($this);
|
||||
static::$safeStorage[$this->hash] = [];
|
||||
}
|
||||
|
||||
public function storeSafely($key, $value)
|
||||
{
|
||||
static::$safeStorage[$this->hash][$key] = $value;
|
||||
}
|
||||
|
||||
public function retrieveSafely($key)
|
||||
{
|
||||
if (array_key_exists($key, static::$safeStorage[$this->hash])) {
|
||||
return static::$safeStorage[$this->hash][$key];
|
||||
}
|
||||
}
|
||||
|
||||
public function __destruct()
|
||||
{
|
||||
unset(static::$safeStorage[$this->hash]);
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user