├── .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\Wrapper path";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 | [](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 | [](https://travis-ci.org/marabesi/arduino-php-wrapper)
5 | [](https://packagist.org/packages/marabesi/arduino-php-wrapper)
6 | [](https://packagist.org/packages/marabesi/arduino-php-wrapper)
7 | [](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 | [](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 | [](
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 | [](
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 |
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 |
--------------------------------------------------------------------------------