Subiendo proyecto completo sin restricciones de git ignore
This commit is contained in:
99
vendor/opis/closure/src/ClosureStream.php
vendored
Normal file
99
vendor/opis/closure/src/ClosureStream.php
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
<?php
|
||||
/* ===========================================================================
|
||||
* Copyright (c) 2018-2021 Zindex Software
|
||||
*
|
||||
* Licensed under the MIT License
|
||||
* =========================================================================== */
|
||||
|
||||
namespace Opis\Closure;
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
class ClosureStream
|
||||
{
|
||||
const STREAM_PROTO = 'closure';
|
||||
|
||||
protected static $isRegistered = false;
|
||||
|
||||
protected $content;
|
||||
|
||||
protected $length;
|
||||
|
||||
protected $pointer = 0;
|
||||
|
||||
function stream_open($path, $mode, $options, &$opened_path)
|
||||
{
|
||||
$this->content = "<?php\nreturn " . substr($path, strlen(static::STREAM_PROTO . '://')) . ";";
|
||||
$this->length = strlen($this->content);
|
||||
return true;
|
||||
}
|
||||
|
||||
public function stream_read($count)
|
||||
{
|
||||
$value = substr($this->content, $this->pointer, $count);
|
||||
$this->pointer += $count;
|
||||
return $value;
|
||||
}
|
||||
|
||||
public function stream_eof()
|
||||
{
|
||||
return $this->pointer >= $this->length;
|
||||
}
|
||||
|
||||
public function stream_set_option($option, $arg1, $arg2)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public function stream_stat()
|
||||
{
|
||||
$stat = stat(__FILE__);
|
||||
$stat[7] = $stat['size'] = $this->length;
|
||||
return $stat;
|
||||
}
|
||||
|
||||
public function url_stat($path, $flags)
|
||||
{
|
||||
$stat = stat(__FILE__);
|
||||
$stat[7] = $stat['size'] = $this->length;
|
||||
return $stat;
|
||||
}
|
||||
|
||||
public function stream_seek($offset, $whence = SEEK_SET)
|
||||
{
|
||||
$crt = $this->pointer;
|
||||
|
||||
switch ($whence) {
|
||||
case SEEK_SET:
|
||||
$this->pointer = $offset;
|
||||
break;
|
||||
case SEEK_CUR:
|
||||
$this->pointer += $offset;
|
||||
break;
|
||||
case SEEK_END:
|
||||
$this->pointer = $this->length + $offset;
|
||||
break;
|
||||
}
|
||||
|
||||
if ($this->pointer < 0 || $this->pointer >= $this->length) {
|
||||
$this->pointer = $crt;
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public function stream_tell()
|
||||
{
|
||||
return $this->pointer;
|
||||
}
|
||||
|
||||
public static function register()
|
||||
{
|
||||
if (!static::$isRegistered) {
|
||||
static::$isRegistered = stream_wrapper_register(static::STREAM_PROTO, __CLASS__);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user