├── .gitignore ├── app ├── fopen.lock ├── off.php ├── on.php ├── read.php └── index.php ├── example.png ├── bin └── phpunit-4.8.26.phar ├── install.sh ├── phpunit.xml ├── test ├── WriterTest.php ├── ArduinoTestCase.php └── ArduinoTest.php ├── src ├── Reader.php ├── Writer.php └── Wrapper.php ├── .travis.yml ├── composer.json ├── LICENSE ├── README.md └── composer.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /vendor/ 2 | .idea/ 3 | install/ -------------------------------------------------------------------------------- /app/fopen.lock: -------------------------------------------------------------------------------- 1 | O:15:"Arduino\Wrapper":1:{s:21:"Arduino\Wrapperpath";i:0;} -------------------------------------------------------------------------------- /example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marabesi/arduino-php-wrapper/HEAD/example.png -------------------------------------------------------------------------------- /bin/phpunit-4.8.26.phar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marabesi/arduino-php-wrapper/HEAD/bin/phpunit-4.8.26.phar -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | mkdir install 4 | cd install && composer require marabesi/arduino-php-wrapper --no-interaction -vvv 5 | -------------------------------------------------------------------------------- /app/off.php: -------------------------------------------------------------------------------- 1 | out('/dev/cu.usbmodem1411', 'OFF'); 9 | -------------------------------------------------------------------------------- /app/on.php: -------------------------------------------------------------------------------- 1 | out('/dev/cu.usbmodem1411', 'ON'); 9 | -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | tests 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/read.php: -------------------------------------------------------------------------------- 1 | from('/dev/cu.usbmodem1411'); 10 | } -------------------------------------------------------------------------------- /test/WriterTest.php: -------------------------------------------------------------------------------- 1 | out($this->fakeUsbPath, 'from oop'); 10 | 11 | $this->assertNotEmpty($bytes); 12 | } 13 | } -------------------------------------------------------------------------------- /src/Reader.php: -------------------------------------------------------------------------------- 1 | wrappers = $wrapper; 13 | } 14 | 15 | public function from($from) 16 | { 17 | $this->wrappers->stream_open($from, 'r'); 18 | return $this->wrappers->stream_read(1024); 19 | } 20 | } -------------------------------------------------------------------------------- /src/Writer.php: -------------------------------------------------------------------------------- 1 | wrappers = $wrapper; 12 | } 13 | 14 | public function out($to, $data) 15 | { 16 | $this->wrappers->stream_open($to, 'r+'); 17 | $bytes = $this->wrappers->stream_write($data); 18 | 19 | return ($bytes != 0); 20 | } 21 | } -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | 3 | dist: trusty 4 | 5 | os: 6 | - linux 7 | - windows 8 | 9 | matrix: 10 | allow_failures: 11 | - os: windows 12 | 13 | php: 14 | - 5.5 15 | - 5.6 16 | - 7.0 17 | - 7.1 18 | - 7.2 19 | - 7.4 20 | 21 | before_script: 22 | - composer install 23 | - chmod 777 install.sh 24 | 25 | script: 26 | - mkdir -p build/logs 27 | - ./vendor/bin/phpunit --coverage-clover build/logs/clover.xml test/ 28 | - sh install.sh 29 | -------------------------------------------------------------------------------- /test/ArduinoTestCase.php: -------------------------------------------------------------------------------- 1 | fakeArduinoUsbResource = fopen($this->fakeUsbPath, 'w'); 12 | } 13 | 14 | public function tearDown() 15 | { 16 | fclose($this->fakeArduinoUsbResource); 17 | unlink($this->fakeUsbPath); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "marabesi/arduino-php-wrapper", 3 | "authors": [ 4 | { 5 | "name": "Marabesi", 6 | "email": "matheus.marabesi@gmail.com" 7 | } 8 | ], 9 | "autoload": { 10 | "psr-4": { 11 | "Arduino\\": "src/" 12 | } 13 | }, 14 | "require": {}, 15 | "autoload-dev": { 16 | "classmap": [ 17 | "test/ArduinoTestCase.php" 18 | ] 19 | }, 20 | "require-dev": { 21 | "phpunit/phpunit": "~4.8", 22 | "mikey179/vfsStream": "~1" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /test/ArduinoTest.php: -------------------------------------------------------------------------------- 1 | assertTrue($has); 19 | } 20 | 21 | public function testShoudlSendDataToArduino() 22 | { 23 | $resource = fopen('arduino://' . $this->fakeUsbPath, 'r+'); 24 | fwrite($resource, 'data to arduino'); 25 | 26 | $this->assertTrue(is_resource($resource)); 27 | } 28 | 29 | /** 30 | * @expectedException \InvalidArgumentException 31 | */ 32 | public function testShouldHandlerErrorWhenTheUsbIsNotAvailable() 33 | { 34 | $this->markTestSkipped('Check if if really need to throw the expcetion'); 35 | fopen('arduino:///foo/bar/tty_fake_usb', 'r+'); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Matheus Marabesi 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/Wrapper.php: -------------------------------------------------------------------------------- 1 | path = fopen($realPath, 'r+'); 25 | 26 | return true; 27 | } 28 | 29 | public function stream_read($count) 30 | { 31 | sleep(2); 32 | return fgets($this->path, $count); 33 | } 34 | 35 | public function stream_write($data) 36 | { 37 | sleep(2); 38 | return fwrite($this->path, $data); 39 | } 40 | 41 | public function stream_eof() 42 | { 43 | return fclose($this->path); 44 | } 45 | 46 | public static function register() 47 | { 48 | // if we already defined the wrapper just return false 49 | foreach (stream_get_wrappers() as $wrapper) { 50 | if ($wrapper == self::$wrapperName) { 51 | return false; 52 | } 53 | } 54 | 55 | stream_wrapper_register(self::$wrapperName, self::class); 56 | } 57 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # arduino-php-wrapper (inspired by Johnny-Five JS) 2 | 3 | [![Codacy Badge](https://api.codacy.com/project/badge/Grade/3d57a79cbf3245e0af61e9123fda26eb)](https://www.codacy.com/app/matheus-marabesi/arduino-php-wrapper?utm_source=github.com&utm_medium=referral&utm_content=marabesi/arduino-php-wrapper&utm_campaign=badger) 4 | [![Build Status](https://travis-ci.org/marabesi/arduino-php-wrapper.svg?branch=master)](https://travis-ci.org/marabesi/arduino-php-wrapper) 5 | [![Latest Stable Version](https://poser.pugx.org/marabesi/arduino-php-wrapper/v/stable)](https://packagist.org/packages/marabesi/arduino-php-wrapper) 6 | [![Total Downloads](https://poser.pugx.org/marabesi/arduino-php-wrapper/downloads)](https://packagist.org/packages/marabesi/arduino-php-wrapper) 7 | [![composer.lock](https://poser.pugx.org/marabesi/arduino-php-wrapper/composerlock)](https://packagist.org/packages/marabesi/arduino-php-wrapper) 8 | 9 | If you are wondering how to control the Arduino serial port via PHP, here is the solution. 10 | The **arduino://** wrapper is a easy and straightforward way to write and read data from Arduino. 11 | 12 | ## Install 13 | 14 | ``` 15 | composer require marabesi/arduino-php-wrapper 16 | ``` 17 | 18 | ## Usage 19 | 20 | To read data from Arduino serial just use the regular I/O functions in PHP such as **fread** or **file_get_contents** 21 | 22 | ``` php 23 | \Arduino\Wrapper::register(); 24 | 25 | //reads data from Arduino 26 | $resource = fopen('arduino://ttyUSB0', 'r+'); 27 | print fread($resource, 1024); 28 | ``` 29 | 30 | Or if you prefer, you can use **file_get_contents** and get the same result 31 | 32 | ``` php 33 | print file_get_contents('arduino://ttyUSB0'); 34 | ``` 35 | 36 | To write data in the Arduino serial is as easy as it could be 37 | 38 | ``` php 39 | \Arduino\Wrapper::register(); 40 | 41 | //writes data to Arduino 42 | $resource = fopen('arduino://ttyUSB0', 'r+'); 43 | print fwrite('hello Arduino'); 44 | ``` 45 | 46 | ``` php 47 | \Arduino\Wrapper::register(); 48 | 49 | print file_put_contents('arduino://hello Arduino'); 50 | ``` 51 | 52 | ## OOP 53 | 54 | You can use in your project in a OOP style 55 | 56 | ### Sending data 57 | 58 | ``` php 59 | $writer = new Arduino\Writer(new Arduino\Wrapper()); 60 | $bytes = $writer->out('ttyUSB0', 'from oop'); 61 | ``` 62 | 63 | ### Reading data 64 | 65 | ``` php 66 | $arduino = new \Arduino\Wrapper(); 67 | 68 | $writer = new \Arduino\Reader($arduino); 69 | while (true) { 70 | print $writer->from('/dev/cu.usbmodem1411'); 71 | } 72 | ``` 73 | 74 | ## Improvements 75 | 76 | As you can see is really simple and we can improve it much more as the sensors are identified. 77 | 78 | - Prevent arduino from reload everytime a request is made by PHP 79 | 80 | ## Slides (talks based on this lib) 81 | 82 | [![SlideShare](https://img.shields.io/badge/slides-SlideShare-brightgreen.svg)](https://www.slideshare.net/marabesi/introduction-to-iot-and-php-nerdzao-day-1) [Introduction to IoT and PHP - Nerdzão day #1](https://www.slideshare.net/marabesi/introduction-to-iot-and-php-nerdzao-day-1) 83 | 84 | [![SlideShare](https://img.shields.io/badge/slides-SlideShare-brightgreen.svg)]( 85 | https://www.slideshare.net/marabesi/iot-powered-by-php-and-streams-phpexperience2017) [IoT powered by PHP and streams - PHPExperience2017](https://www.slideshare.net/marabesi/iot-powered-by-php-and-streams-phpexperience2017) 86 | 87 | [![SlideShare](https://img.shields.io/badge/slides-SlideShare-brightgreen.svg)]( 88 | https://www.slideshare.net/marabesi/controll-your-house-with-the-elephpant-phpconf2016) [Control your house with the elePHPant - PHPConf2016](https://www.slideshare.net/marabesi/controll-your-house-with-the-elephpant-phpconf2016) 89 | -------------------------------------------------------------------------------- /app/index.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Arduino Wrapper 5 | 6 | 7 | 112 | 113 | 114 | out($_POST['device'], $_POST['data']); 123 | } 124 | ?> 125 |
126 |
127 |

Arduino Wrapper

128 |
Send data to Arduino using PHP!
129 |
130 | 131 |
132 | 135 |
136 | 141 |
142 |
143 |
144 | 147 | 148 |
149 | 150 |
151 |
152 | 153 |
154 |
155 |
156 | 157 | 158 | -------------------------------------------------------------------------------- /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#composer-lock-the-lock-file", 5 | "This file is @generated automatically" 6 | ], 7 | "hash": "423d4e5e1ff7bca953e1dc736ccc85bb", 8 | "content-hash": "610e28fa6477284c400cbea53784c73e", 9 | "packages": [], 10 | "packages-dev": [ 11 | { 12 | "name": "doctrine/instantiator", 13 | "version": "1.0.5", 14 | "source": { 15 | "type": "git", 16 | "url": "https://github.com/doctrine/instantiator.git", 17 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" 18 | }, 19 | "dist": { 20 | "type": "zip", 21 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", 22 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", 23 | "shasum": "" 24 | }, 25 | "require": { 26 | "php": ">=5.3,<8.0-DEV" 27 | }, 28 | "require-dev": { 29 | "athletic/athletic": "~0.1.8", 30 | "ext-pdo": "*", 31 | "ext-phar": "*", 32 | "phpunit/phpunit": "~4.0", 33 | "squizlabs/php_codesniffer": "~2.0" 34 | }, 35 | "type": "library", 36 | "extra": { 37 | "branch-alias": { 38 | "dev-master": "1.0.x-dev" 39 | } 40 | }, 41 | "autoload": { 42 | "psr-4": { 43 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 44 | } 45 | }, 46 | "notification-url": "https://packagist.org/downloads/", 47 | "license": [ 48 | "MIT" 49 | ], 50 | "authors": [ 51 | { 52 | "name": "Marco Pivetta", 53 | "email": "ocramius@gmail.com", 54 | "homepage": "http://ocramius.github.com/" 55 | } 56 | ], 57 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 58 | "homepage": "https://github.com/doctrine/instantiator", 59 | "keywords": [ 60 | "constructor", 61 | "instantiate" 62 | ], 63 | "time": "2015-06-14 21:17:01" 64 | }, 65 | { 66 | "name": "mikey179/vfsStream", 67 | "version": "v1.6.4", 68 | "source": { 69 | "type": "git", 70 | "url": "https://github.com/mikey179/vfsStream.git", 71 | "reference": "0247f57b2245e8ad2e689d7cee754b45fbabd592" 72 | }, 73 | "dist": { 74 | "type": "zip", 75 | "url": "https://api.github.com/repos/mikey179/vfsStream/zipball/0247f57b2245e8ad2e689d7cee754b45fbabd592", 76 | "reference": "0247f57b2245e8ad2e689d7cee754b45fbabd592", 77 | "shasum": "" 78 | }, 79 | "require": { 80 | "php": ">=5.3.0" 81 | }, 82 | "require-dev": { 83 | "phpunit/phpunit": "~4.5" 84 | }, 85 | "type": "library", 86 | "extra": { 87 | "branch-alias": { 88 | "dev-master": "1.6.x-dev" 89 | } 90 | }, 91 | "autoload": { 92 | "psr-0": { 93 | "org\\bovigo\\vfs\\": "src/main/php" 94 | } 95 | }, 96 | "notification-url": "https://packagist.org/downloads/", 97 | "license": [ 98 | "BSD-3-Clause" 99 | ], 100 | "authors": [ 101 | { 102 | "name": "Frank Kleine", 103 | "homepage": "http://frankkleine.de/", 104 | "role": "Developer" 105 | } 106 | ], 107 | "description": "Virtual file system to mock the real file system in unit tests.", 108 | "homepage": "http://vfs.bovigo.org/", 109 | "time": "2016-07-18 14:02:57" 110 | }, 111 | { 112 | "name": "phpdocumentor/reflection-common", 113 | "version": "1.0", 114 | "source": { 115 | "type": "git", 116 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 117 | "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" 118 | }, 119 | "dist": { 120 | "type": "zip", 121 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", 122 | "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", 123 | "shasum": "" 124 | }, 125 | "require": { 126 | "php": ">=5.5" 127 | }, 128 | "require-dev": { 129 | "phpunit/phpunit": "^4.6" 130 | }, 131 | "type": "library", 132 | "extra": { 133 | "branch-alias": { 134 | "dev-master": "1.0.x-dev" 135 | } 136 | }, 137 | "autoload": { 138 | "psr-4": { 139 | "phpDocumentor\\Reflection\\": [ 140 | "src" 141 | ] 142 | } 143 | }, 144 | "notification-url": "https://packagist.org/downloads/", 145 | "license": [ 146 | "MIT" 147 | ], 148 | "authors": [ 149 | { 150 | "name": "Jaap van Otterdijk", 151 | "email": "opensource@ijaap.nl" 152 | } 153 | ], 154 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 155 | "homepage": "http://www.phpdoc.org", 156 | "keywords": [ 157 | "FQSEN", 158 | "phpDocumentor", 159 | "phpdoc", 160 | "reflection", 161 | "static analysis" 162 | ], 163 | "time": "2015-12-27 11:43:31" 164 | }, 165 | { 166 | "name": "phpdocumentor/reflection-docblock", 167 | "version": "3.1.1", 168 | "source": { 169 | "type": "git", 170 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 171 | "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" 172 | }, 173 | "dist": { 174 | "type": "zip", 175 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", 176 | "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", 177 | "shasum": "" 178 | }, 179 | "require": { 180 | "php": ">=5.5", 181 | "phpdocumentor/reflection-common": "^1.0@dev", 182 | "phpdocumentor/type-resolver": "^0.2.0", 183 | "webmozart/assert": "^1.0" 184 | }, 185 | "require-dev": { 186 | "mockery/mockery": "^0.9.4", 187 | "phpunit/phpunit": "^4.4" 188 | }, 189 | "type": "library", 190 | "autoload": { 191 | "psr-4": { 192 | "phpDocumentor\\Reflection\\": [ 193 | "src/" 194 | ] 195 | } 196 | }, 197 | "notification-url": "https://packagist.org/downloads/", 198 | "license": [ 199 | "MIT" 200 | ], 201 | "authors": [ 202 | { 203 | "name": "Mike van Riel", 204 | "email": "me@mikevanriel.com" 205 | } 206 | ], 207 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 208 | "time": "2016-09-30 07:12:33" 209 | }, 210 | { 211 | "name": "phpdocumentor/type-resolver", 212 | "version": "0.2.1", 213 | "source": { 214 | "type": "git", 215 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 216 | "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb" 217 | }, 218 | "dist": { 219 | "type": "zip", 220 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", 221 | "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", 222 | "shasum": "" 223 | }, 224 | "require": { 225 | "php": ">=5.5", 226 | "phpdocumentor/reflection-common": "^1.0" 227 | }, 228 | "require-dev": { 229 | "mockery/mockery": "^0.9.4", 230 | "phpunit/phpunit": "^5.2||^4.8.24" 231 | }, 232 | "type": "library", 233 | "extra": { 234 | "branch-alias": { 235 | "dev-master": "1.0.x-dev" 236 | } 237 | }, 238 | "autoload": { 239 | "psr-4": { 240 | "phpDocumentor\\Reflection\\": [ 241 | "src/" 242 | ] 243 | } 244 | }, 245 | "notification-url": "https://packagist.org/downloads/", 246 | "license": [ 247 | "MIT" 248 | ], 249 | "authors": [ 250 | { 251 | "name": "Mike van Riel", 252 | "email": "me@mikevanriel.com" 253 | } 254 | ], 255 | "time": "2016-11-25 06:54:22" 256 | }, 257 | { 258 | "name": "phpspec/prophecy", 259 | "version": "v1.6.2", 260 | "source": { 261 | "type": "git", 262 | "url": "https://github.com/phpspec/prophecy.git", 263 | "reference": "6c52c2722f8460122f96f86346600e1077ce22cb" 264 | }, 265 | "dist": { 266 | "type": "zip", 267 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/6c52c2722f8460122f96f86346600e1077ce22cb", 268 | "reference": "6c52c2722f8460122f96f86346600e1077ce22cb", 269 | "shasum": "" 270 | }, 271 | "require": { 272 | "doctrine/instantiator": "^1.0.2", 273 | "php": "^5.3|^7.0", 274 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", 275 | "sebastian/comparator": "^1.1", 276 | "sebastian/recursion-context": "^1.0|^2.0" 277 | }, 278 | "require-dev": { 279 | "phpspec/phpspec": "^2.0", 280 | "phpunit/phpunit": "^4.8 || ^5.6.5" 281 | }, 282 | "type": "library", 283 | "extra": { 284 | "branch-alias": { 285 | "dev-master": "1.6.x-dev" 286 | } 287 | }, 288 | "autoload": { 289 | "psr-0": { 290 | "Prophecy\\": "src/" 291 | } 292 | }, 293 | "notification-url": "https://packagist.org/downloads/", 294 | "license": [ 295 | "MIT" 296 | ], 297 | "authors": [ 298 | { 299 | "name": "Konstantin Kudryashov", 300 | "email": "ever.zet@gmail.com", 301 | "homepage": "http://everzet.com" 302 | }, 303 | { 304 | "name": "Marcello Duarte", 305 | "email": "marcello.duarte@gmail.com" 306 | } 307 | ], 308 | "description": "Highly opinionated mocking framework for PHP 5.3+", 309 | "homepage": "https://github.com/phpspec/prophecy", 310 | "keywords": [ 311 | "Double", 312 | "Dummy", 313 | "fake", 314 | "mock", 315 | "spy", 316 | "stub" 317 | ], 318 | "time": "2016-11-21 14:58:47" 319 | }, 320 | { 321 | "name": "phpunit/php-code-coverage", 322 | "version": "2.2.4", 323 | "source": { 324 | "type": "git", 325 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 326 | "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" 327 | }, 328 | "dist": { 329 | "type": "zip", 330 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979", 331 | "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979", 332 | "shasum": "" 333 | }, 334 | "require": { 335 | "php": ">=5.3.3", 336 | "phpunit/php-file-iterator": "~1.3", 337 | "phpunit/php-text-template": "~1.2", 338 | "phpunit/php-token-stream": "~1.3", 339 | "sebastian/environment": "^1.3.2", 340 | "sebastian/version": "~1.0" 341 | }, 342 | "require-dev": { 343 | "ext-xdebug": ">=2.1.4", 344 | "phpunit/phpunit": "~4" 345 | }, 346 | "suggest": { 347 | "ext-dom": "*", 348 | "ext-xdebug": ">=2.2.1", 349 | "ext-xmlwriter": "*" 350 | }, 351 | "type": "library", 352 | "extra": { 353 | "branch-alias": { 354 | "dev-master": "2.2.x-dev" 355 | } 356 | }, 357 | "autoload": { 358 | "classmap": [ 359 | "src/" 360 | ] 361 | }, 362 | "notification-url": "https://packagist.org/downloads/", 363 | "license": [ 364 | "BSD-3-Clause" 365 | ], 366 | "authors": [ 367 | { 368 | "name": "Sebastian Bergmann", 369 | "email": "sb@sebastian-bergmann.de", 370 | "role": "lead" 371 | } 372 | ], 373 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 374 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 375 | "keywords": [ 376 | "coverage", 377 | "testing", 378 | "xunit" 379 | ], 380 | "time": "2015-10-06 15:47:00" 381 | }, 382 | { 383 | "name": "phpunit/php-file-iterator", 384 | "version": "1.4.2", 385 | "source": { 386 | "type": "git", 387 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 388 | "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" 389 | }, 390 | "dist": { 391 | "type": "zip", 392 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", 393 | "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", 394 | "shasum": "" 395 | }, 396 | "require": { 397 | "php": ">=5.3.3" 398 | }, 399 | "type": "library", 400 | "extra": { 401 | "branch-alias": { 402 | "dev-master": "1.4.x-dev" 403 | } 404 | }, 405 | "autoload": { 406 | "classmap": [ 407 | "src/" 408 | ] 409 | }, 410 | "notification-url": "https://packagist.org/downloads/", 411 | "license": [ 412 | "BSD-3-Clause" 413 | ], 414 | "authors": [ 415 | { 416 | "name": "Sebastian Bergmann", 417 | "email": "sb@sebastian-bergmann.de", 418 | "role": "lead" 419 | } 420 | ], 421 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 422 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 423 | "keywords": [ 424 | "filesystem", 425 | "iterator" 426 | ], 427 | "time": "2016-10-03 07:40:28" 428 | }, 429 | { 430 | "name": "phpunit/php-text-template", 431 | "version": "1.2.1", 432 | "source": { 433 | "type": "git", 434 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 435 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 436 | }, 437 | "dist": { 438 | "type": "zip", 439 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 440 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 441 | "shasum": "" 442 | }, 443 | "require": { 444 | "php": ">=5.3.3" 445 | }, 446 | "type": "library", 447 | "autoload": { 448 | "classmap": [ 449 | "src/" 450 | ] 451 | }, 452 | "notification-url": "https://packagist.org/downloads/", 453 | "license": [ 454 | "BSD-3-Clause" 455 | ], 456 | "authors": [ 457 | { 458 | "name": "Sebastian Bergmann", 459 | "email": "sebastian@phpunit.de", 460 | "role": "lead" 461 | } 462 | ], 463 | "description": "Simple template engine.", 464 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 465 | "keywords": [ 466 | "template" 467 | ], 468 | "time": "2015-06-21 13:50:34" 469 | }, 470 | { 471 | "name": "phpunit/php-timer", 472 | "version": "1.0.8", 473 | "source": { 474 | "type": "git", 475 | "url": "https://github.com/sebastianbergmann/php-timer.git", 476 | "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260" 477 | }, 478 | "dist": { 479 | "type": "zip", 480 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/38e9124049cf1a164f1e4537caf19c99bf1eb260", 481 | "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260", 482 | "shasum": "" 483 | }, 484 | "require": { 485 | "php": ">=5.3.3" 486 | }, 487 | "require-dev": { 488 | "phpunit/phpunit": "~4|~5" 489 | }, 490 | "type": "library", 491 | "autoload": { 492 | "classmap": [ 493 | "src/" 494 | ] 495 | }, 496 | "notification-url": "https://packagist.org/downloads/", 497 | "license": [ 498 | "BSD-3-Clause" 499 | ], 500 | "authors": [ 501 | { 502 | "name": "Sebastian Bergmann", 503 | "email": "sb@sebastian-bergmann.de", 504 | "role": "lead" 505 | } 506 | ], 507 | "description": "Utility class for timing", 508 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 509 | "keywords": [ 510 | "timer" 511 | ], 512 | "time": "2016-05-12 18:03:57" 513 | }, 514 | { 515 | "name": "phpunit/php-token-stream", 516 | "version": "1.4.9", 517 | "source": { 518 | "type": "git", 519 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 520 | "reference": "3b402f65a4cc90abf6e1104e388b896ce209631b" 521 | }, 522 | "dist": { 523 | "type": "zip", 524 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3b402f65a4cc90abf6e1104e388b896ce209631b", 525 | "reference": "3b402f65a4cc90abf6e1104e388b896ce209631b", 526 | "shasum": "" 527 | }, 528 | "require": { 529 | "ext-tokenizer": "*", 530 | "php": ">=5.3.3" 531 | }, 532 | "require-dev": { 533 | "phpunit/phpunit": "~4.2" 534 | }, 535 | "type": "library", 536 | "extra": { 537 | "branch-alias": { 538 | "dev-master": "1.4-dev" 539 | } 540 | }, 541 | "autoload": { 542 | "classmap": [ 543 | "src/" 544 | ] 545 | }, 546 | "notification-url": "https://packagist.org/downloads/", 547 | "license": [ 548 | "BSD-3-Clause" 549 | ], 550 | "authors": [ 551 | { 552 | "name": "Sebastian Bergmann", 553 | "email": "sebastian@phpunit.de" 554 | } 555 | ], 556 | "description": "Wrapper around PHP's tokenizer extension.", 557 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 558 | "keywords": [ 559 | "tokenizer" 560 | ], 561 | "time": "2016-11-15 14:06:22" 562 | }, 563 | { 564 | "name": "phpunit/phpunit", 565 | "version": "4.8.30", 566 | "source": { 567 | "type": "git", 568 | "url": "https://github.com/sebastianbergmann/phpunit.git", 569 | "reference": "a534e04d0bd39c557c2881c341efd06fa6f1292a" 570 | }, 571 | "dist": { 572 | "type": "zip", 573 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a534e04d0bd39c557c2881c341efd06fa6f1292a", 574 | "reference": "a534e04d0bd39c557c2881c341efd06fa6f1292a", 575 | "shasum": "" 576 | }, 577 | "require": { 578 | "ext-dom": "*", 579 | "ext-json": "*", 580 | "ext-pcre": "*", 581 | "ext-reflection": "*", 582 | "ext-spl": "*", 583 | "php": ">=5.3.3", 584 | "phpspec/prophecy": "^1.3.1", 585 | "phpunit/php-code-coverage": "~2.1", 586 | "phpunit/php-file-iterator": "~1.4", 587 | "phpunit/php-text-template": "~1.2", 588 | "phpunit/php-timer": "^1.0.6", 589 | "phpunit/phpunit-mock-objects": "~2.3", 590 | "sebastian/comparator": "~1.2.2", 591 | "sebastian/diff": "~1.2", 592 | "sebastian/environment": "~1.3", 593 | "sebastian/exporter": "~1.2", 594 | "sebastian/global-state": "~1.0", 595 | "sebastian/version": "~1.0", 596 | "symfony/yaml": "~2.1|~3.0" 597 | }, 598 | "suggest": { 599 | "phpunit/php-invoker": "~1.1" 600 | }, 601 | "bin": [ 602 | "phpunit" 603 | ], 604 | "type": "library", 605 | "extra": { 606 | "branch-alias": { 607 | "dev-master": "4.8.x-dev" 608 | } 609 | }, 610 | "autoload": { 611 | "classmap": [ 612 | "src/" 613 | ] 614 | }, 615 | "notification-url": "https://packagist.org/downloads/", 616 | "license": [ 617 | "BSD-3-Clause" 618 | ], 619 | "authors": [ 620 | { 621 | "name": "Sebastian Bergmann", 622 | "email": "sebastian@phpunit.de", 623 | "role": "lead" 624 | } 625 | ], 626 | "description": "The PHP Unit Testing framework.", 627 | "homepage": "https://phpunit.de/", 628 | "keywords": [ 629 | "phpunit", 630 | "testing", 631 | "xunit" 632 | ], 633 | "time": "2016-12-01 17:05:48" 634 | }, 635 | { 636 | "name": "phpunit/phpunit-mock-objects", 637 | "version": "2.3.8", 638 | "source": { 639 | "type": "git", 640 | "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", 641 | "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" 642 | }, 643 | "dist": { 644 | "type": "zip", 645 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", 646 | "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", 647 | "shasum": "" 648 | }, 649 | "require": { 650 | "doctrine/instantiator": "^1.0.2", 651 | "php": ">=5.3.3", 652 | "phpunit/php-text-template": "~1.2", 653 | "sebastian/exporter": "~1.2" 654 | }, 655 | "require-dev": { 656 | "phpunit/phpunit": "~4.4" 657 | }, 658 | "suggest": { 659 | "ext-soap": "*" 660 | }, 661 | "type": "library", 662 | "extra": { 663 | "branch-alias": { 664 | "dev-master": "2.3.x-dev" 665 | } 666 | }, 667 | "autoload": { 668 | "classmap": [ 669 | "src/" 670 | ] 671 | }, 672 | "notification-url": "https://packagist.org/downloads/", 673 | "license": [ 674 | "BSD-3-Clause" 675 | ], 676 | "authors": [ 677 | { 678 | "name": "Sebastian Bergmann", 679 | "email": "sb@sebastian-bergmann.de", 680 | "role": "lead" 681 | } 682 | ], 683 | "description": "Mock Object library for PHPUnit", 684 | "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", 685 | "keywords": [ 686 | "mock", 687 | "xunit" 688 | ], 689 | "time": "2015-10-02 06:51:40" 690 | }, 691 | { 692 | "name": "sebastian/comparator", 693 | "version": "1.2.2", 694 | "source": { 695 | "type": "git", 696 | "url": "https://github.com/sebastianbergmann/comparator.git", 697 | "reference": "6a1ed12e8b2409076ab22e3897126211ff8b1f7f" 698 | }, 699 | "dist": { 700 | "type": "zip", 701 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/6a1ed12e8b2409076ab22e3897126211ff8b1f7f", 702 | "reference": "6a1ed12e8b2409076ab22e3897126211ff8b1f7f", 703 | "shasum": "" 704 | }, 705 | "require": { 706 | "php": ">=5.3.3", 707 | "sebastian/diff": "~1.2", 708 | "sebastian/exporter": "~1.2 || ~2.0" 709 | }, 710 | "require-dev": { 711 | "phpunit/phpunit": "~4.4" 712 | }, 713 | "type": "library", 714 | "extra": { 715 | "branch-alias": { 716 | "dev-master": "1.2.x-dev" 717 | } 718 | }, 719 | "autoload": { 720 | "classmap": [ 721 | "src/" 722 | ] 723 | }, 724 | "notification-url": "https://packagist.org/downloads/", 725 | "license": [ 726 | "BSD-3-Clause" 727 | ], 728 | "authors": [ 729 | { 730 | "name": "Jeff Welch", 731 | "email": "whatthejeff@gmail.com" 732 | }, 733 | { 734 | "name": "Volker Dusch", 735 | "email": "github@wallbash.com" 736 | }, 737 | { 738 | "name": "Bernhard Schussek", 739 | "email": "bschussek@2bepublished.at" 740 | }, 741 | { 742 | "name": "Sebastian Bergmann", 743 | "email": "sebastian@phpunit.de" 744 | } 745 | ], 746 | "description": "Provides the functionality to compare PHP values for equality", 747 | "homepage": "http://www.github.com/sebastianbergmann/comparator", 748 | "keywords": [ 749 | "comparator", 750 | "compare", 751 | "equality" 752 | ], 753 | "time": "2016-11-19 09:18:40" 754 | }, 755 | { 756 | "name": "sebastian/diff", 757 | "version": "1.4.1", 758 | "source": { 759 | "type": "git", 760 | "url": "https://github.com/sebastianbergmann/diff.git", 761 | "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" 762 | }, 763 | "dist": { 764 | "type": "zip", 765 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", 766 | "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", 767 | "shasum": "" 768 | }, 769 | "require": { 770 | "php": ">=5.3.3" 771 | }, 772 | "require-dev": { 773 | "phpunit/phpunit": "~4.8" 774 | }, 775 | "type": "library", 776 | "extra": { 777 | "branch-alias": { 778 | "dev-master": "1.4-dev" 779 | } 780 | }, 781 | "autoload": { 782 | "classmap": [ 783 | "src/" 784 | ] 785 | }, 786 | "notification-url": "https://packagist.org/downloads/", 787 | "license": [ 788 | "BSD-3-Clause" 789 | ], 790 | "authors": [ 791 | { 792 | "name": "Kore Nordmann", 793 | "email": "mail@kore-nordmann.de" 794 | }, 795 | { 796 | "name": "Sebastian Bergmann", 797 | "email": "sebastian@phpunit.de" 798 | } 799 | ], 800 | "description": "Diff implementation", 801 | "homepage": "https://github.com/sebastianbergmann/diff", 802 | "keywords": [ 803 | "diff" 804 | ], 805 | "time": "2015-12-08 07:14:41" 806 | }, 807 | { 808 | "name": "sebastian/environment", 809 | "version": "1.3.8", 810 | "source": { 811 | "type": "git", 812 | "url": "https://github.com/sebastianbergmann/environment.git", 813 | "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" 814 | }, 815 | "dist": { 816 | "type": "zip", 817 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", 818 | "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", 819 | "shasum": "" 820 | }, 821 | "require": { 822 | "php": "^5.3.3 || ^7.0" 823 | }, 824 | "require-dev": { 825 | "phpunit/phpunit": "^4.8 || ^5.0" 826 | }, 827 | "type": "library", 828 | "extra": { 829 | "branch-alias": { 830 | "dev-master": "1.3.x-dev" 831 | } 832 | }, 833 | "autoload": { 834 | "classmap": [ 835 | "src/" 836 | ] 837 | }, 838 | "notification-url": "https://packagist.org/downloads/", 839 | "license": [ 840 | "BSD-3-Clause" 841 | ], 842 | "authors": [ 843 | { 844 | "name": "Sebastian Bergmann", 845 | "email": "sebastian@phpunit.de" 846 | } 847 | ], 848 | "description": "Provides functionality to handle HHVM/PHP environments", 849 | "homepage": "http://www.github.com/sebastianbergmann/environment", 850 | "keywords": [ 851 | "Xdebug", 852 | "environment", 853 | "hhvm" 854 | ], 855 | "time": "2016-08-18 05:49:44" 856 | }, 857 | { 858 | "name": "sebastian/exporter", 859 | "version": "1.2.2", 860 | "source": { 861 | "type": "git", 862 | "url": "https://github.com/sebastianbergmann/exporter.git", 863 | "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" 864 | }, 865 | "dist": { 866 | "type": "zip", 867 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", 868 | "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", 869 | "shasum": "" 870 | }, 871 | "require": { 872 | "php": ">=5.3.3", 873 | "sebastian/recursion-context": "~1.0" 874 | }, 875 | "require-dev": { 876 | "ext-mbstring": "*", 877 | "phpunit/phpunit": "~4.4" 878 | }, 879 | "type": "library", 880 | "extra": { 881 | "branch-alias": { 882 | "dev-master": "1.3.x-dev" 883 | } 884 | }, 885 | "autoload": { 886 | "classmap": [ 887 | "src/" 888 | ] 889 | }, 890 | "notification-url": "https://packagist.org/downloads/", 891 | "license": [ 892 | "BSD-3-Clause" 893 | ], 894 | "authors": [ 895 | { 896 | "name": "Jeff Welch", 897 | "email": "whatthejeff@gmail.com" 898 | }, 899 | { 900 | "name": "Volker Dusch", 901 | "email": "github@wallbash.com" 902 | }, 903 | { 904 | "name": "Bernhard Schussek", 905 | "email": "bschussek@2bepublished.at" 906 | }, 907 | { 908 | "name": "Sebastian Bergmann", 909 | "email": "sebastian@phpunit.de" 910 | }, 911 | { 912 | "name": "Adam Harvey", 913 | "email": "aharvey@php.net" 914 | } 915 | ], 916 | "description": "Provides the functionality to export PHP variables for visualization", 917 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 918 | "keywords": [ 919 | "export", 920 | "exporter" 921 | ], 922 | "time": "2016-06-17 09:04:28" 923 | }, 924 | { 925 | "name": "sebastian/global-state", 926 | "version": "1.1.1", 927 | "source": { 928 | "type": "git", 929 | "url": "https://github.com/sebastianbergmann/global-state.git", 930 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" 931 | }, 932 | "dist": { 933 | "type": "zip", 934 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", 935 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", 936 | "shasum": "" 937 | }, 938 | "require": { 939 | "php": ">=5.3.3" 940 | }, 941 | "require-dev": { 942 | "phpunit/phpunit": "~4.2" 943 | }, 944 | "suggest": { 945 | "ext-uopz": "*" 946 | }, 947 | "type": "library", 948 | "extra": { 949 | "branch-alias": { 950 | "dev-master": "1.0-dev" 951 | } 952 | }, 953 | "autoload": { 954 | "classmap": [ 955 | "src/" 956 | ] 957 | }, 958 | "notification-url": "https://packagist.org/downloads/", 959 | "license": [ 960 | "BSD-3-Clause" 961 | ], 962 | "authors": [ 963 | { 964 | "name": "Sebastian Bergmann", 965 | "email": "sebastian@phpunit.de" 966 | } 967 | ], 968 | "description": "Snapshotting of global state", 969 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 970 | "keywords": [ 971 | "global state" 972 | ], 973 | "time": "2015-10-12 03:26:01" 974 | }, 975 | { 976 | "name": "sebastian/recursion-context", 977 | "version": "1.0.2", 978 | "source": { 979 | "type": "git", 980 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 981 | "reference": "913401df809e99e4f47b27cdd781f4a258d58791" 982 | }, 983 | "dist": { 984 | "type": "zip", 985 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/913401df809e99e4f47b27cdd781f4a258d58791", 986 | "reference": "913401df809e99e4f47b27cdd781f4a258d58791", 987 | "shasum": "" 988 | }, 989 | "require": { 990 | "php": ">=5.3.3" 991 | }, 992 | "require-dev": { 993 | "phpunit/phpunit": "~4.4" 994 | }, 995 | "type": "library", 996 | "extra": { 997 | "branch-alias": { 998 | "dev-master": "1.0.x-dev" 999 | } 1000 | }, 1001 | "autoload": { 1002 | "classmap": [ 1003 | "src/" 1004 | ] 1005 | }, 1006 | "notification-url": "https://packagist.org/downloads/", 1007 | "license": [ 1008 | "BSD-3-Clause" 1009 | ], 1010 | "authors": [ 1011 | { 1012 | "name": "Jeff Welch", 1013 | "email": "whatthejeff@gmail.com" 1014 | }, 1015 | { 1016 | "name": "Sebastian Bergmann", 1017 | "email": "sebastian@phpunit.de" 1018 | }, 1019 | { 1020 | "name": "Adam Harvey", 1021 | "email": "aharvey@php.net" 1022 | } 1023 | ], 1024 | "description": "Provides functionality to recursively process PHP variables", 1025 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 1026 | "time": "2015-11-11 19:50:13" 1027 | }, 1028 | { 1029 | "name": "sebastian/version", 1030 | "version": "1.0.6", 1031 | "source": { 1032 | "type": "git", 1033 | "url": "https://github.com/sebastianbergmann/version.git", 1034 | "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" 1035 | }, 1036 | "dist": { 1037 | "type": "zip", 1038 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", 1039 | "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", 1040 | "shasum": "" 1041 | }, 1042 | "type": "library", 1043 | "autoload": { 1044 | "classmap": [ 1045 | "src/" 1046 | ] 1047 | }, 1048 | "notification-url": "https://packagist.org/downloads/", 1049 | "license": [ 1050 | "BSD-3-Clause" 1051 | ], 1052 | "authors": [ 1053 | { 1054 | "name": "Sebastian Bergmann", 1055 | "email": "sebastian@phpunit.de", 1056 | "role": "lead" 1057 | } 1058 | ], 1059 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 1060 | "homepage": "https://github.com/sebastianbergmann/version", 1061 | "time": "2015-06-21 13:59:46" 1062 | }, 1063 | { 1064 | "name": "symfony/yaml", 1065 | "version": "v3.2.0", 1066 | "source": { 1067 | "type": "git", 1068 | "url": "https://github.com/symfony/yaml.git", 1069 | "reference": "f2300ba8fbb002c028710b92e1906e7457410693" 1070 | }, 1071 | "dist": { 1072 | "type": "zip", 1073 | "url": "https://api.github.com/repos/symfony/yaml/zipball/f2300ba8fbb002c028710b92e1906e7457410693", 1074 | "reference": "f2300ba8fbb002c028710b92e1906e7457410693", 1075 | "shasum": "" 1076 | }, 1077 | "require": { 1078 | "php": ">=5.5.9" 1079 | }, 1080 | "require-dev": { 1081 | "symfony/console": "~2.8|~3.0" 1082 | }, 1083 | "suggest": { 1084 | "symfony/console": "For validating YAML files using the lint command" 1085 | }, 1086 | "type": "library", 1087 | "extra": { 1088 | "branch-alias": { 1089 | "dev-master": "3.2-dev" 1090 | } 1091 | }, 1092 | "autoload": { 1093 | "psr-4": { 1094 | "Symfony\\Component\\Yaml\\": "" 1095 | }, 1096 | "exclude-from-classmap": [ 1097 | "/Tests/" 1098 | ] 1099 | }, 1100 | "notification-url": "https://packagist.org/downloads/", 1101 | "license": [ 1102 | "MIT" 1103 | ], 1104 | "authors": [ 1105 | { 1106 | "name": "Fabien Potencier", 1107 | "email": "fabien@symfony.com" 1108 | }, 1109 | { 1110 | "name": "Symfony Community", 1111 | "homepage": "https://symfony.com/contributors" 1112 | } 1113 | ], 1114 | "description": "Symfony Yaml Component", 1115 | "homepage": "https://symfony.com", 1116 | "time": "2016-11-18 21:17:59" 1117 | }, 1118 | { 1119 | "name": "webmozart/assert", 1120 | "version": "1.2.0", 1121 | "source": { 1122 | "type": "git", 1123 | "url": "https://github.com/webmozart/assert.git", 1124 | "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" 1125 | }, 1126 | "dist": { 1127 | "type": "zip", 1128 | "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", 1129 | "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", 1130 | "shasum": "" 1131 | }, 1132 | "require": { 1133 | "php": "^5.3.3 || ^7.0" 1134 | }, 1135 | "require-dev": { 1136 | "phpunit/phpunit": "^4.6", 1137 | "sebastian/version": "^1.0.1" 1138 | }, 1139 | "type": "library", 1140 | "extra": { 1141 | "branch-alias": { 1142 | "dev-master": "1.3-dev" 1143 | } 1144 | }, 1145 | "autoload": { 1146 | "psr-4": { 1147 | "Webmozart\\Assert\\": "src/" 1148 | } 1149 | }, 1150 | "notification-url": "https://packagist.org/downloads/", 1151 | "license": [ 1152 | "MIT" 1153 | ], 1154 | "authors": [ 1155 | { 1156 | "name": "Bernhard Schussek", 1157 | "email": "bschussek@gmail.com" 1158 | } 1159 | ], 1160 | "description": "Assertions to validate method input/output with nice error messages.", 1161 | "keywords": [ 1162 | "assert", 1163 | "check", 1164 | "validate" 1165 | ], 1166 | "time": "2016-11-23 20:04:58" 1167 | } 1168 | ], 1169 | "aliases": [], 1170 | "minimum-stability": "stable", 1171 | "stability-flags": [], 1172 | "prefer-stable": false, 1173 | "prefer-lowest": false, 1174 | "platform": [], 1175 | "platform-dev": [] 1176 | } 1177 | --------------------------------------------------------------------------------