├── .gitignore ├── src └── PhpValueObjects │ ├── Tests │ ├── Spatial │ │ ├── Polygon.php │ │ ├── MultiPolygon.php │ │ ├── MultiPolygonTest.php │ │ └── PolygonTest.php │ ├── Network │ │ ├── Url.php │ │ ├── Ipv4.php │ │ ├── Ipv6.php │ │ ├── TcpPort.php │ │ ├── Ipv4Test.php │ │ ├── UrlTest.php │ │ ├── Ipv6Test.php │ │ └── TcpPortTest.php │ ├── Identity │ │ ├── Md5.php │ │ ├── Sha1.php │ │ ├── Uuid.php │ │ ├── Email.php │ │ ├── Sha256.php │ │ ├── Enum.php │ │ ├── EnumTest.php │ │ ├── UuidTest.php │ │ ├── EmailTest.php │ │ ├── Sha1Test.php │ │ ├── Md5Test.php │ │ └── Sha256Test.php │ ├── ThrowException.php │ ├── Money │ │ ├── Currency.php │ │ └── CurrencyTest.php │ ├── Geography │ │ ├── Locale.php │ │ ├── Latitude.php │ │ ├── Longitude.php │ │ ├── CountryCode.php │ │ ├── LanguageCode.php │ │ ├── LanguageCodeTest.php │ │ ├── LatitudeTest.php │ │ ├── LongitudeTest.php │ │ ├── LocaleTest.php │ │ └── CountryCodeTest.php │ ├── Collection │ │ ├── Collection.php │ │ ├── ObjectForTest.php │ │ └── CollectionTest.php │ └── BaseUnitTestCase.php │ ├── Spatial │ ├── Exception │ │ └── InvalidPolygonException.php │ ├── MultiPolygon.php │ └── Polygon.php │ ├── Identity │ ├── Enum.php │ ├── Email.php │ ├── Md5.php │ ├── Sha1.php │ ├── Sha256.php │ └── Uuid.php │ ├── AbstractValueObject.php │ ├── Collection │ ├── Exception │ │ └── InvalidCollectionObjectException.php │ └── ObjectCollection.php │ ├── Network │ ├── TcpPort.php │ ├── Url.php │ ├── Ipv4.php │ └── Ipv6.php │ ├── Geography │ ├── Locale.php │ ├── Longitude.php │ ├── Latitude.php │ ├── CountryCode.php │ └── LanguageCode.php │ └── Money │ └── Currency.php ├── .travis.yml ├── .scrutinizer.yml ├── composer.json ├── phpunit.xml.dist ├── LICENSE ├── README.md └── composer.lock /.gitignore: -------------------------------------------------------------------------------- 1 | vendor 2 | bin 3 | .idea 4 | /.php_cs.cache 5 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Tests/Spatial/Polygon.php: -------------------------------------------------------------------------------- 1 | id = $id; 14 | } 15 | 16 | public function getId() 17 | { 18 | return $this->id; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Tests/BaseUnitTestCase.php: -------------------------------------------------------------------------------- 1 | faker = $this->faker ?: Factory::create(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | 3 | php: 4 | - '7.1' 5 | - '7.2' 6 | - '7.3' 7 | 8 | before_script: 9 | - composer self-update 10 | - composer install 11 | 12 | script: 13 | - bin/phpunit --coverage-clover=coverage.clover 14 | 15 | notifications: 16 | email: 17 | - brulics@gmail.com 18 | 19 | after_script: 20 | - wget https://scrutinizer-ci.com/ocular.phar 21 | - php ocular.phar code-coverage:upload --format=php-clover coverage.clover 22 | -------------------------------------------------------------------------------- /.scrutinizer.yml: -------------------------------------------------------------------------------- 1 | build: 2 | nodes: 3 | php71: 4 | environment: 5 | php: 6 | version: 7.1 7 | php72: 8 | environment: 9 | php: 10 | version: 7.2 11 | php73: 12 | environment: 13 | php: 14 | version: 7.3 15 | tests: 16 | override: 17 | - 18 | command: 'bin/phpunit --coverage-clover=coverage_clover' 19 | coverage: 20 | file: 'coverage_clover' 21 | format: 'clover' 22 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Identity/Enum.php: -------------------------------------------------------------------------------- 1 | validValues())) { 15 | $this->throwException($value); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Tests/Identity/Enum.php: -------------------------------------------------------------------------------- 1 | guard($value); 12 | $this->value = $value; 13 | } 14 | 15 | abstract protected function guard($value): void; 16 | abstract protected function throwException($value): void; 17 | 18 | public function value() 19 | { 20 | return $this->value; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Collection/Exception/InvalidCollectionObjectException.php: -------------------------------------------------------------------------------- 1 | 65535) { 19 | $this->throwException($value); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Network/Url.php: -------------------------------------------------------------------------------- 1 | throwException($value); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Identity/Email.php: -------------------------------------------------------------------------------- 1 | throwException($value); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Identity/Md5.php: -------------------------------------------------------------------------------- 1 | throwException($value); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Identity/Sha1.php: -------------------------------------------------------------------------------- 1 | throwException($value); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Identity/Sha256.php: -------------------------------------------------------------------------------- 1 | throwException($value); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Network/Ipv4.php: -------------------------------------------------------------------------------- 1 | throwException($value); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Network/Ipv6.php: -------------------------------------------------------------------------------- 1 | throwException($value); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Geography/Locale.php: -------------------------------------------------------------------------------- 1 | throwException($value); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Identity/Uuid.php: -------------------------------------------------------------------------------- 1 | throwException($value); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Geography/Longitude.php: -------------------------------------------------------------------------------- 1 | self::MAX_LONGITUDE) { 22 | $this->throwException($value); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Geography/Latitude.php: -------------------------------------------------------------------------------- 1 | self::MAX_LATITUDE) { 22 | $this->throwException($value); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Money/Currency.php: -------------------------------------------------------------------------------- 1 | throwException($value); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Tests/Identity/EnumTest.php: -------------------------------------------------------------------------------- 1 | expectException(\Exception::class); 16 | new Enum('invalid'); 17 | } 18 | 19 | /** 20 | * @test 21 | */ 22 | public function itShouldReturnEnumValue(): void 23 | { 24 | $data = Enum::VALID; 25 | $value = new Enum($data); 26 | 27 | $this->assertSame($data, $value->value()); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Geography/CountryCode.php: -------------------------------------------------------------------------------- 1 | throwException($value); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Geography/LanguageCode.php: -------------------------------------------------------------------------------- 1 | throwException($value); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bruli/php-value-objects", 3 | "description": "PHP Value objects to use for DDD domains.", 4 | "type": "library", 5 | "keywords": [ 6 | "php", 7 | "value", 8 | "objects", 9 | "DDD" 10 | ], 11 | "require": { 12 | "php": "^7.1", 13 | "beberlei/assert": "~3.0", 14 | "symfony/intl": "~4.0" 15 | }, 16 | "require-dev": { 17 | "phpunit/phpunit": "~7.0", 18 | "fzaninotto/faker": "^1.6", 19 | "friendsofphp/php-cs-fixer": "^2.15" 20 | }, 21 | "autoload": { 22 | "psr-0": { 23 | "PhpValueObjects": "src" 24 | } 25 | }, 26 | "license": "MIT", 27 | "authors": [ 28 | { 29 | "name": "Pablo Braulio", 30 | "email": "brulics@gmail.com" 31 | } 32 | ], 33 | "config": { 34 | "bin-dir": "bin/" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /phpunit.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | ./src/PhpValueObjects/Tests/ 17 | 18 | 19 | 20 | 21 | ./src/PhpValueObjects/*/ 22 | 23 | ./src/PhpValueObjects/Tests 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Tests/Identity/UuidTest.php: -------------------------------------------------------------------------------- 1 | faker()->uuid; 17 | 18 | $uuidVO = new Uuid($uuid); 19 | 20 | $this->assertSame($uuid, $uuidVO->value()); 21 | } 22 | 23 | public function invalidUuidProvider(): array 24 | { 25 | return [ 26 | [$this->faker()->address], 27 | ]; 28 | } 29 | 30 | /** 31 | * @test 32 | * 33 | * @dataProvider invalidUuidProvider 34 | */ 35 | public function itShouldThrowsException($data): void 36 | { 37 | $this->expectException(\Exception::class); 38 | 39 | new Uuid($data); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Tests/Network/Ipv4Test.php: -------------------------------------------------------------------------------- 1 | faker()->ipv4; 17 | 18 | $ipv4 = new Ipv4($ipAddress); 19 | 20 | $this->assertSame($ipAddress, $ipv4->value()); 21 | } 22 | 23 | public function invalidIpv4AddressProvider(): array 24 | { 25 | return [ 26 | [$this->faker()->ipv6] 27 | ]; 28 | } 29 | 30 | /** 31 | * @test 32 | * @dataProvider invalidIpv4AddressProvider 33 | */ 34 | public function itShouldThrowsException(string $data): void 35 | { 36 | $this->expectException(\Exception::class); 37 | 38 | new Ipv4($data); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Tests/Network/UrlTest.php: -------------------------------------------------------------------------------- 1 | faker()->url; 17 | 18 | $urlVO = new Url($url); 19 | 20 | $this->assertSame($url, $urlVO->value()); 21 | } 22 | 23 | public function invalidUrlProvider(): array 24 | { 25 | return [ 26 | [$this->faker()->email], 27 | [$this->faker()->phoneNumber], 28 | ]; 29 | } 30 | 31 | /** 32 | * @test 33 | * 34 | * @dataProvider invalidUrlProvider 35 | */ 36 | public function itShouldThrowsException(string $data): array 37 | { 38 | $this->expectException(\Exception::class); 39 | 40 | new Url($data); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Tests/Network/Ipv6Test.php: -------------------------------------------------------------------------------- 1 | faker()->ipv6; 16 | 17 | $ipv6 = new Ipv6($ipAddress); 18 | 19 | $this->assertSame($ipAddress, $ipv6->value()); 20 | } 21 | 22 | public function invalidIpv6Provider(): array 23 | { 24 | return [ 25 | [$this->faker()->ipv4], 26 | [$this->faker()->localIpv4], 27 | ]; 28 | } 29 | 30 | /** 31 | * @test 32 | * @dataProvider invalidIpv6Provider 33 | */ 34 | public function itShouldThrowsException(string $data): void 35 | { 36 | $this->expectException(\Exception::class); 37 | 38 | new Ipv6($data); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Spatial/MultiPolygon.php: -------------------------------------------------------------------------------- 1 | guard($value); 13 | } 14 | 15 | public function value(): array 16 | { 17 | return $this->value; 18 | } 19 | 20 | protected function guard(array $value): void 21 | { 22 | $values = []; 23 | 24 | foreach ($value as $item) { 25 | $values[] = new Polygon($item); 26 | } 27 | 28 | $this->value = $this->getScalarValues($values); 29 | } 30 | 31 | /** 32 | * @param Polygon[] $values 33 | * @return array 34 | */ 35 | private function getScalarValues(array $values): array 36 | { 37 | $scalar = []; 38 | 39 | foreach ($values as $value) { 40 | $scalar[] = $value->value(); 41 | } 42 | 43 | return $scalar; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Tests/Money/CurrencyTest.php: -------------------------------------------------------------------------------- 1 | assertSame($currencyCode, $currency->value()); 29 | } 30 | 31 | /** 32 | * @test 33 | */ 34 | public function itShouldThrowsException(): void 35 | { 36 | $this->expectException(\Exception::class); 37 | 38 | new Currency($this->faker()->address); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Tests/Identity/EmailTest.php: -------------------------------------------------------------------------------- 1 | faker()->email; 17 | 18 | $emailVO = new Email($email); 19 | 20 | $this->assertSame($email, $emailVO->value()); 21 | } 22 | 23 | public function invalidEmailProvider(): array 24 | { 25 | return [ 26 | [$this->faker()->numberBetween()], 27 | [$this->faker()->address], 28 | ]; 29 | } 30 | 31 | /** 32 | * @test 33 | * 34 | * @dataProvider invalidEmailProvider 35 | */ 36 | public function itShouldThrowsException(string $data): void 37 | { 38 | $this->expectException(\Exception::class); 39 | 40 | new Email($data); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Tests/Identity/Sha1Test.php: -------------------------------------------------------------------------------- 1 | faker()->sha1; 17 | 18 | $sha1VO = new Sha1($sha1); 19 | 20 | $this->assertSame($sha1, $sha1VO->value()); 21 | } 22 | 23 | public function invalidSha1Provider(): array 24 | { 25 | return [ 26 | [$this->faker()->md5], 27 | [$this->faker()->sha256], 28 | [$this->faker()->text], 29 | ]; 30 | } 31 | 32 | /** 33 | * @test 34 | * 35 | * @dataProvider invalidSha1Provider 36 | */ 37 | public function itShouldThrowsException(string $data): void 38 | { 39 | $this->expectException(\Exception::class); 40 | 41 | new Sha1($data); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Tests/Identity/Md5Test.php: -------------------------------------------------------------------------------- 1 | faker()->md5; 17 | 18 | $md5VO = new Md5($md5Hash); 19 | 20 | $this->assertSame($md5Hash, $md5VO->value()); 21 | } 22 | 23 | public function invalidMd5HashProvider(): array 24 | { 25 | return [ 26 | [$this->faker()->sha1], 27 | [$this->faker()->sha256], 28 | [$this->faker()->text], 29 | ]; 30 | } 31 | 32 | /** 33 | * @test 34 | * 35 | * @dataProvider invalidMd5HashProvider 36 | */ 37 | public function itShouldThrowsException(string $data): void 38 | { 39 | $this->expectException(\Exception::class); 40 | 41 | new Md5($data); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Tests/Identity/Sha256Test.php: -------------------------------------------------------------------------------- 1 | faker()->sha256; 17 | 18 | $sha256VO = new Sha256($sha256); 19 | 20 | $this->assertSame($sha256, $sha256VO->value()); 21 | } 22 | 23 | public function invalidSha256Provider(): array 24 | { 25 | return [ 26 | [$this->faker()->md5], 27 | [$this->faker()->sha1], 28 | [$this->faker()->text], 29 | ]; 30 | } 31 | 32 | /** 33 | * @test 34 | * @dataProvider invalidSha256Provider 35 | */ 36 | public function itShouldThrowsException(string $data): void 37 | { 38 | $this->expectException(\Exception::class); 39 | 40 | new Sha256($data); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Tests/Network/TcpPortTest.php: -------------------------------------------------------------------------------- 1 | faker()->numberBetween(0, 65535); 17 | 18 | $tcpPort = new TcpPort($portNumber); 19 | 20 | $this->assertSame($portNumber, $tcpPort->value()); 21 | } 22 | 23 | public function invalidTcpPortProvider(): array 24 | { 25 | return [ 26 | [$this->faker()->numberBetween(65536)], 27 | [-$this->faker()->numberBetween()], 28 | ]; 29 | } 30 | 31 | /** 32 | * @test 33 | * @dataProvider invalidTcpPortProvider 34 | */ 35 | public function itShouldThrowsException($data): void 36 | { 37 | $this->expectException(\Exception::class); 38 | 39 | new TcpPort($data); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Tests/Geography/LanguageCodeTest.php: -------------------------------------------------------------------------------- 1 | faker()->languageCode; 17 | 18 | $langVO = new LanguageCode($language); 19 | 20 | $this->assertSame($language, $langVO->value()); 21 | } 22 | 23 | public function invalidLanguageCodeProvider(): array 24 | { 25 | return [ 26 | [$this->faker()->address], 27 | [$this->faker()->numberBetween()], 28 | ]; 29 | } 30 | 31 | /** 32 | * @test 33 | * @dataProvider invalidLanguageCodeProvider 34 | */ 35 | public function isShouldThrowsException(string $data): void 36 | { 37 | $this->expectException(\Exception::class); 38 | 39 | new LanguageCode($data); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Tests/Geography/LatitudeTest.php: -------------------------------------------------------------------------------- 1 | faker()->latitude; 17 | 18 | $latVo = new Latitude($latitude); 19 | 20 | $this->assertSame($latitude, $latVo->value()); 21 | } 22 | 23 | public function invalidLatitudeProvider(): array 24 | { 25 | return [ 26 | [$this->faker()->randomFloat(4, -200, -95)], 27 | [$this->faker()->randomFloat(4, 100, 200)] 28 | ]; 29 | } 30 | 31 | /** 32 | * @test 33 | * 34 | * @dataProvider invalidLatitudeProvider 35 | */ 36 | public function itShouldThrowsException(float $data): void 37 | { 38 | $this->expectException(\Exception::class); 39 | 40 | new Latitude($data); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Tests/Geography/LongitudeTest.php: -------------------------------------------------------------------------------- 1 | faker()->longitude; 17 | 18 | $longVO = new Longitude($longitude); 19 | 20 | $this->assertSame($longitude, $longVO->value()); 21 | } 22 | 23 | public function invalidLongitudeProvider(): array 24 | { 25 | return [ 26 | [$this->faker()->randomFloat(4, -200, -185)], 27 | [$this->faker()->randomFloat(4, 185, 200)] 28 | ]; 29 | } 30 | 31 | /** 32 | * @test 33 | * 34 | * @dataProvider invalidLongitudeProvider 35 | */ 36 | public function itShouldThrowsException($data): void 37 | { 38 | $this->expectException(\Exception::class); 39 | 40 | new Longitude($data); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 bruli 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Spatial/Polygon.php: -------------------------------------------------------------------------------- 1 | guard($value); 15 | $this->value = $value; 16 | } 17 | 18 | public function value(): array 19 | { 20 | return $this->value; 21 | } 22 | 23 | protected function guard($value): void 24 | { 25 | if (3 > count($value)) { 26 | throw new InvalidPolygonException(); 27 | } 28 | 29 | $first = $value[0]; 30 | $end = end($value); 31 | 32 | foreach ($value as $point) { 33 | if (false === is_array($point)) { 34 | throw new InvalidPolygonException(); 35 | } 36 | 37 | if (2 !== count($point)) { 38 | throw new InvalidPolygonException(); 39 | } 40 | } 41 | 42 | if (false === ($first == $end)) { 43 | throw new InvalidPolygonException(); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Tests/Geography/LocaleTest.php: -------------------------------------------------------------------------------- 1 | assertSame($locale, $localeVO->value()); 30 | } 31 | 32 | public function invalidLocaleProvider(): array 33 | { 34 | return [ 35 | [$this->faker()->address], 36 | [$this->faker()->numberBetween()], 37 | ]; 38 | } 39 | 40 | /** 41 | * @test 42 | * @dataProvider invalidLocaleProvider 43 | */ 44 | public function itShouldThrowsException(string $locale): void 45 | { 46 | $this->expectException(\Exception::class); 47 | 48 | new Locale($locale); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Tests/Geography/CountryCodeTest.php: -------------------------------------------------------------------------------- 1 | assertSame($country, $countryVO->value()); 31 | } 32 | 33 | public function invalidCountryCodeProvider(): array 34 | { 35 | return [ 36 | [$this->faker()->address], 37 | [$this->faker()->numberBetween()] 38 | ]; 39 | } 40 | 41 | /** 42 | * @test 43 | * @dataProvider invalidCountryCodeProvider 44 | */ 45 | public function itShouldThrowsException(string $data): void 46 | { 47 | $this->expectException(\Exception::class); 48 | 49 | new CountryCode($data); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Tests/Spatial/MultiPolygonTest.php: -------------------------------------------------------------------------------- 1 | expectException(InvalidPolygonException::class); 26 | 27 | new MultiPolygon($data); 28 | } 29 | 30 | /** 31 | * @test 32 | */ 33 | public function itShouldWorksFine(): void 34 | { 35 | $latitude1 = $this->faker()->latitude; 36 | $latitude2 = $this->faker()->latitude; 37 | $longitude1 = $this->faker()->longitude; 38 | $longitude2 = $this->faker()->longitude; 39 | 40 | $data = [ 41 | [ 42 | [$latitude1, $longitude1], 43 | [$this->faker()->latitude, $this->faker()->longitude], 44 | [$this->faker()->latitude, $this->faker()->longitude], 45 | [$latitude1, $longitude1], 46 | ], 47 | [ 48 | [$latitude2, $longitude2], 49 | [$this->faker()->latitude, $this->faker()->longitude], 50 | [$this->faker()->latitude, $this->faker()->longitude], 51 | [$latitude2, $longitude2] 52 | ] 53 | ]; 54 | 55 | $multiPolygon = new MultiPolygon($data); 56 | $this->assertNotNull($multiPolygon->value()); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | php-value-objects 2 | ================= 3 | [![Build Status](https://travis-ci.org/bruli/php-value-objects.svg?branch=master)](https://travis-ci.org/bruli/php-value-objects) 4 | [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/bruli/php-value-objects/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/bruli/php-value-objects/?branch=master) 5 | [![Code Coverage](https://scrutinizer-ci.com/g/bruli/php-value-objects/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/bruli/php-value-objects/?branch=master) 6 | [![Latest Stable Version](https://poser.pugx.org/bruli/php-value-objects/v/stable)](https://packagist.org/packages/bruli/php-value-objects) 7 | [![Total Downloads](https://poser.pugx.org/bruli/php-value-objects/downloads)](https://packagist.org/packages/bruli/php-value-objects) 8 | [![Latest Unstable Version](https://poser.pugx.org/bruli/php-value-objects/v/unstable)](https://packagist.org/packages/bruli/php-value-objects) 9 | [![License](https://poser.pugx.org/bruli/php-value-objects/license)](https://packagist.org/packages/bruli/php-value-objects) 10 | [![SensioLabsInsight](https://insight.sensiolabs.com/projects/bb531dff-0f8b-435c-9964-2f0076c1d1c6/mini.png)](https://insight.sensiolabs.com/projects/bb531dff-0f8b-435c-9964-2f0076c1d1c6) 11 | [![Donate button](https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif)](https://www.paypal.me/brulics) 12 | 13 | Php value objects to use for DDD domains. 14 | 15 | ## Installation 16 | 17 | ```bash 18 | $ composer require bruli/php-value-objects 19 | ``` 20 | 21 | ## Credits 22 | 23 | * Pablo Braulio ([@brulics](https://twitter.com/brulics)) 24 | * [All contributors](https://github.com/bruli/php-value-objects/graphs/contributors) 25 | 26 | ## License 27 | 28 | php-value-objects is released under the [MIT License](https://opensource.org/licenses/MIT). See the bundled LICENSE file for details. 29 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Tests/Spatial/PolygonTest.php: -------------------------------------------------------------------------------- 1 | faker()->latitude; 15 | $longitude = $this->faker()->longitude; 16 | return [ 17 | [ 18 | 'no_two_elements_by_array' => [ 19 | [$this->faker()->latitude], 20 | [$this->faker()->lastName, $this->faker()->longitude], 21 | [$this->faker()->lastName, $this->faker()->longitude] 22 | ] 23 | ], 24 | [ 25 | 'no_same_start_end_data' => [ 26 | [$this->faker()->latitude, $this->faker()->longitude], 27 | [$this->faker()->latitude, $this->faker()->longitude], 28 | [$this->faker()->latitude, $this->faker()->randomFloat()], 29 | ] 30 | ], 31 | [ 32 | 'no_polygon' => [ 33 | [$latitude, $longitude], 34 | [$latitude, $longitude], 35 | ] 36 | ], 37 | [ 38 | 'element_no_array' => [ 39 | [$latitude, $longitude], 40 | 'string', 41 | [$this->faker()->lastName, $this->faker()->longitude], 42 | [$latitude, $longitude] 43 | ] 44 | ] 45 | ]; 46 | } 47 | 48 | /** 49 | * @test 50 | * @dataProvider invalidDataProvider 51 | */ 52 | public function itShouldThrowInvalidPolygonException($values): void 53 | { 54 | $this->expectException(InvalidPolygonException::class); 55 | 56 | new Polygon($values); 57 | } 58 | 59 | /** 60 | * @test 61 | */ 62 | public function itShouldWorksFine(): void 63 | { 64 | $latitude = $this->faker()->latitude; 65 | $longitude = $this->faker()->longitude; 66 | 67 | $data = [ 68 | [$latitude, $longitude], 69 | [$this->faker()->latitude, $this->faker()->longitude], 70 | [$latitude, $longitude] 71 | ]; 72 | 73 | $polygon = new Polygon($data); 74 | 75 | $this->assertSame($data, $polygon->value()); 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Collection/ObjectCollection.php: -------------------------------------------------------------------------------- 1 | setClassName())) { 17 | throw new InvalidCollectionObjectException($object, $this->setClassName()); 18 | } 19 | } 20 | $this->objects = $objects; 21 | } 22 | 23 | public static function init(): self 24 | { 25 | return new static([]); 26 | } 27 | 28 | abstract protected function setClassName(): string; 29 | 30 | public function getCollection(): array 31 | { 32 | return $this->objects; 33 | } 34 | 35 | public function first() 36 | { 37 | return reset($this->objects); 38 | } 39 | 40 | public function last() 41 | { 42 | return end($this->objects); 43 | } 44 | 45 | public function key() 46 | { 47 | return key($this->getCollection()); 48 | } 49 | 50 | public function next() 51 | { 52 | return next($this->objects); 53 | } 54 | 55 | public function current() 56 | { 57 | return current($this->objects); 58 | } 59 | 60 | public function remove($key) 61 | { 62 | if (!isset($this->objects[$key]) && !array_key_exists($key, $this->objects)) { 63 | return null; 64 | } 65 | 66 | $removed = $this->objects[$key]; 67 | unset($this->objects[$key]); 68 | 69 | return $removed; 70 | } 71 | 72 | public function removeElement($element): bool 73 | { 74 | $key = array_search($element, $this->objects, true); 75 | 76 | if ($key === false) { 77 | return false; 78 | } 79 | 80 | unset($this->objects[$key]); 81 | 82 | return true; 83 | } 84 | 85 | public function contains($element): bool 86 | { 87 | return in_array($element, $this->objects, true); 88 | } 89 | 90 | public function get($key) 91 | { 92 | return $this->objects[$key] ?? null; 93 | } 94 | 95 | public function getKeys() 96 | { 97 | return array_keys($this->objects); 98 | } 99 | 100 | public function getValues() 101 | { 102 | return array_values($this->objects); 103 | } 104 | 105 | public function count(): int 106 | { 107 | return count($this->objects); 108 | } 109 | 110 | public function set($key, $value): void 111 | { 112 | $this->objects[$key] = $value; 113 | } 114 | 115 | public function add($element): void 116 | { 117 | $this->objects[] = $element; 118 | } 119 | 120 | public function isEmpty(): bool 121 | { 122 | return empty($this->objects); 123 | } 124 | 125 | public function clear(): void 126 | { 127 | $this->objects = []; 128 | } 129 | 130 | public function applyReverse() 131 | { 132 | $this->objects = array_reverse($this->getCollection()); 133 | } 134 | 135 | public function reverse(): array 136 | { 137 | return array_reverse($this->objects); 138 | } 139 | } 140 | -------------------------------------------------------------------------------- /src/PhpValueObjects/Tests/Collection/CollectionTest.php: -------------------------------------------------------------------------------- 1 | objects = [ 19 | new ObjectForTest(1), 20 | new ObjectForTest(2), 21 | new ObjectForTest(3), 22 | new ObjectForTest(4), 23 | new ObjectForTest(5), 24 | ]; 25 | $this->collection = new Collection($this->objects); 26 | } 27 | 28 | protected function tearDown() 29 | { 30 | parent::tearDown(); 31 | $this->objects = null; 32 | $this->collection = null; 33 | } 34 | 35 | /** 36 | * @test 37 | */ 38 | public function itShouldThrowInvalidCollectionObjectException(): void 39 | { 40 | $this->expectException(InvalidCollectionObjectException::class); 41 | 42 | new Collection([new stdClass(), new stdClass()]); 43 | } 44 | 45 | /** 46 | * @test 47 | */ 48 | public function itShouldReturnCollection(): void 49 | { 50 | $this->assertSame($this->objects, $this->collection->getCollection()); 51 | } 52 | 53 | /** 54 | * @test 55 | */ 56 | public function itShouldReturnEmptyCollection(): void 57 | { 58 | $collection = new Collection([]); 59 | 60 | $this->assertEmpty($collection->getCollection()); 61 | } 62 | 63 | /** 64 | * @test 65 | */ 66 | public function itShouldReturnFirst(): void 67 | { 68 | /** @var ObjectForTest $object */ 69 | $object = $this->collection->first(); 70 | $this->assertSame(1, $object->getId()); 71 | } 72 | 73 | /** 74 | * @test 75 | */ 76 | public function itShouldReturnLast(): void 77 | { 78 | /** @var ObjectForTest $object */ 79 | $object = $this->collection->last(); 80 | $this->assertSame(5, $object->getId()); 81 | } 82 | 83 | /** 84 | * @test 85 | */ 86 | public function itShouldReturnKey(): void 87 | { 88 | $key = $this->collection->key(); 89 | $this->assertSame(0, $key); 90 | } 91 | 92 | /** 93 | * @test 94 | */ 95 | public function itShouldReturnNext(): void 96 | { 97 | $first = $this->collection->first(); 98 | $this->assertSame(1, $first->getId()); 99 | $next = $this->collection->next(); 100 | $this->assertSame(2, $next->getId()); 101 | } 102 | 103 | /** 104 | * @test 105 | */ 106 | public function itShouldReturnCurrent(): void 107 | { 108 | $this->collection->first(); 109 | $this->collection->next(); 110 | $current = $this->collection->current(); 111 | $this->assertSame(2, $current->getId()); 112 | } 113 | 114 | /** 115 | * @test 116 | */ 117 | public function itShouldRemoveKey(): void 118 | { 119 | $this->collection->remove(4); 120 | $this->assertFalse(array_key_exists(4, $this->collection->getCollection())); 121 | } 122 | 123 | /** 124 | * @test 125 | */ 126 | public function itShouldRemoveElement(): void 127 | { 128 | $element = $this->collection->first(); 129 | $response = $this->collection->removeElement($element); 130 | $this->assertTrue($response); 131 | } 132 | 133 | /** 134 | * @test 135 | */ 136 | public function itShouldReturnContains(): void 137 | { 138 | $element = $this->collection->last(); 139 | $this->assertTrue($this->collection->contains($element)); 140 | } 141 | 142 | /** 143 | * @test 144 | */ 145 | public function itShouldReturnElementByKey(): void 146 | { 147 | $this->assertInstanceOf(ObjectForTest::class, $this->collection->get(3)); 148 | $this->assertNull($this->collection->get(25)); 149 | } 150 | 151 | /** 152 | * @test 153 | */ 154 | public function itShouldReturnKeys(): void 155 | { 156 | $keys = $this->collection->getKeys(); 157 | $this->assertNotEmpty($keys); 158 | } 159 | 160 | /** 161 | * @test 162 | */ 163 | public function itShouldReturnValues(): void 164 | { 165 | $values = $this->collection->getValues(); 166 | $this->assertNotEmpty($values); 167 | } 168 | 169 | /** 170 | * @test 171 | */ 172 | public function itShouldReturnCount(): void 173 | { 174 | $this->assertSame(5, $this->collection->count()); 175 | } 176 | 177 | /** 178 | * @test 179 | */ 180 | public function itShouldSetObject(): void 181 | { 182 | $new = new ObjectForTest(7); 183 | $this->collection->set(3, $new); 184 | $this->assertSame($this->collection->get(3)->getId(), $new->getId()); 185 | } 186 | 187 | /** 188 | * @test 189 | */ 190 | public function itShouldAddObject(): void 191 | { 192 | $new = new ObjectForTest(25); 193 | $this->collection->add($new); 194 | $this->assertSame($new->getId(), $this->collection->last()->getId()); 195 | } 196 | 197 | /** 198 | * @test 199 | */ 200 | public function itShouldClearObjects(): void 201 | { 202 | $this->assertFalse($this->collection->isEmpty()); 203 | $this->collection->clear(); 204 | $this->assertTrue($this->collection->isEmpty()); 205 | } 206 | 207 | /** 208 | * @test 209 | */ 210 | public function itShouldApplyReverseObjects(): void 211 | { 212 | $this->collection->add(new ObjectForTest(1)); 213 | $this->collection->add(new ObjectForTest(2)); 214 | $this->collection->add(new ObjectForTest(3)); 215 | 216 | $this->collection->applyReverse(); 217 | $this->assertSame(1, $this->collection->last()->getId()); 218 | } 219 | 220 | /** 221 | * @test 222 | */ 223 | public function itShouldReverseObjects(): void 224 | { 225 | $this->collection->add(new ObjectForTest(1)); 226 | $this->collection->add(new ObjectForTest(2)); 227 | $this->collection->add(new ObjectForTest(3)); 228 | 229 | $data = $this->collection->reverse(); 230 | $this->assertSame(1, end($data)->getId()); 231 | } 232 | 233 | 234 | } 235 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "5ebe4b123aca3457bd13d15f99248834", 8 | "packages": [ 9 | { 10 | "name": "beberlei/assert", 11 | "version": "v3.2.1", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/beberlei/assert.git", 15 | "reference": "ce139b6bf8f07fb8389d2c8e15b98dc24fdd93c7" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/beberlei/assert/zipball/ce139b6bf8f07fb8389d2c8e15b98dc24fdd93c7", 20 | "reference": "ce139b6bf8f07fb8389d2c8e15b98dc24fdd93c7", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": "^7" 25 | }, 26 | "require-dev": { 27 | "friendsofphp/php-cs-fixer": "*", 28 | "phpstan/phpstan-shim": "*", 29 | "phpunit/phpunit": ">=6.0.0 <8" 30 | }, 31 | "type": "library", 32 | "autoload": { 33 | "psr-4": { 34 | "Assert\\": "lib/Assert" 35 | }, 36 | "files": [ 37 | "lib/Assert/functions.php" 38 | ] 39 | }, 40 | "notification-url": "https://packagist.org/downloads/", 41 | "license": [ 42 | "BSD-2-Clause" 43 | ], 44 | "authors": [ 45 | { 46 | "name": "Benjamin Eberlei", 47 | "email": "kontakt@beberlei.de", 48 | "role": "Lead Developer" 49 | }, 50 | { 51 | "name": "Richard Quadling", 52 | "email": "rquadling@gmail.com", 53 | "role": "Collaborator" 54 | } 55 | ], 56 | "description": "Thin assertion library for input validation in business models.", 57 | "keywords": [ 58 | "assert", 59 | "assertion", 60 | "validation" 61 | ], 62 | "time": "2019-05-28T15:18:28+00:00" 63 | }, 64 | { 65 | "name": "symfony/intl", 66 | "version": "v4.3.2", 67 | "source": { 68 | "type": "git", 69 | "url": "https://github.com/symfony/intl.git", 70 | "reference": "ae61816fdc00809928bb45ebc5df593d7e0878ad" 71 | }, 72 | "dist": { 73 | "type": "zip", 74 | "url": "https://api.github.com/repos/symfony/intl/zipball/ae61816fdc00809928bb45ebc5df593d7e0878ad", 75 | "reference": "ae61816fdc00809928bb45ebc5df593d7e0878ad", 76 | "shasum": "" 77 | }, 78 | "require": { 79 | "php": "^7.1.3", 80 | "symfony/polyfill-intl-icu": "~1.0" 81 | }, 82 | "require-dev": { 83 | "symfony/filesystem": "~3.4|~4.0" 84 | }, 85 | "suggest": { 86 | "ext-intl": "to use the component with locales other than \"en\"" 87 | }, 88 | "type": "library", 89 | "extra": { 90 | "branch-alias": { 91 | "dev-master": "4.3-dev" 92 | } 93 | }, 94 | "autoload": { 95 | "psr-4": { 96 | "Symfony\\Component\\Intl\\": "" 97 | }, 98 | "classmap": [ 99 | "Resources/stubs" 100 | ], 101 | "exclude-from-classmap": [ 102 | "/Tests/" 103 | ] 104 | }, 105 | "notification-url": "https://packagist.org/downloads/", 106 | "license": [ 107 | "MIT" 108 | ], 109 | "authors": [ 110 | { 111 | "name": "Bernhard Schussek", 112 | "email": "bschussek@gmail.com" 113 | }, 114 | { 115 | "name": "Eriksen Costa", 116 | "email": "eriksen.costa@infranology.com.br" 117 | }, 118 | { 119 | "name": "Igor Wiedler", 120 | "email": "igor@wiedler.ch" 121 | }, 122 | { 123 | "name": "Symfony Community", 124 | "homepage": "https://symfony.com/contributors" 125 | } 126 | ], 127 | "description": "A PHP replacement layer for the C intl extension that includes additional data from the ICU library.", 128 | "homepage": "https://symfony.com", 129 | "keywords": [ 130 | "i18n", 131 | "icu", 132 | "internationalization", 133 | "intl", 134 | "l10n", 135 | "localization" 136 | ], 137 | "time": "2019-06-17T17:37:00+00:00" 138 | }, 139 | { 140 | "name": "symfony/polyfill-intl-icu", 141 | "version": "v1.11.0", 142 | "source": { 143 | "type": "git", 144 | "url": "https://github.com/symfony/polyfill-intl-icu.git", 145 | "reference": "999878a3a09d73cae157b0cf89bb6fb2cc073057" 146 | }, 147 | "dist": { 148 | "type": "zip", 149 | "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/999878a3a09d73cae157b0cf89bb6fb2cc073057", 150 | "reference": "999878a3a09d73cae157b0cf89bb6fb2cc073057", 151 | "shasum": "" 152 | }, 153 | "require": { 154 | "php": ">=5.3.3", 155 | "symfony/intl": "~2.3|~3.0|~4.0" 156 | }, 157 | "suggest": { 158 | "ext-intl": "For best performance" 159 | }, 160 | "type": "library", 161 | "extra": { 162 | "branch-alias": { 163 | "dev-master": "1.9-dev" 164 | } 165 | }, 166 | "autoload": { 167 | "files": [ 168 | "bootstrap.php" 169 | ] 170 | }, 171 | "notification-url": "https://packagist.org/downloads/", 172 | "license": [ 173 | "MIT" 174 | ], 175 | "authors": [ 176 | { 177 | "name": "Nicolas Grekas", 178 | "email": "p@tchwork.com" 179 | }, 180 | { 181 | "name": "Symfony Community", 182 | "homepage": "https://symfony.com/contributors" 183 | } 184 | ], 185 | "description": "Symfony polyfill for intl's ICU-related data and classes", 186 | "homepage": "https://symfony.com", 187 | "keywords": [ 188 | "compatibility", 189 | "icu", 190 | "intl", 191 | "polyfill", 192 | "portable", 193 | "shim" 194 | ], 195 | "time": "2019-01-07T19:39:47+00:00" 196 | } 197 | ], 198 | "packages-dev": [ 199 | { 200 | "name": "composer/semver", 201 | "version": "1.5.0", 202 | "source": { 203 | "type": "git", 204 | "url": "https://github.com/composer/semver.git", 205 | "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e" 206 | }, 207 | "dist": { 208 | "type": "zip", 209 | "url": "https://api.github.com/repos/composer/semver/zipball/46d9139568ccb8d9e7cdd4539cab7347568a5e2e", 210 | "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e", 211 | "shasum": "" 212 | }, 213 | "require": { 214 | "php": "^5.3.2 || ^7.0" 215 | }, 216 | "require-dev": { 217 | "phpunit/phpunit": "^4.5 || ^5.0.5", 218 | "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" 219 | }, 220 | "type": "library", 221 | "extra": { 222 | "branch-alias": { 223 | "dev-master": "1.x-dev" 224 | } 225 | }, 226 | "autoload": { 227 | "psr-4": { 228 | "Composer\\Semver\\": "src" 229 | } 230 | }, 231 | "notification-url": "https://packagist.org/downloads/", 232 | "license": [ 233 | "MIT" 234 | ], 235 | "authors": [ 236 | { 237 | "name": "Nils Adermann", 238 | "email": "naderman@naderman.de", 239 | "homepage": "http://www.naderman.de" 240 | }, 241 | { 242 | "name": "Jordi Boggiano", 243 | "email": "j.boggiano@seld.be", 244 | "homepage": "http://seld.be" 245 | }, 246 | { 247 | "name": "Rob Bast", 248 | "email": "rob.bast@gmail.com", 249 | "homepage": "http://robbast.nl" 250 | } 251 | ], 252 | "description": "Semver library that offers utilities, version constraint parsing and validation.", 253 | "keywords": [ 254 | "semantic", 255 | "semver", 256 | "validation", 257 | "versioning" 258 | ], 259 | "time": "2019-03-19T17:25:45+00:00" 260 | }, 261 | { 262 | "name": "composer/xdebug-handler", 263 | "version": "1.3.3", 264 | "source": { 265 | "type": "git", 266 | "url": "https://github.com/composer/xdebug-handler.git", 267 | "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f" 268 | }, 269 | "dist": { 270 | "type": "zip", 271 | "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/46867cbf8ca9fb8d60c506895449eb799db1184f", 272 | "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f", 273 | "shasum": "" 274 | }, 275 | "require": { 276 | "php": "^5.3.2 || ^7.0", 277 | "psr/log": "^1.0" 278 | }, 279 | "require-dev": { 280 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" 281 | }, 282 | "type": "library", 283 | "autoload": { 284 | "psr-4": { 285 | "Composer\\XdebugHandler\\": "src" 286 | } 287 | }, 288 | "notification-url": "https://packagist.org/downloads/", 289 | "license": [ 290 | "MIT" 291 | ], 292 | "authors": [ 293 | { 294 | "name": "John Stevenson", 295 | "email": "john-stevenson@blueyonder.co.uk" 296 | } 297 | ], 298 | "description": "Restarts a process without xdebug.", 299 | "keywords": [ 300 | "Xdebug", 301 | "performance" 302 | ], 303 | "time": "2019-05-27T17:52:04+00:00" 304 | }, 305 | { 306 | "name": "doctrine/annotations", 307 | "version": "v1.6.1", 308 | "source": { 309 | "type": "git", 310 | "url": "https://github.com/doctrine/annotations.git", 311 | "reference": "53120e0eb10355388d6ccbe462f1fea34ddadb24" 312 | }, 313 | "dist": { 314 | "type": "zip", 315 | "url": "https://api.github.com/repos/doctrine/annotations/zipball/53120e0eb10355388d6ccbe462f1fea34ddadb24", 316 | "reference": "53120e0eb10355388d6ccbe462f1fea34ddadb24", 317 | "shasum": "" 318 | }, 319 | "require": { 320 | "doctrine/lexer": "1.*", 321 | "php": "^7.1" 322 | }, 323 | "require-dev": { 324 | "doctrine/cache": "1.*", 325 | "phpunit/phpunit": "^6.4" 326 | }, 327 | "type": "library", 328 | "extra": { 329 | "branch-alias": { 330 | "dev-master": "1.6.x-dev" 331 | } 332 | }, 333 | "autoload": { 334 | "psr-4": { 335 | "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" 336 | } 337 | }, 338 | "notification-url": "https://packagist.org/downloads/", 339 | "license": [ 340 | "MIT" 341 | ], 342 | "authors": [ 343 | { 344 | "name": "Roman Borschel", 345 | "email": "roman@code-factory.org" 346 | }, 347 | { 348 | "name": "Benjamin Eberlei", 349 | "email": "kontakt@beberlei.de" 350 | }, 351 | { 352 | "name": "Guilherme Blanco", 353 | "email": "guilhermeblanco@gmail.com" 354 | }, 355 | { 356 | "name": "Jonathan Wage", 357 | "email": "jonwage@gmail.com" 358 | }, 359 | { 360 | "name": "Johannes Schmitt", 361 | "email": "schmittjoh@gmail.com" 362 | } 363 | ], 364 | "description": "Docblock Annotations Parser", 365 | "homepage": "http://www.doctrine-project.org", 366 | "keywords": [ 367 | "annotations", 368 | "docblock", 369 | "parser" 370 | ], 371 | "time": "2019-03-25T19:12:02+00:00" 372 | }, 373 | { 374 | "name": "doctrine/instantiator", 375 | "version": "1.2.0", 376 | "source": { 377 | "type": "git", 378 | "url": "https://github.com/doctrine/instantiator.git", 379 | "reference": "a2c590166b2133a4633738648b6b064edae0814a" 380 | }, 381 | "dist": { 382 | "type": "zip", 383 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a", 384 | "reference": "a2c590166b2133a4633738648b6b064edae0814a", 385 | "shasum": "" 386 | }, 387 | "require": { 388 | "php": "^7.1" 389 | }, 390 | "require-dev": { 391 | "doctrine/coding-standard": "^6.0", 392 | "ext-pdo": "*", 393 | "ext-phar": "*", 394 | "phpbench/phpbench": "^0.13", 395 | "phpstan/phpstan-phpunit": "^0.11", 396 | "phpstan/phpstan-shim": "^0.11", 397 | "phpunit/phpunit": "^7.0" 398 | }, 399 | "type": "library", 400 | "extra": { 401 | "branch-alias": { 402 | "dev-master": "1.2.x-dev" 403 | } 404 | }, 405 | "autoload": { 406 | "psr-4": { 407 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 408 | } 409 | }, 410 | "notification-url": "https://packagist.org/downloads/", 411 | "license": [ 412 | "MIT" 413 | ], 414 | "authors": [ 415 | { 416 | "name": "Marco Pivetta", 417 | "email": "ocramius@gmail.com", 418 | "homepage": "http://ocramius.github.com/" 419 | } 420 | ], 421 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 422 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html", 423 | "keywords": [ 424 | "constructor", 425 | "instantiate" 426 | ], 427 | "time": "2019-03-17T17:37:11+00:00" 428 | }, 429 | { 430 | "name": "doctrine/lexer", 431 | "version": "1.0.2", 432 | "source": { 433 | "type": "git", 434 | "url": "https://github.com/doctrine/lexer.git", 435 | "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8" 436 | }, 437 | "dist": { 438 | "type": "zip", 439 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/1febd6c3ef84253d7c815bed85fc622ad207a9f8", 440 | "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8", 441 | "shasum": "" 442 | }, 443 | "require": { 444 | "php": ">=5.3.2" 445 | }, 446 | "require-dev": { 447 | "phpunit/phpunit": "^4.5" 448 | }, 449 | "type": "library", 450 | "extra": { 451 | "branch-alias": { 452 | "dev-master": "1.0.x-dev" 453 | } 454 | }, 455 | "autoload": { 456 | "psr-4": { 457 | "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" 458 | } 459 | }, 460 | "notification-url": "https://packagist.org/downloads/", 461 | "license": [ 462 | "MIT" 463 | ], 464 | "authors": [ 465 | { 466 | "name": "Roman Borschel", 467 | "email": "roman@code-factory.org" 468 | }, 469 | { 470 | "name": "Guilherme Blanco", 471 | "email": "guilhermeblanco@gmail.com" 472 | }, 473 | { 474 | "name": "Johannes Schmitt", 475 | "email": "schmittjoh@gmail.com" 476 | } 477 | ], 478 | "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", 479 | "homepage": "https://www.doctrine-project.org/projects/lexer.html", 480 | "keywords": [ 481 | "annotations", 482 | "docblock", 483 | "lexer", 484 | "parser", 485 | "php" 486 | ], 487 | "time": "2019-06-08T11:03:04+00:00" 488 | }, 489 | { 490 | "name": "friendsofphp/php-cs-fixer", 491 | "version": "v2.15.1", 492 | "source": { 493 | "type": "git", 494 | "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", 495 | "reference": "20064511ab796593a3990669eff5f5b535001f7c" 496 | }, 497 | "dist": { 498 | "type": "zip", 499 | "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/20064511ab796593a3990669eff5f5b535001f7c", 500 | "reference": "20064511ab796593a3990669eff5f5b535001f7c", 501 | "shasum": "" 502 | }, 503 | "require": { 504 | "composer/semver": "^1.4", 505 | "composer/xdebug-handler": "^1.2", 506 | "doctrine/annotations": "^1.2", 507 | "ext-json": "*", 508 | "ext-tokenizer": "*", 509 | "php": "^5.6 || ^7.0", 510 | "php-cs-fixer/diff": "^1.3", 511 | "symfony/console": "^3.4.17 || ^4.1.6", 512 | "symfony/event-dispatcher": "^3.0 || ^4.0", 513 | "symfony/filesystem": "^3.0 || ^4.0", 514 | "symfony/finder": "^3.0 || ^4.0", 515 | "symfony/options-resolver": "^3.0 || ^4.0", 516 | "symfony/polyfill-php70": "^1.0", 517 | "symfony/polyfill-php72": "^1.4", 518 | "symfony/process": "^3.0 || ^4.0", 519 | "symfony/stopwatch": "^3.0 || ^4.0" 520 | }, 521 | "require-dev": { 522 | "johnkary/phpunit-speedtrap": "^1.1 || ^2.0 || ^3.0", 523 | "justinrainbow/json-schema": "^5.0", 524 | "keradus/cli-executor": "^1.2", 525 | "mikey179/vfsstream": "^1.6", 526 | "php-coveralls/php-coveralls": "^2.1", 527 | "php-cs-fixer/accessible-object": "^1.0", 528 | "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.1", 529 | "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.1", 530 | "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1", 531 | "phpunitgoodpractices/traits": "^1.8", 532 | "symfony/phpunit-bridge": "^4.3" 533 | }, 534 | "suggest": { 535 | "ext-mbstring": "For handling non-UTF8 characters in cache signature.", 536 | "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.", 537 | "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.", 538 | "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible." 539 | }, 540 | "bin": [ 541 | "php-cs-fixer" 542 | ], 543 | "type": "application", 544 | "autoload": { 545 | "psr-4": { 546 | "PhpCsFixer\\": "src/" 547 | }, 548 | "classmap": [ 549 | "tests/Test/AbstractFixerTestCase.php", 550 | "tests/Test/AbstractIntegrationCaseFactory.php", 551 | "tests/Test/AbstractIntegrationTestCase.php", 552 | "tests/Test/Assert/AssertTokensTrait.php", 553 | "tests/Test/IntegrationCase.php", 554 | "tests/Test/IntegrationCaseFactory.php", 555 | "tests/Test/IntegrationCaseFactoryInterface.php", 556 | "tests/Test/InternalIntegrationCaseFactory.php", 557 | "tests/TestCase.php" 558 | ] 559 | }, 560 | "notification-url": "https://packagist.org/downloads/", 561 | "license": [ 562 | "MIT" 563 | ], 564 | "authors": [ 565 | { 566 | "name": "Dariusz Rumiński", 567 | "email": "dariusz.ruminski@gmail.com" 568 | }, 569 | { 570 | "name": "Fabien Potencier", 571 | "email": "fabien@symfony.com" 572 | } 573 | ], 574 | "description": "A tool to automatically fix PHP code style", 575 | "time": "2019-06-01T10:32:12+00:00" 576 | }, 577 | { 578 | "name": "fzaninotto/faker", 579 | "version": "v1.8.0", 580 | "source": { 581 | "type": "git", 582 | "url": "https://github.com/fzaninotto/Faker.git", 583 | "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de" 584 | }, 585 | "dist": { 586 | "type": "zip", 587 | "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/f72816b43e74063c8b10357394b6bba8cb1c10de", 588 | "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de", 589 | "shasum": "" 590 | }, 591 | "require": { 592 | "php": "^5.3.3 || ^7.0" 593 | }, 594 | "require-dev": { 595 | "ext-intl": "*", 596 | "phpunit/phpunit": "^4.8.35 || ^5.7", 597 | "squizlabs/php_codesniffer": "^1.5" 598 | }, 599 | "type": "library", 600 | "extra": { 601 | "branch-alias": { 602 | "dev-master": "1.8-dev" 603 | } 604 | }, 605 | "autoload": { 606 | "psr-4": { 607 | "Faker\\": "src/Faker/" 608 | } 609 | }, 610 | "notification-url": "https://packagist.org/downloads/", 611 | "license": [ 612 | "MIT" 613 | ], 614 | "authors": [ 615 | { 616 | "name": "François Zaninotto" 617 | } 618 | ], 619 | "description": "Faker is a PHP library that generates fake data for you.", 620 | "keywords": [ 621 | "data", 622 | "faker", 623 | "fixtures" 624 | ], 625 | "time": "2018-07-12T10:23:15+00:00" 626 | }, 627 | { 628 | "name": "myclabs/deep-copy", 629 | "version": "1.9.1", 630 | "source": { 631 | "type": "git", 632 | "url": "https://github.com/myclabs/DeepCopy.git", 633 | "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72" 634 | }, 635 | "dist": { 636 | "type": "zip", 637 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", 638 | "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", 639 | "shasum": "" 640 | }, 641 | "require": { 642 | "php": "^7.1" 643 | }, 644 | "replace": { 645 | "myclabs/deep-copy": "self.version" 646 | }, 647 | "require-dev": { 648 | "doctrine/collections": "^1.0", 649 | "doctrine/common": "^2.6", 650 | "phpunit/phpunit": "^7.1" 651 | }, 652 | "type": "library", 653 | "autoload": { 654 | "psr-4": { 655 | "DeepCopy\\": "src/DeepCopy/" 656 | }, 657 | "files": [ 658 | "src/DeepCopy/deep_copy.php" 659 | ] 660 | }, 661 | "notification-url": "https://packagist.org/downloads/", 662 | "license": [ 663 | "MIT" 664 | ], 665 | "description": "Create deep copies (clones) of your objects", 666 | "keywords": [ 667 | "clone", 668 | "copy", 669 | "duplicate", 670 | "object", 671 | "object graph" 672 | ], 673 | "time": "2019-04-07T13:18:21+00:00" 674 | }, 675 | { 676 | "name": "paragonie/random_compat", 677 | "version": "v9.99.99", 678 | "source": { 679 | "type": "git", 680 | "url": "https://github.com/paragonie/random_compat.git", 681 | "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" 682 | }, 683 | "dist": { 684 | "type": "zip", 685 | "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", 686 | "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", 687 | "shasum": "" 688 | }, 689 | "require": { 690 | "php": "^7" 691 | }, 692 | "require-dev": { 693 | "phpunit/phpunit": "4.*|5.*", 694 | "vimeo/psalm": "^1" 695 | }, 696 | "suggest": { 697 | "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." 698 | }, 699 | "type": "library", 700 | "notification-url": "https://packagist.org/downloads/", 701 | "license": [ 702 | "MIT" 703 | ], 704 | "authors": [ 705 | { 706 | "name": "Paragon Initiative Enterprises", 707 | "email": "security@paragonie.com", 708 | "homepage": "https://paragonie.com" 709 | } 710 | ], 711 | "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", 712 | "keywords": [ 713 | "csprng", 714 | "polyfill", 715 | "pseudorandom", 716 | "random" 717 | ], 718 | "time": "2018-07-02T15:55:56+00:00" 719 | }, 720 | { 721 | "name": "phar-io/manifest", 722 | "version": "1.0.3", 723 | "source": { 724 | "type": "git", 725 | "url": "https://github.com/phar-io/manifest.git", 726 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" 727 | }, 728 | "dist": { 729 | "type": "zip", 730 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", 731 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", 732 | "shasum": "" 733 | }, 734 | "require": { 735 | "ext-dom": "*", 736 | "ext-phar": "*", 737 | "phar-io/version": "^2.0", 738 | "php": "^5.6 || ^7.0" 739 | }, 740 | "type": "library", 741 | "extra": { 742 | "branch-alias": { 743 | "dev-master": "1.0.x-dev" 744 | } 745 | }, 746 | "autoload": { 747 | "classmap": [ 748 | "src/" 749 | ] 750 | }, 751 | "notification-url": "https://packagist.org/downloads/", 752 | "license": [ 753 | "BSD-3-Clause" 754 | ], 755 | "authors": [ 756 | { 757 | "name": "Arne Blankerts", 758 | "email": "arne@blankerts.de", 759 | "role": "Developer" 760 | }, 761 | { 762 | "name": "Sebastian Heuer", 763 | "email": "sebastian@phpeople.de", 764 | "role": "Developer" 765 | }, 766 | { 767 | "name": "Sebastian Bergmann", 768 | "email": "sebastian@phpunit.de", 769 | "role": "Developer" 770 | } 771 | ], 772 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 773 | "time": "2018-07-08T19:23:20+00:00" 774 | }, 775 | { 776 | "name": "phar-io/version", 777 | "version": "2.0.1", 778 | "source": { 779 | "type": "git", 780 | "url": "https://github.com/phar-io/version.git", 781 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" 782 | }, 783 | "dist": { 784 | "type": "zip", 785 | "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", 786 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", 787 | "shasum": "" 788 | }, 789 | "require": { 790 | "php": "^5.6 || ^7.0" 791 | }, 792 | "type": "library", 793 | "autoload": { 794 | "classmap": [ 795 | "src/" 796 | ] 797 | }, 798 | "notification-url": "https://packagist.org/downloads/", 799 | "license": [ 800 | "BSD-3-Clause" 801 | ], 802 | "authors": [ 803 | { 804 | "name": "Arne Blankerts", 805 | "email": "arne@blankerts.de", 806 | "role": "Developer" 807 | }, 808 | { 809 | "name": "Sebastian Heuer", 810 | "email": "sebastian@phpeople.de", 811 | "role": "Developer" 812 | }, 813 | { 814 | "name": "Sebastian Bergmann", 815 | "email": "sebastian@phpunit.de", 816 | "role": "Developer" 817 | } 818 | ], 819 | "description": "Library for handling version information and constraints", 820 | "time": "2018-07-08T19:19:57+00:00" 821 | }, 822 | { 823 | "name": "php-cs-fixer/diff", 824 | "version": "v1.3.0", 825 | "source": { 826 | "type": "git", 827 | "url": "https://github.com/PHP-CS-Fixer/diff.git", 828 | "reference": "78bb099e9c16361126c86ce82ec4405ebab8e756" 829 | }, 830 | "dist": { 831 | "type": "zip", 832 | "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/78bb099e9c16361126c86ce82ec4405ebab8e756", 833 | "reference": "78bb099e9c16361126c86ce82ec4405ebab8e756", 834 | "shasum": "" 835 | }, 836 | "require": { 837 | "php": "^5.6 || ^7.0" 838 | }, 839 | "require-dev": { 840 | "phpunit/phpunit": "^5.7.23 || ^6.4.3", 841 | "symfony/process": "^3.3" 842 | }, 843 | "type": "library", 844 | "autoload": { 845 | "classmap": [ 846 | "src/" 847 | ] 848 | }, 849 | "notification-url": "https://packagist.org/downloads/", 850 | "license": [ 851 | "BSD-3-Clause" 852 | ], 853 | "authors": [ 854 | { 855 | "name": "Kore Nordmann", 856 | "email": "mail@kore-nordmann.de" 857 | }, 858 | { 859 | "name": "Sebastian Bergmann", 860 | "email": "sebastian@phpunit.de" 861 | }, 862 | { 863 | "name": "SpacePossum" 864 | } 865 | ], 866 | "description": "sebastian/diff v2 backport support for PHP5.6", 867 | "homepage": "https://github.com/PHP-CS-Fixer", 868 | "keywords": [ 869 | "diff" 870 | ], 871 | "time": "2018-02-15T16:58:55+00:00" 872 | }, 873 | { 874 | "name": "phpdocumentor/reflection-common", 875 | "version": "1.0.1", 876 | "source": { 877 | "type": "git", 878 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 879 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" 880 | }, 881 | "dist": { 882 | "type": "zip", 883 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 884 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 885 | "shasum": "" 886 | }, 887 | "require": { 888 | "php": ">=5.5" 889 | }, 890 | "require-dev": { 891 | "phpunit/phpunit": "^4.6" 892 | }, 893 | "type": "library", 894 | "extra": { 895 | "branch-alias": { 896 | "dev-master": "1.0.x-dev" 897 | } 898 | }, 899 | "autoload": { 900 | "psr-4": { 901 | "phpDocumentor\\Reflection\\": [ 902 | "src" 903 | ] 904 | } 905 | }, 906 | "notification-url": "https://packagist.org/downloads/", 907 | "license": [ 908 | "MIT" 909 | ], 910 | "authors": [ 911 | { 912 | "name": "Jaap van Otterdijk", 913 | "email": "opensource@ijaap.nl" 914 | } 915 | ], 916 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 917 | "homepage": "http://www.phpdoc.org", 918 | "keywords": [ 919 | "FQSEN", 920 | "phpDocumentor", 921 | "phpdoc", 922 | "reflection", 923 | "static analysis" 924 | ], 925 | "time": "2017-09-11T18:02:19+00:00" 926 | }, 927 | { 928 | "name": "phpdocumentor/reflection-docblock", 929 | "version": "4.3.1", 930 | "source": { 931 | "type": "git", 932 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 933 | "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c" 934 | }, 935 | "dist": { 936 | "type": "zip", 937 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", 938 | "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", 939 | "shasum": "" 940 | }, 941 | "require": { 942 | "php": "^7.0", 943 | "phpdocumentor/reflection-common": "^1.0.0", 944 | "phpdocumentor/type-resolver": "^0.4.0", 945 | "webmozart/assert": "^1.0" 946 | }, 947 | "require-dev": { 948 | "doctrine/instantiator": "~1.0.5", 949 | "mockery/mockery": "^1.0", 950 | "phpunit/phpunit": "^6.4" 951 | }, 952 | "type": "library", 953 | "extra": { 954 | "branch-alias": { 955 | "dev-master": "4.x-dev" 956 | } 957 | }, 958 | "autoload": { 959 | "psr-4": { 960 | "phpDocumentor\\Reflection\\": [ 961 | "src/" 962 | ] 963 | } 964 | }, 965 | "notification-url": "https://packagist.org/downloads/", 966 | "license": [ 967 | "MIT" 968 | ], 969 | "authors": [ 970 | { 971 | "name": "Mike van Riel", 972 | "email": "me@mikevanriel.com" 973 | } 974 | ], 975 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 976 | "time": "2019-04-30T17:48:53+00:00" 977 | }, 978 | { 979 | "name": "phpdocumentor/type-resolver", 980 | "version": "0.4.0", 981 | "source": { 982 | "type": "git", 983 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 984 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" 985 | }, 986 | "dist": { 987 | "type": "zip", 988 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", 989 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", 990 | "shasum": "" 991 | }, 992 | "require": { 993 | "php": "^5.5 || ^7.0", 994 | "phpdocumentor/reflection-common": "^1.0" 995 | }, 996 | "require-dev": { 997 | "mockery/mockery": "^0.9.4", 998 | "phpunit/phpunit": "^5.2||^4.8.24" 999 | }, 1000 | "type": "library", 1001 | "extra": { 1002 | "branch-alias": { 1003 | "dev-master": "1.0.x-dev" 1004 | } 1005 | }, 1006 | "autoload": { 1007 | "psr-4": { 1008 | "phpDocumentor\\Reflection\\": [ 1009 | "src/" 1010 | ] 1011 | } 1012 | }, 1013 | "notification-url": "https://packagist.org/downloads/", 1014 | "license": [ 1015 | "MIT" 1016 | ], 1017 | "authors": [ 1018 | { 1019 | "name": "Mike van Riel", 1020 | "email": "me@mikevanriel.com" 1021 | } 1022 | ], 1023 | "time": "2017-07-14T14:27:02+00:00" 1024 | }, 1025 | { 1026 | "name": "phpspec/prophecy", 1027 | "version": "1.8.1", 1028 | "source": { 1029 | "type": "git", 1030 | "url": "https://github.com/phpspec/prophecy.git", 1031 | "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76" 1032 | }, 1033 | "dist": { 1034 | "type": "zip", 1035 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/1927e75f4ed19131ec9bcc3b002e07fb1173ee76", 1036 | "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76", 1037 | "shasum": "" 1038 | }, 1039 | "require": { 1040 | "doctrine/instantiator": "^1.0.2", 1041 | "php": "^5.3|^7.0", 1042 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", 1043 | "sebastian/comparator": "^1.1|^2.0|^3.0", 1044 | "sebastian/recursion-context": "^1.0|^2.0|^3.0" 1045 | }, 1046 | "require-dev": { 1047 | "phpspec/phpspec": "^2.5|^3.2", 1048 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" 1049 | }, 1050 | "type": "library", 1051 | "extra": { 1052 | "branch-alias": { 1053 | "dev-master": "1.8.x-dev" 1054 | } 1055 | }, 1056 | "autoload": { 1057 | "psr-4": { 1058 | "Prophecy\\": "src/Prophecy" 1059 | } 1060 | }, 1061 | "notification-url": "https://packagist.org/downloads/", 1062 | "license": [ 1063 | "MIT" 1064 | ], 1065 | "authors": [ 1066 | { 1067 | "name": "Konstantin Kudryashov", 1068 | "email": "ever.zet@gmail.com", 1069 | "homepage": "http://everzet.com" 1070 | }, 1071 | { 1072 | "name": "Marcello Duarte", 1073 | "email": "marcello.duarte@gmail.com" 1074 | } 1075 | ], 1076 | "description": "Highly opinionated mocking framework for PHP 5.3+", 1077 | "homepage": "https://github.com/phpspec/prophecy", 1078 | "keywords": [ 1079 | "Double", 1080 | "Dummy", 1081 | "fake", 1082 | "mock", 1083 | "spy", 1084 | "stub" 1085 | ], 1086 | "time": "2019-06-13T12:50:23+00:00" 1087 | }, 1088 | { 1089 | "name": "phpunit/php-code-coverage", 1090 | "version": "6.1.4", 1091 | "source": { 1092 | "type": "git", 1093 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 1094 | "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" 1095 | }, 1096 | "dist": { 1097 | "type": "zip", 1098 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", 1099 | "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", 1100 | "shasum": "" 1101 | }, 1102 | "require": { 1103 | "ext-dom": "*", 1104 | "ext-xmlwriter": "*", 1105 | "php": "^7.1", 1106 | "phpunit/php-file-iterator": "^2.0", 1107 | "phpunit/php-text-template": "^1.2.1", 1108 | "phpunit/php-token-stream": "^3.0", 1109 | "sebastian/code-unit-reverse-lookup": "^1.0.1", 1110 | "sebastian/environment": "^3.1 || ^4.0", 1111 | "sebastian/version": "^2.0.1", 1112 | "theseer/tokenizer": "^1.1" 1113 | }, 1114 | "require-dev": { 1115 | "phpunit/phpunit": "^7.0" 1116 | }, 1117 | "suggest": { 1118 | "ext-xdebug": "^2.6.0" 1119 | }, 1120 | "type": "library", 1121 | "extra": { 1122 | "branch-alias": { 1123 | "dev-master": "6.1-dev" 1124 | } 1125 | }, 1126 | "autoload": { 1127 | "classmap": [ 1128 | "src/" 1129 | ] 1130 | }, 1131 | "notification-url": "https://packagist.org/downloads/", 1132 | "license": [ 1133 | "BSD-3-Clause" 1134 | ], 1135 | "authors": [ 1136 | { 1137 | "name": "Sebastian Bergmann", 1138 | "email": "sebastian@phpunit.de", 1139 | "role": "lead" 1140 | } 1141 | ], 1142 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 1143 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 1144 | "keywords": [ 1145 | "coverage", 1146 | "testing", 1147 | "xunit" 1148 | ], 1149 | "time": "2018-10-31T16:06:48+00:00" 1150 | }, 1151 | { 1152 | "name": "phpunit/php-file-iterator", 1153 | "version": "2.0.2", 1154 | "source": { 1155 | "type": "git", 1156 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 1157 | "reference": "050bedf145a257b1ff02746c31894800e5122946" 1158 | }, 1159 | "dist": { 1160 | "type": "zip", 1161 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", 1162 | "reference": "050bedf145a257b1ff02746c31894800e5122946", 1163 | "shasum": "" 1164 | }, 1165 | "require": { 1166 | "php": "^7.1" 1167 | }, 1168 | "require-dev": { 1169 | "phpunit/phpunit": "^7.1" 1170 | }, 1171 | "type": "library", 1172 | "extra": { 1173 | "branch-alias": { 1174 | "dev-master": "2.0.x-dev" 1175 | } 1176 | }, 1177 | "autoload": { 1178 | "classmap": [ 1179 | "src/" 1180 | ] 1181 | }, 1182 | "notification-url": "https://packagist.org/downloads/", 1183 | "license": [ 1184 | "BSD-3-Clause" 1185 | ], 1186 | "authors": [ 1187 | { 1188 | "name": "Sebastian Bergmann", 1189 | "email": "sebastian@phpunit.de", 1190 | "role": "lead" 1191 | } 1192 | ], 1193 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 1194 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 1195 | "keywords": [ 1196 | "filesystem", 1197 | "iterator" 1198 | ], 1199 | "time": "2018-09-13T20:33:42+00:00" 1200 | }, 1201 | { 1202 | "name": "phpunit/php-text-template", 1203 | "version": "1.2.1", 1204 | "source": { 1205 | "type": "git", 1206 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 1207 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 1208 | }, 1209 | "dist": { 1210 | "type": "zip", 1211 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 1212 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 1213 | "shasum": "" 1214 | }, 1215 | "require": { 1216 | "php": ">=5.3.3" 1217 | }, 1218 | "type": "library", 1219 | "autoload": { 1220 | "classmap": [ 1221 | "src/" 1222 | ] 1223 | }, 1224 | "notification-url": "https://packagist.org/downloads/", 1225 | "license": [ 1226 | "BSD-3-Clause" 1227 | ], 1228 | "authors": [ 1229 | { 1230 | "name": "Sebastian Bergmann", 1231 | "email": "sebastian@phpunit.de", 1232 | "role": "lead" 1233 | } 1234 | ], 1235 | "description": "Simple template engine.", 1236 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 1237 | "keywords": [ 1238 | "template" 1239 | ], 1240 | "time": "2015-06-21T13:50:34+00:00" 1241 | }, 1242 | { 1243 | "name": "phpunit/php-timer", 1244 | "version": "2.1.2", 1245 | "source": { 1246 | "type": "git", 1247 | "url": "https://github.com/sebastianbergmann/php-timer.git", 1248 | "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" 1249 | }, 1250 | "dist": { 1251 | "type": "zip", 1252 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", 1253 | "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", 1254 | "shasum": "" 1255 | }, 1256 | "require": { 1257 | "php": "^7.1" 1258 | }, 1259 | "require-dev": { 1260 | "phpunit/phpunit": "^7.0" 1261 | }, 1262 | "type": "library", 1263 | "extra": { 1264 | "branch-alias": { 1265 | "dev-master": "2.1-dev" 1266 | } 1267 | }, 1268 | "autoload": { 1269 | "classmap": [ 1270 | "src/" 1271 | ] 1272 | }, 1273 | "notification-url": "https://packagist.org/downloads/", 1274 | "license": [ 1275 | "BSD-3-Clause" 1276 | ], 1277 | "authors": [ 1278 | { 1279 | "name": "Sebastian Bergmann", 1280 | "email": "sebastian@phpunit.de", 1281 | "role": "lead" 1282 | } 1283 | ], 1284 | "description": "Utility class for timing", 1285 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 1286 | "keywords": [ 1287 | "timer" 1288 | ], 1289 | "time": "2019-06-07T04:22:29+00:00" 1290 | }, 1291 | { 1292 | "name": "phpunit/php-token-stream", 1293 | "version": "3.0.2", 1294 | "source": { 1295 | "type": "git", 1296 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 1297 | "reference": "c4a66b97f040e3e20b3aa2a243230a1c3a9f7c8c" 1298 | }, 1299 | "dist": { 1300 | "type": "zip", 1301 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/c4a66b97f040e3e20b3aa2a243230a1c3a9f7c8c", 1302 | "reference": "c4a66b97f040e3e20b3aa2a243230a1c3a9f7c8c", 1303 | "shasum": "" 1304 | }, 1305 | "require": { 1306 | "ext-tokenizer": "*", 1307 | "php": "^7.1" 1308 | }, 1309 | "require-dev": { 1310 | "phpunit/phpunit": "^7.0" 1311 | }, 1312 | "type": "library", 1313 | "extra": { 1314 | "branch-alias": { 1315 | "dev-master": "3.0-dev" 1316 | } 1317 | }, 1318 | "autoload": { 1319 | "classmap": [ 1320 | "src/" 1321 | ] 1322 | }, 1323 | "notification-url": "https://packagist.org/downloads/", 1324 | "license": [ 1325 | "BSD-3-Clause" 1326 | ], 1327 | "authors": [ 1328 | { 1329 | "name": "Sebastian Bergmann", 1330 | "email": "sebastian@phpunit.de" 1331 | } 1332 | ], 1333 | "description": "Wrapper around PHP's tokenizer extension.", 1334 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 1335 | "keywords": [ 1336 | "tokenizer" 1337 | ], 1338 | "time": "2019-07-08T05:24:54+00:00" 1339 | }, 1340 | { 1341 | "name": "phpunit/phpunit", 1342 | "version": "7.5.14", 1343 | "source": { 1344 | "type": "git", 1345 | "url": "https://github.com/sebastianbergmann/phpunit.git", 1346 | "reference": "2834789aeb9ac182ad69bfdf9ae91856a59945ff" 1347 | }, 1348 | "dist": { 1349 | "type": "zip", 1350 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2834789aeb9ac182ad69bfdf9ae91856a59945ff", 1351 | "reference": "2834789aeb9ac182ad69bfdf9ae91856a59945ff", 1352 | "shasum": "" 1353 | }, 1354 | "require": { 1355 | "doctrine/instantiator": "^1.1", 1356 | "ext-dom": "*", 1357 | "ext-json": "*", 1358 | "ext-libxml": "*", 1359 | "ext-mbstring": "*", 1360 | "ext-xml": "*", 1361 | "myclabs/deep-copy": "^1.7", 1362 | "phar-io/manifest": "^1.0.2", 1363 | "phar-io/version": "^2.0", 1364 | "php": "^7.1", 1365 | "phpspec/prophecy": "^1.7", 1366 | "phpunit/php-code-coverage": "^6.0.7", 1367 | "phpunit/php-file-iterator": "^2.0.1", 1368 | "phpunit/php-text-template": "^1.2.1", 1369 | "phpunit/php-timer": "^2.1", 1370 | "sebastian/comparator": "^3.0", 1371 | "sebastian/diff": "^3.0", 1372 | "sebastian/environment": "^4.0", 1373 | "sebastian/exporter": "^3.1", 1374 | "sebastian/global-state": "^2.0", 1375 | "sebastian/object-enumerator": "^3.0.3", 1376 | "sebastian/resource-operations": "^2.0", 1377 | "sebastian/version": "^2.0.1" 1378 | }, 1379 | "conflict": { 1380 | "phpunit/phpunit-mock-objects": "*" 1381 | }, 1382 | "require-dev": { 1383 | "ext-pdo": "*" 1384 | }, 1385 | "suggest": { 1386 | "ext-soap": "*", 1387 | "ext-xdebug": "*", 1388 | "phpunit/php-invoker": "^2.0" 1389 | }, 1390 | "bin": [ 1391 | "phpunit" 1392 | ], 1393 | "type": "library", 1394 | "extra": { 1395 | "branch-alias": { 1396 | "dev-master": "7.5-dev" 1397 | } 1398 | }, 1399 | "autoload": { 1400 | "classmap": [ 1401 | "src/" 1402 | ] 1403 | }, 1404 | "notification-url": "https://packagist.org/downloads/", 1405 | "license": [ 1406 | "BSD-3-Clause" 1407 | ], 1408 | "authors": [ 1409 | { 1410 | "name": "Sebastian Bergmann", 1411 | "role": "lead", 1412 | "email": "sebastian@phpunit.de" 1413 | } 1414 | ], 1415 | "description": "The PHP Unit Testing framework.", 1416 | "homepage": "https://phpunit.de/", 1417 | "keywords": [ 1418 | "phpunit", 1419 | "testing", 1420 | "xunit" 1421 | ], 1422 | "time": "2019-07-15T06:24:08+00:00" 1423 | }, 1424 | { 1425 | "name": "psr/container", 1426 | "version": "1.0.0", 1427 | "source": { 1428 | "type": "git", 1429 | "url": "https://github.com/php-fig/container.git", 1430 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" 1431 | }, 1432 | "dist": { 1433 | "type": "zip", 1434 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 1435 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 1436 | "shasum": "" 1437 | }, 1438 | "require": { 1439 | "php": ">=5.3.0" 1440 | }, 1441 | "type": "library", 1442 | "extra": { 1443 | "branch-alias": { 1444 | "dev-master": "1.0.x-dev" 1445 | } 1446 | }, 1447 | "autoload": { 1448 | "psr-4": { 1449 | "Psr\\Container\\": "src/" 1450 | } 1451 | }, 1452 | "notification-url": "https://packagist.org/downloads/", 1453 | "license": [ 1454 | "MIT" 1455 | ], 1456 | "authors": [ 1457 | { 1458 | "name": "PHP-FIG", 1459 | "homepage": "http://www.php-fig.org/" 1460 | } 1461 | ], 1462 | "description": "Common Container Interface (PHP FIG PSR-11)", 1463 | "homepage": "https://github.com/php-fig/container", 1464 | "keywords": [ 1465 | "PSR-11", 1466 | "container", 1467 | "container-interface", 1468 | "container-interop", 1469 | "psr" 1470 | ], 1471 | "time": "2017-02-14T16:28:37+00:00" 1472 | }, 1473 | { 1474 | "name": "psr/log", 1475 | "version": "1.1.0", 1476 | "source": { 1477 | "type": "git", 1478 | "url": "https://github.com/php-fig/log.git", 1479 | "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" 1480 | }, 1481 | "dist": { 1482 | "type": "zip", 1483 | "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", 1484 | "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", 1485 | "shasum": "" 1486 | }, 1487 | "require": { 1488 | "php": ">=5.3.0" 1489 | }, 1490 | "type": "library", 1491 | "extra": { 1492 | "branch-alias": { 1493 | "dev-master": "1.0.x-dev" 1494 | } 1495 | }, 1496 | "autoload": { 1497 | "psr-4": { 1498 | "Psr\\Log\\": "Psr/Log/" 1499 | } 1500 | }, 1501 | "notification-url": "https://packagist.org/downloads/", 1502 | "license": [ 1503 | "MIT" 1504 | ], 1505 | "authors": [ 1506 | { 1507 | "name": "PHP-FIG", 1508 | "homepage": "http://www.php-fig.org/" 1509 | } 1510 | ], 1511 | "description": "Common interface for logging libraries", 1512 | "homepage": "https://github.com/php-fig/log", 1513 | "keywords": [ 1514 | "log", 1515 | "psr", 1516 | "psr-3" 1517 | ], 1518 | "time": "2018-11-20T15:27:04+00:00" 1519 | }, 1520 | { 1521 | "name": "sebastian/code-unit-reverse-lookup", 1522 | "version": "1.0.1", 1523 | "source": { 1524 | "type": "git", 1525 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 1526 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" 1527 | }, 1528 | "dist": { 1529 | "type": "zip", 1530 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 1531 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 1532 | "shasum": "" 1533 | }, 1534 | "require": { 1535 | "php": "^5.6 || ^7.0" 1536 | }, 1537 | "require-dev": { 1538 | "phpunit/phpunit": "^5.7 || ^6.0" 1539 | }, 1540 | "type": "library", 1541 | "extra": { 1542 | "branch-alias": { 1543 | "dev-master": "1.0.x-dev" 1544 | } 1545 | }, 1546 | "autoload": { 1547 | "classmap": [ 1548 | "src/" 1549 | ] 1550 | }, 1551 | "notification-url": "https://packagist.org/downloads/", 1552 | "license": [ 1553 | "BSD-3-Clause" 1554 | ], 1555 | "authors": [ 1556 | { 1557 | "name": "Sebastian Bergmann", 1558 | "email": "sebastian@phpunit.de" 1559 | } 1560 | ], 1561 | "description": "Looks up which function or method a line of code belongs to", 1562 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 1563 | "time": "2017-03-04T06:30:41+00:00" 1564 | }, 1565 | { 1566 | "name": "sebastian/comparator", 1567 | "version": "3.0.2", 1568 | "source": { 1569 | "type": "git", 1570 | "url": "https://github.com/sebastianbergmann/comparator.git", 1571 | "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" 1572 | }, 1573 | "dist": { 1574 | "type": "zip", 1575 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", 1576 | "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", 1577 | "shasum": "" 1578 | }, 1579 | "require": { 1580 | "php": "^7.1", 1581 | "sebastian/diff": "^3.0", 1582 | "sebastian/exporter": "^3.1" 1583 | }, 1584 | "require-dev": { 1585 | "phpunit/phpunit": "^7.1" 1586 | }, 1587 | "type": "library", 1588 | "extra": { 1589 | "branch-alias": { 1590 | "dev-master": "3.0-dev" 1591 | } 1592 | }, 1593 | "autoload": { 1594 | "classmap": [ 1595 | "src/" 1596 | ] 1597 | }, 1598 | "notification-url": "https://packagist.org/downloads/", 1599 | "license": [ 1600 | "BSD-3-Clause" 1601 | ], 1602 | "authors": [ 1603 | { 1604 | "name": "Jeff Welch", 1605 | "email": "whatthejeff@gmail.com" 1606 | }, 1607 | { 1608 | "name": "Volker Dusch", 1609 | "email": "github@wallbash.com" 1610 | }, 1611 | { 1612 | "name": "Bernhard Schussek", 1613 | "email": "bschussek@2bepublished.at" 1614 | }, 1615 | { 1616 | "name": "Sebastian Bergmann", 1617 | "email": "sebastian@phpunit.de" 1618 | } 1619 | ], 1620 | "description": "Provides the functionality to compare PHP values for equality", 1621 | "homepage": "https://github.com/sebastianbergmann/comparator", 1622 | "keywords": [ 1623 | "comparator", 1624 | "compare", 1625 | "equality" 1626 | ], 1627 | "time": "2018-07-12T15:12:46+00:00" 1628 | }, 1629 | { 1630 | "name": "sebastian/diff", 1631 | "version": "3.0.2", 1632 | "source": { 1633 | "type": "git", 1634 | "url": "https://github.com/sebastianbergmann/diff.git", 1635 | "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" 1636 | }, 1637 | "dist": { 1638 | "type": "zip", 1639 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", 1640 | "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", 1641 | "shasum": "" 1642 | }, 1643 | "require": { 1644 | "php": "^7.1" 1645 | }, 1646 | "require-dev": { 1647 | "phpunit/phpunit": "^7.5 || ^8.0", 1648 | "symfony/process": "^2 || ^3.3 || ^4" 1649 | }, 1650 | "type": "library", 1651 | "extra": { 1652 | "branch-alias": { 1653 | "dev-master": "3.0-dev" 1654 | } 1655 | }, 1656 | "autoload": { 1657 | "classmap": [ 1658 | "src/" 1659 | ] 1660 | }, 1661 | "notification-url": "https://packagist.org/downloads/", 1662 | "license": [ 1663 | "BSD-3-Clause" 1664 | ], 1665 | "authors": [ 1666 | { 1667 | "name": "Kore Nordmann", 1668 | "email": "mail@kore-nordmann.de" 1669 | }, 1670 | { 1671 | "name": "Sebastian Bergmann", 1672 | "email": "sebastian@phpunit.de" 1673 | } 1674 | ], 1675 | "description": "Diff implementation", 1676 | "homepage": "https://github.com/sebastianbergmann/diff", 1677 | "keywords": [ 1678 | "diff", 1679 | "udiff", 1680 | "unidiff", 1681 | "unified diff" 1682 | ], 1683 | "time": "2019-02-04T06:01:07+00:00" 1684 | }, 1685 | { 1686 | "name": "sebastian/environment", 1687 | "version": "4.2.2", 1688 | "source": { 1689 | "type": "git", 1690 | "url": "https://github.com/sebastianbergmann/environment.git", 1691 | "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404" 1692 | }, 1693 | "dist": { 1694 | "type": "zip", 1695 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/f2a2c8e1c97c11ace607a7a667d73d47c19fe404", 1696 | "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404", 1697 | "shasum": "" 1698 | }, 1699 | "require": { 1700 | "php": "^7.1" 1701 | }, 1702 | "require-dev": { 1703 | "phpunit/phpunit": "^7.5" 1704 | }, 1705 | "suggest": { 1706 | "ext-posix": "*" 1707 | }, 1708 | "type": "library", 1709 | "extra": { 1710 | "branch-alias": { 1711 | "dev-master": "4.2-dev" 1712 | } 1713 | }, 1714 | "autoload": { 1715 | "classmap": [ 1716 | "src/" 1717 | ] 1718 | }, 1719 | "notification-url": "https://packagist.org/downloads/", 1720 | "license": [ 1721 | "BSD-3-Clause" 1722 | ], 1723 | "authors": [ 1724 | { 1725 | "name": "Sebastian Bergmann", 1726 | "email": "sebastian@phpunit.de" 1727 | } 1728 | ], 1729 | "description": "Provides functionality to handle HHVM/PHP environments", 1730 | "homepage": "http://www.github.com/sebastianbergmann/environment", 1731 | "keywords": [ 1732 | "Xdebug", 1733 | "environment", 1734 | "hhvm" 1735 | ], 1736 | "time": "2019-05-05T09:05:15+00:00" 1737 | }, 1738 | { 1739 | "name": "sebastian/exporter", 1740 | "version": "3.1.0", 1741 | "source": { 1742 | "type": "git", 1743 | "url": "https://github.com/sebastianbergmann/exporter.git", 1744 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" 1745 | }, 1746 | "dist": { 1747 | "type": "zip", 1748 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", 1749 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", 1750 | "shasum": "" 1751 | }, 1752 | "require": { 1753 | "php": "^7.0", 1754 | "sebastian/recursion-context": "^3.0" 1755 | }, 1756 | "require-dev": { 1757 | "ext-mbstring": "*", 1758 | "phpunit/phpunit": "^6.0" 1759 | }, 1760 | "type": "library", 1761 | "extra": { 1762 | "branch-alias": { 1763 | "dev-master": "3.1.x-dev" 1764 | } 1765 | }, 1766 | "autoload": { 1767 | "classmap": [ 1768 | "src/" 1769 | ] 1770 | }, 1771 | "notification-url": "https://packagist.org/downloads/", 1772 | "license": [ 1773 | "BSD-3-Clause" 1774 | ], 1775 | "authors": [ 1776 | { 1777 | "name": "Jeff Welch", 1778 | "email": "whatthejeff@gmail.com" 1779 | }, 1780 | { 1781 | "name": "Volker Dusch", 1782 | "email": "github@wallbash.com" 1783 | }, 1784 | { 1785 | "name": "Bernhard Schussek", 1786 | "email": "bschussek@2bepublished.at" 1787 | }, 1788 | { 1789 | "name": "Sebastian Bergmann", 1790 | "email": "sebastian@phpunit.de" 1791 | }, 1792 | { 1793 | "name": "Adam Harvey", 1794 | "email": "aharvey@php.net" 1795 | } 1796 | ], 1797 | "description": "Provides the functionality to export PHP variables for visualization", 1798 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 1799 | "keywords": [ 1800 | "export", 1801 | "exporter" 1802 | ], 1803 | "time": "2017-04-03T13:19:02+00:00" 1804 | }, 1805 | { 1806 | "name": "sebastian/global-state", 1807 | "version": "2.0.0", 1808 | "source": { 1809 | "type": "git", 1810 | "url": "https://github.com/sebastianbergmann/global-state.git", 1811 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" 1812 | }, 1813 | "dist": { 1814 | "type": "zip", 1815 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", 1816 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", 1817 | "shasum": "" 1818 | }, 1819 | "require": { 1820 | "php": "^7.0" 1821 | }, 1822 | "require-dev": { 1823 | "phpunit/phpunit": "^6.0" 1824 | }, 1825 | "suggest": { 1826 | "ext-uopz": "*" 1827 | }, 1828 | "type": "library", 1829 | "extra": { 1830 | "branch-alias": { 1831 | "dev-master": "2.0-dev" 1832 | } 1833 | }, 1834 | "autoload": { 1835 | "classmap": [ 1836 | "src/" 1837 | ] 1838 | }, 1839 | "notification-url": "https://packagist.org/downloads/", 1840 | "license": [ 1841 | "BSD-3-Clause" 1842 | ], 1843 | "authors": [ 1844 | { 1845 | "name": "Sebastian Bergmann", 1846 | "email": "sebastian@phpunit.de" 1847 | } 1848 | ], 1849 | "description": "Snapshotting of global state", 1850 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 1851 | "keywords": [ 1852 | "global state" 1853 | ], 1854 | "time": "2017-04-27T15:39:26+00:00" 1855 | }, 1856 | { 1857 | "name": "sebastian/object-enumerator", 1858 | "version": "3.0.3", 1859 | "source": { 1860 | "type": "git", 1861 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 1862 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" 1863 | }, 1864 | "dist": { 1865 | "type": "zip", 1866 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", 1867 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", 1868 | "shasum": "" 1869 | }, 1870 | "require": { 1871 | "php": "^7.0", 1872 | "sebastian/object-reflector": "^1.1.1", 1873 | "sebastian/recursion-context": "^3.0" 1874 | }, 1875 | "require-dev": { 1876 | "phpunit/phpunit": "^6.0" 1877 | }, 1878 | "type": "library", 1879 | "extra": { 1880 | "branch-alias": { 1881 | "dev-master": "3.0.x-dev" 1882 | } 1883 | }, 1884 | "autoload": { 1885 | "classmap": [ 1886 | "src/" 1887 | ] 1888 | }, 1889 | "notification-url": "https://packagist.org/downloads/", 1890 | "license": [ 1891 | "BSD-3-Clause" 1892 | ], 1893 | "authors": [ 1894 | { 1895 | "name": "Sebastian Bergmann", 1896 | "email": "sebastian@phpunit.de" 1897 | } 1898 | ], 1899 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 1900 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 1901 | "time": "2017-08-03T12:35:26+00:00" 1902 | }, 1903 | { 1904 | "name": "sebastian/object-reflector", 1905 | "version": "1.1.1", 1906 | "source": { 1907 | "type": "git", 1908 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 1909 | "reference": "773f97c67f28de00d397be301821b06708fca0be" 1910 | }, 1911 | "dist": { 1912 | "type": "zip", 1913 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", 1914 | "reference": "773f97c67f28de00d397be301821b06708fca0be", 1915 | "shasum": "" 1916 | }, 1917 | "require": { 1918 | "php": "^7.0" 1919 | }, 1920 | "require-dev": { 1921 | "phpunit/phpunit": "^6.0" 1922 | }, 1923 | "type": "library", 1924 | "extra": { 1925 | "branch-alias": { 1926 | "dev-master": "1.1-dev" 1927 | } 1928 | }, 1929 | "autoload": { 1930 | "classmap": [ 1931 | "src/" 1932 | ] 1933 | }, 1934 | "notification-url": "https://packagist.org/downloads/", 1935 | "license": [ 1936 | "BSD-3-Clause" 1937 | ], 1938 | "authors": [ 1939 | { 1940 | "name": "Sebastian Bergmann", 1941 | "email": "sebastian@phpunit.de" 1942 | } 1943 | ], 1944 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 1945 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 1946 | "time": "2017-03-29T09:07:27+00:00" 1947 | }, 1948 | { 1949 | "name": "sebastian/recursion-context", 1950 | "version": "3.0.0", 1951 | "source": { 1952 | "type": "git", 1953 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 1954 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" 1955 | }, 1956 | "dist": { 1957 | "type": "zip", 1958 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 1959 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 1960 | "shasum": "" 1961 | }, 1962 | "require": { 1963 | "php": "^7.0" 1964 | }, 1965 | "require-dev": { 1966 | "phpunit/phpunit": "^6.0" 1967 | }, 1968 | "type": "library", 1969 | "extra": { 1970 | "branch-alias": { 1971 | "dev-master": "3.0.x-dev" 1972 | } 1973 | }, 1974 | "autoload": { 1975 | "classmap": [ 1976 | "src/" 1977 | ] 1978 | }, 1979 | "notification-url": "https://packagist.org/downloads/", 1980 | "license": [ 1981 | "BSD-3-Clause" 1982 | ], 1983 | "authors": [ 1984 | { 1985 | "name": "Jeff Welch", 1986 | "email": "whatthejeff@gmail.com" 1987 | }, 1988 | { 1989 | "name": "Sebastian Bergmann", 1990 | "email": "sebastian@phpunit.de" 1991 | }, 1992 | { 1993 | "name": "Adam Harvey", 1994 | "email": "aharvey@php.net" 1995 | } 1996 | ], 1997 | "description": "Provides functionality to recursively process PHP variables", 1998 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 1999 | "time": "2017-03-03T06:23:57+00:00" 2000 | }, 2001 | { 2002 | "name": "sebastian/resource-operations", 2003 | "version": "2.0.1", 2004 | "source": { 2005 | "type": "git", 2006 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 2007 | "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" 2008 | }, 2009 | "dist": { 2010 | "type": "zip", 2011 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", 2012 | "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", 2013 | "shasum": "" 2014 | }, 2015 | "require": { 2016 | "php": "^7.1" 2017 | }, 2018 | "type": "library", 2019 | "extra": { 2020 | "branch-alias": { 2021 | "dev-master": "2.0-dev" 2022 | } 2023 | }, 2024 | "autoload": { 2025 | "classmap": [ 2026 | "src/" 2027 | ] 2028 | }, 2029 | "notification-url": "https://packagist.org/downloads/", 2030 | "license": [ 2031 | "BSD-3-Clause" 2032 | ], 2033 | "authors": [ 2034 | { 2035 | "name": "Sebastian Bergmann", 2036 | "email": "sebastian@phpunit.de" 2037 | } 2038 | ], 2039 | "description": "Provides a list of PHP built-in functions that operate on resources", 2040 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 2041 | "time": "2018-10-04T04:07:39+00:00" 2042 | }, 2043 | { 2044 | "name": "sebastian/version", 2045 | "version": "2.0.1", 2046 | "source": { 2047 | "type": "git", 2048 | "url": "https://github.com/sebastianbergmann/version.git", 2049 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" 2050 | }, 2051 | "dist": { 2052 | "type": "zip", 2053 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", 2054 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", 2055 | "shasum": "" 2056 | }, 2057 | "require": { 2058 | "php": ">=5.6" 2059 | }, 2060 | "type": "library", 2061 | "extra": { 2062 | "branch-alias": { 2063 | "dev-master": "2.0.x-dev" 2064 | } 2065 | }, 2066 | "autoload": { 2067 | "classmap": [ 2068 | "src/" 2069 | ] 2070 | }, 2071 | "notification-url": "https://packagist.org/downloads/", 2072 | "license": [ 2073 | "BSD-3-Clause" 2074 | ], 2075 | "authors": [ 2076 | { 2077 | "name": "Sebastian Bergmann", 2078 | "email": "sebastian@phpunit.de", 2079 | "role": "lead" 2080 | } 2081 | ], 2082 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 2083 | "homepage": "https://github.com/sebastianbergmann/version", 2084 | "time": "2016-10-03T07:35:21+00:00" 2085 | }, 2086 | { 2087 | "name": "symfony/console", 2088 | "version": "v4.3.2", 2089 | "source": { 2090 | "type": "git", 2091 | "url": "https://github.com/symfony/console.git", 2092 | "reference": "b592b26a24265a35172d8a2094d8b10f22b7cc39" 2093 | }, 2094 | "dist": { 2095 | "type": "zip", 2096 | "url": "https://api.github.com/repos/symfony/console/zipball/b592b26a24265a35172d8a2094d8b10f22b7cc39", 2097 | "reference": "b592b26a24265a35172d8a2094d8b10f22b7cc39", 2098 | "shasum": "" 2099 | }, 2100 | "require": { 2101 | "php": "^7.1.3", 2102 | "symfony/polyfill-mbstring": "~1.0", 2103 | "symfony/polyfill-php73": "^1.8", 2104 | "symfony/service-contracts": "^1.1" 2105 | }, 2106 | "conflict": { 2107 | "symfony/dependency-injection": "<3.4", 2108 | "symfony/event-dispatcher": "<4.3", 2109 | "symfony/process": "<3.3" 2110 | }, 2111 | "provide": { 2112 | "psr/log-implementation": "1.0" 2113 | }, 2114 | "require-dev": { 2115 | "psr/log": "~1.0", 2116 | "symfony/config": "~3.4|~4.0", 2117 | "symfony/dependency-injection": "~3.4|~4.0", 2118 | "symfony/event-dispatcher": "^4.3", 2119 | "symfony/lock": "~3.4|~4.0", 2120 | "symfony/process": "~3.4|~4.0", 2121 | "symfony/var-dumper": "^4.3" 2122 | }, 2123 | "suggest": { 2124 | "psr/log": "For using the console logger", 2125 | "symfony/event-dispatcher": "", 2126 | "symfony/lock": "", 2127 | "symfony/process": "" 2128 | }, 2129 | "type": "library", 2130 | "extra": { 2131 | "branch-alias": { 2132 | "dev-master": "4.3-dev" 2133 | } 2134 | }, 2135 | "autoload": { 2136 | "psr-4": { 2137 | "Symfony\\Component\\Console\\": "" 2138 | }, 2139 | "exclude-from-classmap": [ 2140 | "/Tests/" 2141 | ] 2142 | }, 2143 | "notification-url": "https://packagist.org/downloads/", 2144 | "license": [ 2145 | "MIT" 2146 | ], 2147 | "authors": [ 2148 | { 2149 | "name": "Fabien Potencier", 2150 | "email": "fabien@symfony.com" 2151 | }, 2152 | { 2153 | "name": "Symfony Community", 2154 | "homepage": "https://symfony.com/contributors" 2155 | } 2156 | ], 2157 | "description": "Symfony Console Component", 2158 | "homepage": "https://symfony.com", 2159 | "time": "2019-06-13T11:03:18+00:00" 2160 | }, 2161 | { 2162 | "name": "symfony/event-dispatcher", 2163 | "version": "v4.3.2", 2164 | "source": { 2165 | "type": "git", 2166 | "url": "https://github.com/symfony/event-dispatcher.git", 2167 | "reference": "d257021c1ab28d48d24a16de79dfab445ce93398" 2168 | }, 2169 | "dist": { 2170 | "type": "zip", 2171 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d257021c1ab28d48d24a16de79dfab445ce93398", 2172 | "reference": "d257021c1ab28d48d24a16de79dfab445ce93398", 2173 | "shasum": "" 2174 | }, 2175 | "require": { 2176 | "php": "^7.1.3", 2177 | "symfony/event-dispatcher-contracts": "^1.1" 2178 | }, 2179 | "conflict": { 2180 | "symfony/dependency-injection": "<3.4" 2181 | }, 2182 | "provide": { 2183 | "psr/event-dispatcher-implementation": "1.0", 2184 | "symfony/event-dispatcher-implementation": "1.1" 2185 | }, 2186 | "require-dev": { 2187 | "psr/log": "~1.0", 2188 | "symfony/config": "~3.4|~4.0", 2189 | "symfony/dependency-injection": "~3.4|~4.0", 2190 | "symfony/expression-language": "~3.4|~4.0", 2191 | "symfony/http-foundation": "^3.4|^4.0", 2192 | "symfony/service-contracts": "^1.1", 2193 | "symfony/stopwatch": "~3.4|~4.0" 2194 | }, 2195 | "suggest": { 2196 | "symfony/dependency-injection": "", 2197 | "symfony/http-kernel": "" 2198 | }, 2199 | "type": "library", 2200 | "extra": { 2201 | "branch-alias": { 2202 | "dev-master": "4.3-dev" 2203 | } 2204 | }, 2205 | "autoload": { 2206 | "psr-4": { 2207 | "Symfony\\Component\\EventDispatcher\\": "" 2208 | }, 2209 | "exclude-from-classmap": [ 2210 | "/Tests/" 2211 | ] 2212 | }, 2213 | "notification-url": "https://packagist.org/downloads/", 2214 | "license": [ 2215 | "MIT" 2216 | ], 2217 | "authors": [ 2218 | { 2219 | "name": "Fabien Potencier", 2220 | "email": "fabien@symfony.com" 2221 | }, 2222 | { 2223 | "name": "Symfony Community", 2224 | "homepage": "https://symfony.com/contributors" 2225 | } 2226 | ], 2227 | "description": "Symfony EventDispatcher Component", 2228 | "homepage": "https://symfony.com", 2229 | "time": "2019-06-13T11:03:18+00:00" 2230 | }, 2231 | { 2232 | "name": "symfony/event-dispatcher-contracts", 2233 | "version": "v1.1.5", 2234 | "source": { 2235 | "type": "git", 2236 | "url": "https://github.com/symfony/event-dispatcher-contracts.git", 2237 | "reference": "c61766f4440ca687de1084a5c00b08e167a2575c" 2238 | }, 2239 | "dist": { 2240 | "type": "zip", 2241 | "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c61766f4440ca687de1084a5c00b08e167a2575c", 2242 | "reference": "c61766f4440ca687de1084a5c00b08e167a2575c", 2243 | "shasum": "" 2244 | }, 2245 | "require": { 2246 | "php": "^7.1.3" 2247 | }, 2248 | "suggest": { 2249 | "psr/event-dispatcher": "", 2250 | "symfony/event-dispatcher-implementation": "" 2251 | }, 2252 | "type": "library", 2253 | "extra": { 2254 | "branch-alias": { 2255 | "dev-master": "1.1-dev" 2256 | } 2257 | }, 2258 | "autoload": { 2259 | "psr-4": { 2260 | "Symfony\\Contracts\\EventDispatcher\\": "" 2261 | } 2262 | }, 2263 | "notification-url": "https://packagist.org/downloads/", 2264 | "license": [ 2265 | "MIT" 2266 | ], 2267 | "authors": [ 2268 | { 2269 | "name": "Nicolas Grekas", 2270 | "email": "p@tchwork.com" 2271 | }, 2272 | { 2273 | "name": "Symfony Community", 2274 | "homepage": "https://symfony.com/contributors" 2275 | } 2276 | ], 2277 | "description": "Generic abstractions related to dispatching event", 2278 | "homepage": "https://symfony.com", 2279 | "keywords": [ 2280 | "abstractions", 2281 | "contracts", 2282 | "decoupling", 2283 | "interfaces", 2284 | "interoperability", 2285 | "standards" 2286 | ], 2287 | "time": "2019-06-20T06:46:26+00:00" 2288 | }, 2289 | { 2290 | "name": "symfony/filesystem", 2291 | "version": "v4.3.2", 2292 | "source": { 2293 | "type": "git", 2294 | "url": "https://github.com/symfony/filesystem.git", 2295 | "reference": "b9896d034463ad6fd2bf17e2bf9418caecd6313d" 2296 | }, 2297 | "dist": { 2298 | "type": "zip", 2299 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/b9896d034463ad6fd2bf17e2bf9418caecd6313d", 2300 | "reference": "b9896d034463ad6fd2bf17e2bf9418caecd6313d", 2301 | "shasum": "" 2302 | }, 2303 | "require": { 2304 | "php": "^7.1.3", 2305 | "symfony/polyfill-ctype": "~1.8" 2306 | }, 2307 | "type": "library", 2308 | "extra": { 2309 | "branch-alias": { 2310 | "dev-master": "4.3-dev" 2311 | } 2312 | }, 2313 | "autoload": { 2314 | "psr-4": { 2315 | "Symfony\\Component\\Filesystem\\": "" 2316 | }, 2317 | "exclude-from-classmap": [ 2318 | "/Tests/" 2319 | ] 2320 | }, 2321 | "notification-url": "https://packagist.org/downloads/", 2322 | "license": [ 2323 | "MIT" 2324 | ], 2325 | "authors": [ 2326 | { 2327 | "name": "Fabien Potencier", 2328 | "email": "fabien@symfony.com" 2329 | }, 2330 | { 2331 | "name": "Symfony Community", 2332 | "homepage": "https://symfony.com/contributors" 2333 | } 2334 | ], 2335 | "description": "Symfony Filesystem Component", 2336 | "homepage": "https://symfony.com", 2337 | "time": "2019-06-23T08:51:25+00:00" 2338 | }, 2339 | { 2340 | "name": "symfony/finder", 2341 | "version": "v4.3.2", 2342 | "source": { 2343 | "type": "git", 2344 | "url": "https://github.com/symfony/finder.git", 2345 | "reference": "33c21f7d5d3dc8a140c282854a7e13aeb5d0f91a" 2346 | }, 2347 | "dist": { 2348 | "type": "zip", 2349 | "url": "https://api.github.com/repos/symfony/finder/zipball/33c21f7d5d3dc8a140c282854a7e13aeb5d0f91a", 2350 | "reference": "33c21f7d5d3dc8a140c282854a7e13aeb5d0f91a", 2351 | "shasum": "" 2352 | }, 2353 | "require": { 2354 | "php": "^7.1.3" 2355 | }, 2356 | "type": "library", 2357 | "extra": { 2358 | "branch-alias": { 2359 | "dev-master": "4.3-dev" 2360 | } 2361 | }, 2362 | "autoload": { 2363 | "psr-4": { 2364 | "Symfony\\Component\\Finder\\": "" 2365 | }, 2366 | "exclude-from-classmap": [ 2367 | "/Tests/" 2368 | ] 2369 | }, 2370 | "notification-url": "https://packagist.org/downloads/", 2371 | "license": [ 2372 | "MIT" 2373 | ], 2374 | "authors": [ 2375 | { 2376 | "name": "Fabien Potencier", 2377 | "email": "fabien@symfony.com" 2378 | }, 2379 | { 2380 | "name": "Symfony Community", 2381 | "homepage": "https://symfony.com/contributors" 2382 | } 2383 | ], 2384 | "description": "Symfony Finder Component", 2385 | "homepage": "https://symfony.com", 2386 | "time": "2019-06-13T11:03:18+00:00" 2387 | }, 2388 | { 2389 | "name": "symfony/options-resolver", 2390 | "version": "v4.3.2", 2391 | "source": { 2392 | "type": "git", 2393 | "url": "https://github.com/symfony/options-resolver.git", 2394 | "reference": "40762ead607c8f792ee4516881369ffa553fee6f" 2395 | }, 2396 | "dist": { 2397 | "type": "zip", 2398 | "url": "https://api.github.com/repos/symfony/options-resolver/zipball/40762ead607c8f792ee4516881369ffa553fee6f", 2399 | "reference": "40762ead607c8f792ee4516881369ffa553fee6f", 2400 | "shasum": "" 2401 | }, 2402 | "require": { 2403 | "php": "^7.1.3" 2404 | }, 2405 | "type": "library", 2406 | "extra": { 2407 | "branch-alias": { 2408 | "dev-master": "4.3-dev" 2409 | } 2410 | }, 2411 | "autoload": { 2412 | "psr-4": { 2413 | "Symfony\\Component\\OptionsResolver\\": "" 2414 | }, 2415 | "exclude-from-classmap": [ 2416 | "/Tests/" 2417 | ] 2418 | }, 2419 | "notification-url": "https://packagist.org/downloads/", 2420 | "license": [ 2421 | "MIT" 2422 | ], 2423 | "authors": [ 2424 | { 2425 | "name": "Fabien Potencier", 2426 | "email": "fabien@symfony.com" 2427 | }, 2428 | { 2429 | "name": "Symfony Community", 2430 | "homepage": "https://symfony.com/contributors" 2431 | } 2432 | ], 2433 | "description": "Symfony OptionsResolver Component", 2434 | "homepage": "https://symfony.com", 2435 | "keywords": [ 2436 | "config", 2437 | "configuration", 2438 | "options" 2439 | ], 2440 | "time": "2019-06-13T11:01:17+00:00" 2441 | }, 2442 | { 2443 | "name": "symfony/polyfill-ctype", 2444 | "version": "v1.11.0", 2445 | "source": { 2446 | "type": "git", 2447 | "url": "https://github.com/symfony/polyfill-ctype.git", 2448 | "reference": "82ebae02209c21113908c229e9883c419720738a" 2449 | }, 2450 | "dist": { 2451 | "type": "zip", 2452 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a", 2453 | "reference": "82ebae02209c21113908c229e9883c419720738a", 2454 | "shasum": "" 2455 | }, 2456 | "require": { 2457 | "php": ">=5.3.3" 2458 | }, 2459 | "suggest": { 2460 | "ext-ctype": "For best performance" 2461 | }, 2462 | "type": "library", 2463 | "extra": { 2464 | "branch-alias": { 2465 | "dev-master": "1.11-dev" 2466 | } 2467 | }, 2468 | "autoload": { 2469 | "psr-4": { 2470 | "Symfony\\Polyfill\\Ctype\\": "" 2471 | }, 2472 | "files": [ 2473 | "bootstrap.php" 2474 | ] 2475 | }, 2476 | "notification-url": "https://packagist.org/downloads/", 2477 | "license": [ 2478 | "MIT" 2479 | ], 2480 | "authors": [ 2481 | { 2482 | "name": "Symfony Community", 2483 | "homepage": "https://symfony.com/contributors" 2484 | }, 2485 | { 2486 | "name": "Gert de Pagter", 2487 | "email": "BackEndTea@gmail.com" 2488 | } 2489 | ], 2490 | "description": "Symfony polyfill for ctype functions", 2491 | "homepage": "https://symfony.com", 2492 | "keywords": [ 2493 | "compatibility", 2494 | "ctype", 2495 | "polyfill", 2496 | "portable" 2497 | ], 2498 | "time": "2019-02-06T07:57:58+00:00" 2499 | }, 2500 | { 2501 | "name": "symfony/polyfill-mbstring", 2502 | "version": "v1.11.0", 2503 | "source": { 2504 | "type": "git", 2505 | "url": "https://github.com/symfony/polyfill-mbstring.git", 2506 | "reference": "fe5e94c604826c35a32fa832f35bd036b6799609" 2507 | }, 2508 | "dist": { 2509 | "type": "zip", 2510 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609", 2511 | "reference": "fe5e94c604826c35a32fa832f35bd036b6799609", 2512 | "shasum": "" 2513 | }, 2514 | "require": { 2515 | "php": ">=5.3.3" 2516 | }, 2517 | "suggest": { 2518 | "ext-mbstring": "For best performance" 2519 | }, 2520 | "type": "library", 2521 | "extra": { 2522 | "branch-alias": { 2523 | "dev-master": "1.11-dev" 2524 | } 2525 | }, 2526 | "autoload": { 2527 | "psr-4": { 2528 | "Symfony\\Polyfill\\Mbstring\\": "" 2529 | }, 2530 | "files": [ 2531 | "bootstrap.php" 2532 | ] 2533 | }, 2534 | "notification-url": "https://packagist.org/downloads/", 2535 | "license": [ 2536 | "MIT" 2537 | ], 2538 | "authors": [ 2539 | { 2540 | "name": "Nicolas Grekas", 2541 | "email": "p@tchwork.com" 2542 | }, 2543 | { 2544 | "name": "Symfony Community", 2545 | "homepage": "https://symfony.com/contributors" 2546 | } 2547 | ], 2548 | "description": "Symfony polyfill for the Mbstring extension", 2549 | "homepage": "https://symfony.com", 2550 | "keywords": [ 2551 | "compatibility", 2552 | "mbstring", 2553 | "polyfill", 2554 | "portable", 2555 | "shim" 2556 | ], 2557 | "time": "2019-02-06T07:57:58+00:00" 2558 | }, 2559 | { 2560 | "name": "symfony/polyfill-php70", 2561 | "version": "v1.11.0", 2562 | "source": { 2563 | "type": "git", 2564 | "url": "https://github.com/symfony/polyfill-php70.git", 2565 | "reference": "bc4858fb611bda58719124ca079baff854149c89" 2566 | }, 2567 | "dist": { 2568 | "type": "zip", 2569 | "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/bc4858fb611bda58719124ca079baff854149c89", 2570 | "reference": "bc4858fb611bda58719124ca079baff854149c89", 2571 | "shasum": "" 2572 | }, 2573 | "require": { 2574 | "paragonie/random_compat": "~1.0|~2.0|~9.99", 2575 | "php": ">=5.3.3" 2576 | }, 2577 | "type": "library", 2578 | "extra": { 2579 | "branch-alias": { 2580 | "dev-master": "1.11-dev" 2581 | } 2582 | }, 2583 | "autoload": { 2584 | "psr-4": { 2585 | "Symfony\\Polyfill\\Php70\\": "" 2586 | }, 2587 | "files": [ 2588 | "bootstrap.php" 2589 | ], 2590 | "classmap": [ 2591 | "Resources/stubs" 2592 | ] 2593 | }, 2594 | "notification-url": "https://packagist.org/downloads/", 2595 | "license": [ 2596 | "MIT" 2597 | ], 2598 | "authors": [ 2599 | { 2600 | "name": "Nicolas Grekas", 2601 | "email": "p@tchwork.com" 2602 | }, 2603 | { 2604 | "name": "Symfony Community", 2605 | "homepage": "https://symfony.com/contributors" 2606 | } 2607 | ], 2608 | "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", 2609 | "homepage": "https://symfony.com", 2610 | "keywords": [ 2611 | "compatibility", 2612 | "polyfill", 2613 | "portable", 2614 | "shim" 2615 | ], 2616 | "time": "2019-02-06T07:57:58+00:00" 2617 | }, 2618 | { 2619 | "name": "symfony/polyfill-php72", 2620 | "version": "v1.11.0", 2621 | "source": { 2622 | "type": "git", 2623 | "url": "https://github.com/symfony/polyfill-php72.git", 2624 | "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c" 2625 | }, 2626 | "dist": { 2627 | "type": "zip", 2628 | "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/ab50dcf166d5f577978419edd37aa2bb8eabce0c", 2629 | "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c", 2630 | "shasum": "" 2631 | }, 2632 | "require": { 2633 | "php": ">=5.3.3" 2634 | }, 2635 | "type": "library", 2636 | "extra": { 2637 | "branch-alias": { 2638 | "dev-master": "1.11-dev" 2639 | } 2640 | }, 2641 | "autoload": { 2642 | "psr-4": { 2643 | "Symfony\\Polyfill\\Php72\\": "" 2644 | }, 2645 | "files": [ 2646 | "bootstrap.php" 2647 | ] 2648 | }, 2649 | "notification-url": "https://packagist.org/downloads/", 2650 | "license": [ 2651 | "MIT" 2652 | ], 2653 | "authors": [ 2654 | { 2655 | "name": "Nicolas Grekas", 2656 | "email": "p@tchwork.com" 2657 | }, 2658 | { 2659 | "name": "Symfony Community", 2660 | "homepage": "https://symfony.com/contributors" 2661 | } 2662 | ], 2663 | "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", 2664 | "homepage": "https://symfony.com", 2665 | "keywords": [ 2666 | "compatibility", 2667 | "polyfill", 2668 | "portable", 2669 | "shim" 2670 | ], 2671 | "time": "2019-02-06T07:57:58+00:00" 2672 | }, 2673 | { 2674 | "name": "symfony/polyfill-php73", 2675 | "version": "v1.11.0", 2676 | "source": { 2677 | "type": "git", 2678 | "url": "https://github.com/symfony/polyfill-php73.git", 2679 | "reference": "d1fb4abcc0c47be136208ad9d68bf59f1ee17abd" 2680 | }, 2681 | "dist": { 2682 | "type": "zip", 2683 | "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/d1fb4abcc0c47be136208ad9d68bf59f1ee17abd", 2684 | "reference": "d1fb4abcc0c47be136208ad9d68bf59f1ee17abd", 2685 | "shasum": "" 2686 | }, 2687 | "require": { 2688 | "php": ">=5.3.3" 2689 | }, 2690 | "type": "library", 2691 | "extra": { 2692 | "branch-alias": { 2693 | "dev-master": "1.11-dev" 2694 | } 2695 | }, 2696 | "autoload": { 2697 | "psr-4": { 2698 | "Symfony\\Polyfill\\Php73\\": "" 2699 | }, 2700 | "files": [ 2701 | "bootstrap.php" 2702 | ], 2703 | "classmap": [ 2704 | "Resources/stubs" 2705 | ] 2706 | }, 2707 | "notification-url": "https://packagist.org/downloads/", 2708 | "license": [ 2709 | "MIT" 2710 | ], 2711 | "authors": [ 2712 | { 2713 | "name": "Nicolas Grekas", 2714 | "email": "p@tchwork.com" 2715 | }, 2716 | { 2717 | "name": "Symfony Community", 2718 | "homepage": "https://symfony.com/contributors" 2719 | } 2720 | ], 2721 | "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", 2722 | "homepage": "https://symfony.com", 2723 | "keywords": [ 2724 | "compatibility", 2725 | "polyfill", 2726 | "portable", 2727 | "shim" 2728 | ], 2729 | "time": "2019-02-06T07:57:58+00:00" 2730 | }, 2731 | { 2732 | "name": "symfony/process", 2733 | "version": "v4.3.2", 2734 | "source": { 2735 | "type": "git", 2736 | "url": "https://github.com/symfony/process.git", 2737 | "reference": "856d35814cf287480465bb7a6c413bb7f5f5e69c" 2738 | }, 2739 | "dist": { 2740 | "type": "zip", 2741 | "url": "https://api.github.com/repos/symfony/process/zipball/856d35814cf287480465bb7a6c413bb7f5f5e69c", 2742 | "reference": "856d35814cf287480465bb7a6c413bb7f5f5e69c", 2743 | "shasum": "" 2744 | }, 2745 | "require": { 2746 | "php": "^7.1.3" 2747 | }, 2748 | "type": "library", 2749 | "extra": { 2750 | "branch-alias": { 2751 | "dev-master": "4.3-dev" 2752 | } 2753 | }, 2754 | "autoload": { 2755 | "psr-4": { 2756 | "Symfony\\Component\\Process\\": "" 2757 | }, 2758 | "exclude-from-classmap": [ 2759 | "/Tests/" 2760 | ] 2761 | }, 2762 | "notification-url": "https://packagist.org/downloads/", 2763 | "license": [ 2764 | "MIT" 2765 | ], 2766 | "authors": [ 2767 | { 2768 | "name": "Fabien Potencier", 2769 | "email": "fabien@symfony.com" 2770 | }, 2771 | { 2772 | "name": "Symfony Community", 2773 | "homepage": "https://symfony.com/contributors" 2774 | } 2775 | ], 2776 | "description": "Symfony Process Component", 2777 | "homepage": "https://symfony.com", 2778 | "time": "2019-05-30T16:10:05+00:00" 2779 | }, 2780 | { 2781 | "name": "symfony/service-contracts", 2782 | "version": "v1.1.5", 2783 | "source": { 2784 | "type": "git", 2785 | "url": "https://github.com/symfony/service-contracts.git", 2786 | "reference": "f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d" 2787 | }, 2788 | "dist": { 2789 | "type": "zip", 2790 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d", 2791 | "reference": "f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d", 2792 | "shasum": "" 2793 | }, 2794 | "require": { 2795 | "php": "^7.1.3", 2796 | "psr/container": "^1.0" 2797 | }, 2798 | "suggest": { 2799 | "symfony/service-implementation": "" 2800 | }, 2801 | "type": "library", 2802 | "extra": { 2803 | "branch-alias": { 2804 | "dev-master": "1.1-dev" 2805 | } 2806 | }, 2807 | "autoload": { 2808 | "psr-4": { 2809 | "Symfony\\Contracts\\Service\\": "" 2810 | } 2811 | }, 2812 | "notification-url": "https://packagist.org/downloads/", 2813 | "license": [ 2814 | "MIT" 2815 | ], 2816 | "authors": [ 2817 | { 2818 | "name": "Nicolas Grekas", 2819 | "email": "p@tchwork.com" 2820 | }, 2821 | { 2822 | "name": "Symfony Community", 2823 | "homepage": "https://symfony.com/contributors" 2824 | } 2825 | ], 2826 | "description": "Generic abstractions related to writing services", 2827 | "homepage": "https://symfony.com", 2828 | "keywords": [ 2829 | "abstractions", 2830 | "contracts", 2831 | "decoupling", 2832 | "interfaces", 2833 | "interoperability", 2834 | "standards" 2835 | ], 2836 | "time": "2019-06-13T11:15:36+00:00" 2837 | }, 2838 | { 2839 | "name": "symfony/stopwatch", 2840 | "version": "v4.3.2", 2841 | "source": { 2842 | "type": "git", 2843 | "url": "https://github.com/symfony/stopwatch.git", 2844 | "reference": "6b100e9309e8979cf1978ac1778eb155c1f7d93b" 2845 | }, 2846 | "dist": { 2847 | "type": "zip", 2848 | "url": "https://api.github.com/repos/symfony/stopwatch/zipball/6b100e9309e8979cf1978ac1778eb155c1f7d93b", 2849 | "reference": "6b100e9309e8979cf1978ac1778eb155c1f7d93b", 2850 | "shasum": "" 2851 | }, 2852 | "require": { 2853 | "php": "^7.1.3", 2854 | "symfony/service-contracts": "^1.0" 2855 | }, 2856 | "type": "library", 2857 | "extra": { 2858 | "branch-alias": { 2859 | "dev-master": "4.3-dev" 2860 | } 2861 | }, 2862 | "autoload": { 2863 | "psr-4": { 2864 | "Symfony\\Component\\Stopwatch\\": "" 2865 | }, 2866 | "exclude-from-classmap": [ 2867 | "/Tests/" 2868 | ] 2869 | }, 2870 | "notification-url": "https://packagist.org/downloads/", 2871 | "license": [ 2872 | "MIT" 2873 | ], 2874 | "authors": [ 2875 | { 2876 | "name": "Fabien Potencier", 2877 | "email": "fabien@symfony.com" 2878 | }, 2879 | { 2880 | "name": "Symfony Community", 2881 | "homepage": "https://symfony.com/contributors" 2882 | } 2883 | ], 2884 | "description": "Symfony Stopwatch Component", 2885 | "homepage": "https://symfony.com", 2886 | "time": "2019-05-27T08:16:38+00:00" 2887 | }, 2888 | { 2889 | "name": "theseer/tokenizer", 2890 | "version": "1.1.3", 2891 | "source": { 2892 | "type": "git", 2893 | "url": "https://github.com/theseer/tokenizer.git", 2894 | "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" 2895 | }, 2896 | "dist": { 2897 | "type": "zip", 2898 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", 2899 | "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", 2900 | "shasum": "" 2901 | }, 2902 | "require": { 2903 | "ext-dom": "*", 2904 | "ext-tokenizer": "*", 2905 | "ext-xmlwriter": "*", 2906 | "php": "^7.0" 2907 | }, 2908 | "type": "library", 2909 | "autoload": { 2910 | "classmap": [ 2911 | "src/" 2912 | ] 2913 | }, 2914 | "notification-url": "https://packagist.org/downloads/", 2915 | "license": [ 2916 | "BSD-3-Clause" 2917 | ], 2918 | "authors": [ 2919 | { 2920 | "name": "Arne Blankerts", 2921 | "email": "arne@blankerts.de", 2922 | "role": "Developer" 2923 | } 2924 | ], 2925 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 2926 | "time": "2019-06-13T22:48:21+00:00" 2927 | }, 2928 | { 2929 | "name": "webmozart/assert", 2930 | "version": "1.4.0", 2931 | "source": { 2932 | "type": "git", 2933 | "url": "https://github.com/webmozart/assert.git", 2934 | "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" 2935 | }, 2936 | "dist": { 2937 | "type": "zip", 2938 | "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", 2939 | "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", 2940 | "shasum": "" 2941 | }, 2942 | "require": { 2943 | "php": "^5.3.3 || ^7.0", 2944 | "symfony/polyfill-ctype": "^1.8" 2945 | }, 2946 | "require-dev": { 2947 | "phpunit/phpunit": "^4.6", 2948 | "sebastian/version": "^1.0.1" 2949 | }, 2950 | "type": "library", 2951 | "extra": { 2952 | "branch-alias": { 2953 | "dev-master": "1.3-dev" 2954 | } 2955 | }, 2956 | "autoload": { 2957 | "psr-4": { 2958 | "Webmozart\\Assert\\": "src/" 2959 | } 2960 | }, 2961 | "notification-url": "https://packagist.org/downloads/", 2962 | "license": [ 2963 | "MIT" 2964 | ], 2965 | "authors": [ 2966 | { 2967 | "name": "Bernhard Schussek", 2968 | "email": "bschussek@gmail.com" 2969 | } 2970 | ], 2971 | "description": "Assertions to validate method input/output with nice error messages.", 2972 | "keywords": [ 2973 | "assert", 2974 | "check", 2975 | "validate" 2976 | ], 2977 | "time": "2018-12-25T11:19:39+00:00" 2978 | } 2979 | ], 2980 | "aliases": [], 2981 | "minimum-stability": "stable", 2982 | "stability-flags": [], 2983 | "prefer-stable": false, 2984 | "prefer-lowest": false, 2985 | "platform": { 2986 | "php": "^7.1" 2987 | }, 2988 | "platform-dev": [] 2989 | } 2990 | --------------------------------------------------------------------------------