[ Index ] |
PHP Cross Reference of Joomla 4.2.2 documentation |
[Summary view] [Print] [Text view]
1 <?php 2 3 declare(strict_types=1); 4 5 /* 6 * The MIT License (MIT) 7 * 8 * Copyright (c) 2018-2020 Spomky-Labs 9 * 10 * This software may be modified and distributed under the terms 11 * of the MIT license. See the LICENSE file for details. 12 */ 13 14 namespace CBOR; 15 16 use InvalidArgumentException; 17 use RuntimeException; 18 19 final class StringStream implements Stream 20 { 21 /** 22 * @var resource 23 */ 24 private $resource; 25 26 public function __construct(string $data) 27 { 28 $resource = fopen('php://memory', 'rb+'); 29 if (false === $resource) { 30 throw new RuntimeException('Unable to open the memory'); 31 } 32 $result = fwrite($resource, $data); 33 if (false === $result) { 34 throw new RuntimeException('Unable to write the memory'); 35 } 36 $result = rewind($resource); 37 if (false === $result) { 38 throw new RuntimeException('Unable to rewind the memory'); 39 } 40 $this->resource = $resource; 41 } 42 43 public function read(int $length): string 44 { 45 if (0 === $length) { 46 return ''; 47 } 48 $data = fread($this->resource, $length); 49 if (false === $data) { 50 throw new RuntimeException('Unable to read the memory'); 51 } 52 if (mb_strlen($data, '8bit') !== $length) { 53 throw new InvalidArgumentException(sprintf('Out of range. Expected: %d, read: %d.', $length, mb_strlen($data, '8bit'))); 54 } 55 56 return $data; 57 } 58 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Sep 7 05:41:13 2022 | Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer |