├── .coveralls.yml ├── .gitignore ├── .travis.yml ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── build.xml ├── composer.json ├── composer.lock ├── phpdoc.dist.xml ├── phpunit.xml.dist ├── src └── bitExpert │ └── Http │ └── Middleware │ └── Psr7 │ └── Prophiler │ ├── DataCollector │ └── Request.php │ └── ProphilerMiddleware.php └── tests ├── bitExpert └── Http │ └── Middleware │ └── Psr7 │ └── Prophiler │ ├── DataCollector │ └── RequestUnitTest.php │ └── ProphilerMiddlewareUnitTest.php └── bootstrap.php /.coveralls.yml: -------------------------------------------------------------------------------- 1 | coverage_clover: clover.xml 2 | json_path: coveralls-upload.json 3 | 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | build/apidoc 2 | 3 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | 3 | matrix: 4 | include: 5 | - php: 7.0 6 | - php: 7.1 7 | env: 8 | - TEST_COVERAGE=true 9 | 10 | before_script: 11 | - composer self-update 12 | # temp. fix to install the "correct" prophiler version depending on the active PHP version! Can be 13 | # removed when PHP 7 support finally lands in prophiler. 14 | - composer update fabfuel/prophiler --prefer-source 15 | - if [[ $TEST_COVERAGE == 'true' ]]; then travis_retry composer require --dev satooshi/php-coveralls ; fi 16 | 17 | script: 18 | - composer validate 19 | - ./vendor/bin/phing security:check 20 | - if [[ $TEST_COVERAGE == 'true' ]]; then ./vendor/bin/phing unit-with-coverage ; fi 21 | - if [[ $TEST_COVERAGE != 'true' ]]; then ./vendor/bin/phing unit ; fi 22 | 23 | after_script: 24 | - if [[ $TEST_COVERAGE == 'true' ]]; then ./vendor/bin/coveralls -v ; fi 25 | 26 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file, in reverse chronological order by release. 4 | 5 | ## 0.6.0 6 | 7 | ### Added 8 | 9 | - Nothing 10 | 11 | ### Deprecated 12 | 13 | - [#21](https://github.com/bitExpert/prophiler-psr7-middleware/pull/21) Update fabfuel/prophiler to version 1.6 14 | 15 | ### Removed 16 | 17 | - Nothing. 18 | 19 | ### Fixed 20 | 21 | - Nothing. 22 | 23 | ## 0.5.0 24 | 25 | ### Added 26 | 27 | - [#20](https://github.com/bitExpert/prophiler-psr7-middleware/pull/20) Update bitexpert/phing-securitychecker dep due to Travis problem with SSL 28 | - [#19](https://github.com/bitExpert/prophiler-psr7-middleware/pull/19) Update docs to refelect the changes of Expressive 2.x 29 | - [#18](https://github.com/bitExpert/prophiler-psr7-middleware/pull/18) Fix issue with php7 30 | - [#16](https://github.com/bitExpert/prophiler-psr7-middleware/pull/16) Enable coveralls support 31 | 32 | ### Deprecated 33 | 34 | - Nothing. 35 | 36 | ### Removed 37 | 38 | - Nothing. 39 | 40 | ### Fixed 41 | 42 | - Nothing. 43 | 44 | ## 0.4.0 45 | 46 | ### Added 47 | 48 | - [#15](https://github.com/bitExpert/prophiler-psr7-middleware/pull/15) Upgrade Stratigility dependency to version 2.x 49 | - [#13](https://github.com/bitExpert/prophiler-psr7-middleware/pull/13) Add contributing guide 50 | 51 | ### Deprecated 52 | 53 | - Nothing. 54 | 55 | ### Removed 56 | 57 | - Nothing. 58 | 59 | ### Fixed 60 | 61 | - Nothing. 62 | 63 | ## 0.3.0 64 | 65 | ### Added 66 | 67 | - [#5](https://github.com/bitExpert/prophiler-psr7-middleware/pull/5) Ported bitExpert internal Phing setup over to the prophiler-psr7-middleware package 68 | - [#11](https://github.com/bitExpert/prophiler-psr7-middleware/issues/11) Problems with dependency to fabfuel/prophiler 69 | 70 | ### Deprecated 71 | 72 | - Nothing. 73 | 74 | ### Removed 75 | 76 | - Nothing. 77 | 78 | ### Fixed 79 | 80 | - Nothing. 81 | 82 | ## 0.2.1 83 | 84 | ### Added 85 | 86 | - [#7](https://github.com/bitExpert/prophiler-psr7-middleware/pull/7) Fix issues observed when composing into PSR-7 app 87 | 88 | ### Deprecated 89 | 90 | - Nothing. 91 | 92 | ### Removed 93 | 94 | - Nothing. 95 | 96 | ### Fixed 97 | 98 | - Nothing. 99 | 100 | ## 0.2.0 101 | 102 | ### Added 103 | 104 | - [#2](https://github.com/bitExpert/prophiler-psr7-middleware/pull/2) Added PSR-7 compatible Request datacollector 105 | 106 | ### Deprecated 107 | 108 | - Nothing. 109 | 110 | ### Removed 111 | 112 | - Nothing. 113 | 114 | ### Fixed 115 | 116 | - Nothing. 117 | 118 | ## 0.1.0 119 | 120 | Initial release of the prophiler-psr7-middleware package. 121 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # CONTRIBUTING 2 | 3 | ## Resources 4 | 5 | If you wish to contribute to Prophiler PSR-7 middleware, please be sure to 6 | read/subscribe to the following resources: 7 | 8 | - [The PSR-2 Coding Standard](http://www.php-fig.org/psr/psr-2/) 9 | 10 | If you are working on new features or refactoring [create a proposal](https://github.com/bitExpert/prophiler-psr7-middleware/issues/new). 11 | 12 | ## Reporting Potential Security Issues 13 | 14 | If you have encountered a potential security vulnerability, please **DO NOT** report it on the public issue tracker: send it to us at [opensource@bitexpert.de](mailto:opensource@bitexpert.de) instead. 15 | We will work with you to verify the vulnerability and patch it as soon as possible. 16 | 17 | When reporting issues, please provide the following information: 18 | 19 | - Component(s) affected 20 | - A description indicating how to reproduce the issue 21 | - A summary of the security vulnerability and impact 22 | 23 | We request that you contact us via the email address above and give the project contributors a chance to resolve the vulnerability and issue a new release prior to any public exposure. 24 | This helps protect users and provides them with a chance to upgrade and/or update in order to protect their applications. 25 | 26 | For sensitive email communications, please use [our PGP key](http://pgp.mit.edu/pks/lookup?op=vindex&search=0x6DE7F8597CECDF13). 27 | 28 | ## Running Tests 29 | 30 | To run tests: 31 | 32 | 1. Clone the repository: 33 | 34 | ```console 35 | $ git clone git@github.com:bitExpert/prophiler-psr7-middleware.git 36 | $ cd prophiler-psr7-middleware 37 | ``` 38 | 39 | 2. Install dependencies via composer: 40 | 41 | ```console 42 | $ ./composer.phar install 43 | ``` 44 | 45 | If you don't have `curl` installed, you can also download `composer.phar` from https://getcomposer.org/download/ 46 | 47 | 3. Run the tests using the "test" command shipped in the `composer.json`: 48 | 49 | ```console 50 | $ composer test 51 | ``` 52 | 53 | You can turn on conditional tests with the `phpunit.xml` file. 54 | To do so: 55 | 56 | - Copy `phpunit.xml.dist` file to `phpunit.xml` 57 | - Edit `phpunit.xml` to enable any specific functionality you want to test, as well as to provide test values to utilize. 58 | 59 | ## Running Coding Standards Checks 60 | 61 | First, ensure you've installed dependencies via composer, per the previous section on running tests. 62 | To run CS checks only: 63 | 64 | ```console 65 | $ composer cs-check 66 | ``` 67 | 68 | To attempt to automatically fix common CS issues: 69 | 70 | ```console 71 | $ composer cs-fix 72 | ``` 73 | 74 | If the above fixes any CS issues, please re-run the tests to ensure they pass, and make sure you add and commit the changes after verification. 75 | 76 | ## Recommended Workflow for Contributions 77 | 78 | Your first step is to establish a public repository from which we can pull your work into the master repository. 79 | We recommend using [GitHub](https://github.com), as that is where the component is already hosted. 80 | 81 | 1. Setup a [GitHub account](http://github.com/), if you haven't yet 82 | 2. Fork the repository (http://github.com/bitExpert/prophiler-psr7-middleware) 83 | 3. Clone the canonical repository locally and enter it. 84 | 85 | ```console 86 | $ git clone git://github.com:bitExpert/prophiler-psr7-middleware.git 87 | $ cd prophiler-psr7-middleware 88 | ``` 89 | 90 | 4. Add a remote to your fork; substitute your GitHub username in the command 91 | below. 92 | 93 | ```console 94 | $ git remote add {username} git@github.com:{username}/prophiler-psr7-middleware.git 95 | $ git fetch {username} 96 | ``` 97 | 98 | ### Keeping Up-to-Date 99 | 100 | Periodically, you should update your fork or personal repository to match the canonical Prophiler PSR-7 middleware repository. 101 | Assuming you have setup your local repository per the instructions above, you can do the following: 102 | 103 | ```console 104 | $ git checkout master 105 | $ git fetch origin 106 | $ git rebase origin/master 107 | # OPTIONALLY, to keep your remote up-to-date - 108 | $ git push {username} master:master 109 | ``` 110 | 111 | If you're tracking other branches you'll want to do the same operations for those branches; simply substitute the branch names for "master". 112 | 113 | ### Working on a patch 114 | 115 | We recommend you do each new feature or bugfix in a new branch. 116 | This simplifies the task of code review as well as the task of merging your changes into the canonical repository. 117 | 118 | A typical workflow will then consist of the following: 119 | 120 | 1. Create a new local branch based off your master branch. 121 | 2. Switch to your new local branch. (This step can be combined with the 122 | previous step with the use of `git checkout -b`.) 123 | 3. Do some work, commit, repeat as necessary. 124 | 4. Push the local branch to your remote repository. 125 | 5. Send a pull request. 126 | 127 | The mechanics of this process are actually quite trivial. 128 | Below, we will create a branch for fixing an issue in the tracker. 129 | 130 | ```console 131 | $ git checkout -b hotfix/9295 132 | Switched to a new branch 'hotfix/9295' 133 | ``` 134 | 135 | ...do some work... 136 | 137 | ```console 138 | $ git commit 139 | ``` 140 | 141 | ...write your log message... 142 | 143 | ```console 144 | $ git push {username} hotfix/9295:hotfix/9295 145 | Counting objects: 38, done. 146 | Delta compression using up to 2 threads. 147 | Compression objects: 100% (18/18), done. 148 | Writing objects: 100% (20/20), 8.19KiB, done. 149 | Total 20 (delta 12), reused 0 (delta 0) 150 | To ssh://git@github.com/{username}/prophiler-psr7-middleware.git 151 | b5583aa..4f51698 HEAD -> master 152 | ``` 153 | ### Sending a PR 154 | 155 | Before sending a PR, run `composer.phar validate && composer.phar check`, as the Travis build will also run the command and will fail if the composer.lock file is not up-to-date with the changes in the composer.json file. 156 | 157 | When you’ve done that, and you’re reading to send one, you have two options: 158 | 159 | 1. If using GitHub, you can do the pull request from there. 160 | Navigate to your repository, select the branch you just created, and then select the "Pull Request" button in the upper right. Select the user/organization "bitExpert" as the recipient. 161 | 162 | 2. If using your own repository - or even if using GitHub - you can use `git format-patch` to create a patchset for us to apply; in fact, this is **recommended** for security-related patches. 163 | 164 | #### What Branch to Issue the Pull Request Against? 165 | 166 | Which branch should you issue a pull request against? 167 | 168 | - For fixes against the stable release, issue the pull request against the latest release branch. 169 | - For new features, or fixes that introduce new elements to the public API (such as new public methods or properties), issue the pull request against the "master" branch. 170 | 171 | ### Branch Cleanup 172 | 173 | As you might imagine, if you are a frequent contributor, you'll start to get a ton of branches both locally and on your remote. 174 | Once you know that your changes have been accepted to the master repository, we suggest doing some cleanup of these branches. 175 | 176 | - Local branch cleanup 177 | 178 | ```console 179 | $ git branch -d 180 | ``` 181 | 182 | - Remote branch removal 183 | 184 | ```console 185 | $ git push {username} : 186 | ``` 187 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | 203 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # prophiler-psr7-middleware 2 | This package provides a slim PSR-7 middleware implementation based on the zendframework/zend-stratigility package. The 3 | middleware is responsible for "adding" the Prophiler Toolbar output to the Response object. 4 | 5 | [![Build Status](https://travis-ci.org/bitExpert/prophiler-psr7-middleware.svg?branch=master)](https://travis-ci.org/bitExpert/prophiler-psr7-middleware) 6 | [![Coverage Status](https://coveralls.io/repos/github/bitExpert/prophiler-psr7-middleware/badge.svg?branch=master)](https://coveralls.io/github/bitExpert/prophiler-psr7-middleware?branch=master) 7 | 8 | ## Installation 9 | 10 | The preferred way of installing `bitexpert/prophiler-psr7-middleware` is through Composer. Simply add 11 | `bitexpert/prophiler-psr7-middleware` as a dependency: 12 | 13 | ``` 14 | composer.phar require bitexpert/prophiler-psr7-middleware 15 | ``` 16 | 17 | ## How to use the Prophiler PSR7 Middleware 18 | 19 | Create the Prophiler toolbar: 20 | 21 | ```php 22 | $prophiler = new \Fabfuel\Prophiler\Profiler(); 23 | $toolbar = new \Fabfuel\Prophiler\Toolbar($prophiler); 24 | ``` 25 | 26 | Set-up your PSR-7 middleware, e.g. by using zendframework/zend-stratigility: 27 | 28 | ```php 29 | $request = \Zend\Diactoros\ServerRequestFactory::fromGlobals(); 30 | $response = \Zend\Diactoros\Response(); 31 | 32 | $app = new \Zend\Stratigility\MiddlewarePipe(); 33 | ``` 34 | 35 | Add the ProphilerMiddleware to the Middleware pipe: 36 | 37 | ```php 38 | $app->pipe(new \bitExpert\Http\Middleware\Psr7\Prophiler\ProphilerMiddleware($toolbar)); 39 | ``` 40 | 41 | "Execute" the Middleware pipe: 42 | 43 | ```php 44 | $response = $app($request, $response); 45 | ``` 46 | 47 | ## How to add the Prophiler PSR7 Middleware to an Expressive app 48 | 49 | ### Expressive 1.x 50 | 51 | Register a pre_routing middleware in `config/autoload/middleware-pipeline.local.php`: 52 | 53 | ```php 54 | return [ 55 | 'middleware_pipeline' => [[ 56 | 'middleware' => bitExpert\Http\Middleware\Psr7\ 57 | Prophiler\ProphilerMiddleware::class, 58 | 'priority' => 11000, 59 | ]] 60 | ]; 61 | ``` 62 | 63 | Add a factory definition to `config/autoload/dependencies.global.php`: 64 | 65 | ```php 66 | return [ 67 | 'dependencies' => [ 68 | 'factories' => [ 69 | bitExpert\Http\Middleware\Psr7\Prophiler\ 70 | ProphilerMiddleware::class => 71 | App\Middleware\ProphilerFactory::class 72 | ] 73 | ] 74 | ]; 75 | ``` 76 | 77 | The `\App\Middleware\ProphilerFactory` implementation looks like this: 78 | 79 | ```php 80 | namespace App\Middleware; 81 | 82 | use Interop\Container\ContainerInterface; 83 | use Fabfuel\Prophiler\Profiler; 84 | use Fabfuel\Prophiler\Toolbar; 85 | use bitExpert\Http\Middleware\Psr7\Prophiler\ProphilerMiddleware; 86 | 87 | class ProphilerFactory 88 | { 89 | public function __invoke(ContainerInterface $container) 90 | { 91 | $prophiler = new Profiler(); 92 | $toolbar = new Toolbar($prophiler); 93 | return new ProphilerMiddleware($toolbar); 94 | } 95 | } 96 | ``` 97 | 98 | ### Expressive 2.x (Programmatic Pipelines) 99 | 100 | Adding the following code snippet to the `config/pipeline.php` file: 101 | 102 | ```php 103 | $app->pipe(ErrorHandler::class); 104 | 105 | $debug = $app->getContainer()->get('config')['debug'] ?? false; 106 | if ($debug) { 107 | $prophiler = new \Fabfuel\Prophiler\Profiler(); 108 | $toolbar = new \Fabfuel\Prophiler\Toolbar($prophiler); 109 | $middleware = new \bitExpert\Http\Middleware\Psr7\Prophiler\ProphilerMiddleware($toolbar); 110 | $app->pipe($middleware); 111 | } 112 | 113 | $app->pipe(ServerUrlMiddleware::class); 114 | ``` 115 | 116 | ## Configure Prophiler 117 | 118 | By default Prophiler will not log or profile anything. You can add custom benchmarks by adding 119 | the following code snippet to the code you want to profile: 120 | 121 | ```php 122 | $profiler->start('\My\Class::doSomeOtherThing', ['additional' => 'information'], 'My Component'); 123 | 124 | // here be your custom code 125 | 126 | $profiler->stop(); 127 | ``` 128 | 129 | In addition to that Prophiler offers a lot of [adapters and decorators](https://github.com/fabfuel/prophiler#adapters-and-decorators) 130 | for 3rd party tools and libraries. 131 | 132 | ## License 133 | 134 | The Prophiler PSR7 Middleware is released under the Apache 2.0 license. 135 | -------------------------------------------------------------------------------- /build.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 29 | 30 | 31 | 32 | 33 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 45 | 46 | 47 | 48 | 49 | 52 | 53 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bitexpert/prophiler-psr7-middleware", 3 | "description": "PSR-7 middleware for Prophiler", 4 | "minimum-stability": "stable", 5 | "license": "Apache-2.0", 6 | "keywords": [ 7 | "psr7", 8 | "psr-7", 9 | "prophiler" 10 | ], 11 | "authors": [ 12 | { 13 | "name": "Stephan Hochdörfer", 14 | "email": "S.Hochdoerfer@bitExpert.de", 15 | "homepage": "http://www.bitExpert.de" 16 | } 17 | ], 18 | "require": { 19 | "php": "^7.0", 20 | "psr/http-message": "^1.0", 21 | "fabfuel/prophiler": "^1.6", 22 | "zendframework/zend-stratigility": "^2.0", 23 | "bitexpert/slf4psrlog": "^0.1.0" 24 | }, 25 | "require-dev": { 26 | "phpunit/phpunit": "^4.8", 27 | "squizlabs/php_codesniffer": "^2.3", 28 | "phpdocumentor/phpdocumentor": "^2.8", 29 | "phing/phing": "^2.8.0", 30 | "bitexpert/phing-securitychecker": "^0.3.1", 31 | "monolog/monolog": "^1.14.0" 32 | }, 33 | "autoload": { 34 | "psr-4": { 35 | "bitExpert\\Http\\Middleware\\Psr7\\Prophiler\\": "src/bitExpert/Http/Middleware/Psr7/Prophiler/" 36 | } 37 | }, 38 | "autoload-dev": { 39 | "psr-4": { 40 | "bitExpert\\Http\\Middleware\\Psr7\\Prophiler\\": "tests/bitExpert/Http/Middleware/Psr7/Prophiler/" 41 | } 42 | }, 43 | "scripts": { 44 | "check": [ 45 | "@cs-check", 46 | "@test" 47 | ], 48 | "cs-check": "vendor/bin/phing sniff", 49 | "cs-fix": "vendor/bin/ping cs-fix", 50 | "test": "vendor/bin/phing unit" 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /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 | "content-hash": "6b0b88a871e5734097b745e60b00ae90", 8 | "packages": [ 9 | { 10 | "name": "bitexpert/slf4psrlog", 11 | "version": "0.1.3", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/bitExpert/slf4psrlog.git", 15 | "reference": "40408cb83f08738b630f1a90b2824c0a39b619af" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/bitExpert/slf4psrlog/zipball/40408cb83f08738b630f1a90b2824c0a39b619af", 20 | "reference": "40408cb83f08738b630f1a90b2824c0a39b619af", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "psr/log": "^1.0" 25 | }, 26 | "provide": { 27 | "psr/log-implementation": "1.0.0" 28 | }, 29 | "require-dev": { 30 | "phpdocumentor/phpdocumentor": "^2.8.0", 31 | "phpmd/phpmd": "^2.2.0", 32 | "phpunit/php-code-coverage": "^2.1.0", 33 | "phpunit/phpunit": "^4.7.0", 34 | "squizlabs/php_codesniffer": "^2.3" 35 | }, 36 | "type": "library", 37 | "autoload": { 38 | "psr-4": { 39 | "bitExpert\\Slf4PsrLog\\": "src/bitExpert/Slf4PsrLog" 40 | } 41 | }, 42 | "notification-url": "https://packagist.org/downloads/", 43 | "license": [ 44 | "Apache-2.0" 45 | ], 46 | "authors": [ 47 | { 48 | "name": "Stephan Hochdörfer", 49 | "email": "S.Hochdoerfer@bitExpert.de" 50 | } 51 | ], 52 | "description": "Simple Logging Facade for Loggers implementing PSR-3 logging interface.", 53 | "time": "2015-10-18T15:43:07+00:00" 54 | }, 55 | { 56 | "name": "fabfuel/prophiler", 57 | "version": "1.6.0", 58 | "source": { 59 | "type": "git", 60 | "url": "https://github.com/fabfuel/prophiler.git", 61 | "reference": "3b8cbc54b6181844abeeba57a44e0b2b2ea3da9c" 62 | }, 63 | "dist": { 64 | "type": "zip", 65 | "url": "https://api.github.com/repos/fabfuel/prophiler/zipball/3b8cbc54b6181844abeeba57a44e0b2b2ea3da9c", 66 | "reference": "3b8cbc54b6181844abeeba57a44e0b2b2ea3da9c", 67 | "shasum": "" 68 | }, 69 | "require": { 70 | "php": ">=5.5", 71 | "psr/log": "~1.0" 72 | }, 73 | "require-dev": { 74 | "container-interop/container-interop": "^1.1", 75 | "doctrine/orm": "~2.4", 76 | "elasticsearch/elasticsearch": "~1.3", 77 | "fabfuel/mongo": "~0.4", 78 | "phalcon/devtools": "1.3.*@dev", 79 | "phpmd/phpmd": "~1.0", 80 | "phpunit/phpunit": "~4.0", 81 | "squizlabs/php_codesniffer": "~1.0" 82 | }, 83 | "suggest": { 84 | "fabfuel/mongo": "ORM for Mongo, supports lazy loading, object references, subdocument classes and their collections.", 85 | "phalcon/devtools": "This tools provide you useful scripts, helping to develop applications that use with Phalcon." 86 | }, 87 | "type": "library", 88 | "autoload": { 89 | "psr-0": { 90 | "Fabfuel\\Prophiler\\": "src/" 91 | }, 92 | "classmap": [ 93 | "tests/" 94 | ] 95 | }, 96 | "notification-url": "https://packagist.org/downloads/", 97 | "license": [ 98 | "BSD-3-Clause" 99 | ], 100 | "authors": [ 101 | { 102 | "name": "Fabian Fuelling", 103 | "email": "fabian@fabfuel.de" 104 | } 105 | ], 106 | "description": "PHP Profiler & Developer Toolbar built for Phalcon", 107 | "time": "2017-09-16T06:49:25+00:00" 108 | }, 109 | { 110 | "name": "http-interop/http-middleware", 111 | "version": "0.4.1", 112 | "source": { 113 | "type": "git", 114 | "url": "https://github.com/http-interop/http-middleware.git", 115 | "reference": "9a801fe60e70d5d608b61d56b2dcde29516c81b9" 116 | }, 117 | "dist": { 118 | "type": "zip", 119 | "url": "https://api.github.com/repos/http-interop/http-middleware/zipball/9a801fe60e70d5d608b61d56b2dcde29516c81b9", 120 | "reference": "9a801fe60e70d5d608b61d56b2dcde29516c81b9", 121 | "shasum": "" 122 | }, 123 | "require": { 124 | "php": ">=5.3.0", 125 | "psr/http-message": "^1.0" 126 | }, 127 | "type": "library", 128 | "extra": { 129 | "branch-alias": { 130 | "dev-master": "1.0.x-dev" 131 | } 132 | }, 133 | "autoload": { 134 | "psr-4": { 135 | "Interop\\Http\\ServerMiddleware\\": "src/" 136 | } 137 | }, 138 | "notification-url": "https://packagist.org/downloads/", 139 | "license": [ 140 | "MIT" 141 | ], 142 | "authors": [ 143 | { 144 | "name": "PHP-FIG", 145 | "homepage": "http://www.php-fig.org/" 146 | } 147 | ], 148 | "description": "Common interface for HTTP server-side middleware", 149 | "keywords": [ 150 | "factory", 151 | "http", 152 | "middleware", 153 | "psr", 154 | "psr-17", 155 | "psr-7", 156 | "request", 157 | "response" 158 | ], 159 | "time": "2017-01-14T15:23:42+00:00" 160 | }, 161 | { 162 | "name": "psr/http-message", 163 | "version": "1.0.1", 164 | "source": { 165 | "type": "git", 166 | "url": "https://github.com/php-fig/http-message.git", 167 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" 168 | }, 169 | "dist": { 170 | "type": "zip", 171 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", 172 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", 173 | "shasum": "" 174 | }, 175 | "require": { 176 | "php": ">=5.3.0" 177 | }, 178 | "type": "library", 179 | "extra": { 180 | "branch-alias": { 181 | "dev-master": "1.0.x-dev" 182 | } 183 | }, 184 | "autoload": { 185 | "psr-4": { 186 | "Psr\\Http\\Message\\": "src/" 187 | } 188 | }, 189 | "notification-url": "https://packagist.org/downloads/", 190 | "license": [ 191 | "MIT" 192 | ], 193 | "authors": [ 194 | { 195 | "name": "PHP-FIG", 196 | "homepage": "http://www.php-fig.org/" 197 | } 198 | ], 199 | "description": "Common interface for HTTP messages", 200 | "homepage": "https://github.com/php-fig/http-message", 201 | "keywords": [ 202 | "http", 203 | "http-message", 204 | "psr", 205 | "psr-7", 206 | "request", 207 | "response" 208 | ], 209 | "time": "2016-08-06T14:39:51+00:00" 210 | }, 211 | { 212 | "name": "psr/log", 213 | "version": "1.0.2", 214 | "source": { 215 | "type": "git", 216 | "url": "https://github.com/php-fig/log.git", 217 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" 218 | }, 219 | "dist": { 220 | "type": "zip", 221 | "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", 222 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", 223 | "shasum": "" 224 | }, 225 | "require": { 226 | "php": ">=5.3.0" 227 | }, 228 | "type": "library", 229 | "extra": { 230 | "branch-alias": { 231 | "dev-master": "1.0.x-dev" 232 | } 233 | }, 234 | "autoload": { 235 | "psr-4": { 236 | "Psr\\Log\\": "Psr/Log/" 237 | } 238 | }, 239 | "notification-url": "https://packagist.org/downloads/", 240 | "license": [ 241 | "MIT" 242 | ], 243 | "authors": [ 244 | { 245 | "name": "PHP-FIG", 246 | "homepage": "http://www.php-fig.org/" 247 | } 248 | ], 249 | "description": "Common interface for logging libraries", 250 | "homepage": "https://github.com/php-fig/log", 251 | "keywords": [ 252 | "log", 253 | "psr", 254 | "psr-3" 255 | ], 256 | "time": "2016-10-10T12:19:37+00:00" 257 | }, 258 | { 259 | "name": "zendframework/zend-escaper", 260 | "version": "2.5.2", 261 | "source": { 262 | "type": "git", 263 | "url": "https://github.com/zendframework/zend-escaper.git", 264 | "reference": "2dcd14b61a72d8b8e27d579c6344e12c26141d4e" 265 | }, 266 | "dist": { 267 | "type": "zip", 268 | "url": "https://api.github.com/repos/zendframework/zend-escaper/zipball/2dcd14b61a72d8b8e27d579c6344e12c26141d4e", 269 | "reference": "2dcd14b61a72d8b8e27d579c6344e12c26141d4e", 270 | "shasum": "" 271 | }, 272 | "require": { 273 | "php": ">=5.5" 274 | }, 275 | "require-dev": { 276 | "fabpot/php-cs-fixer": "1.7.*", 277 | "phpunit/phpunit": "~4.0" 278 | }, 279 | "type": "library", 280 | "extra": { 281 | "branch-alias": { 282 | "dev-master": "2.5-dev", 283 | "dev-develop": "2.6-dev" 284 | } 285 | }, 286 | "autoload": { 287 | "psr-4": { 288 | "Zend\\Escaper\\": "src/" 289 | } 290 | }, 291 | "notification-url": "https://packagist.org/downloads/", 292 | "license": [ 293 | "BSD-3-Clause" 294 | ], 295 | "homepage": "https://github.com/zendframework/zend-escaper", 296 | "keywords": [ 297 | "escaper", 298 | "zf2" 299 | ], 300 | "time": "2016-06-30T19:48:38+00:00" 301 | }, 302 | { 303 | "name": "zendframework/zend-stratigility", 304 | "version": "2.0.1", 305 | "source": { 306 | "type": "git", 307 | "url": "https://github.com/zendframework/zend-stratigility.git", 308 | "reference": "229e7d94010d09d9e68096ff6f1d35f354d8dac9" 309 | }, 310 | "dist": { 311 | "type": "zip", 312 | "url": "https://api.github.com/repos/zendframework/zend-stratigility/zipball/229e7d94010d09d9e68096ff6f1d35f354d8dac9", 313 | "reference": "229e7d94010d09d9e68096ff6f1d35f354d8dac9", 314 | "shasum": "" 315 | }, 316 | "require": { 317 | "http-interop/http-middleware": "^0.4.1", 318 | "php": "^5.6 || ^7.0", 319 | "psr/http-message": "^1.0", 320 | "zendframework/zend-escaper": "^2.3" 321 | }, 322 | "require-dev": { 323 | "malukenho/docheader": "^0.1.5", 324 | "phpunit/phpunit": "^5.7", 325 | "zendframework/zend-coding-standard": "~1.0.0", 326 | "zendframework/zend-diactoros": "^1.0" 327 | }, 328 | "suggest": { 329 | "psr/http-message-implementation": "Please install a psr/http-message-implementation to consume Stratigility; e.g., zendframework/zend-diactoros" 330 | }, 331 | "type": "library", 332 | "extra": { 333 | "branch-alias": { 334 | "dev-master": "2.0.0-dev", 335 | "dev-develop": "2.1.0-dev" 336 | } 337 | }, 338 | "autoload": { 339 | "psr-4": { 340 | "Zend\\Stratigility\\": "src/" 341 | } 342 | }, 343 | "notification-url": "https://packagist.org/downloads/", 344 | "license": [ 345 | "BSD-3-Clause" 346 | ], 347 | "description": "Middleware for PHP", 348 | "homepage": "https://github.com/zendframework/zend-stratigility", 349 | "keywords": [ 350 | "http", 351 | "middleware", 352 | "psr-7" 353 | ], 354 | "time": "2017-01-25T19:16:16+00:00" 355 | } 356 | ], 357 | "packages-dev": [ 358 | { 359 | "name": "bitexpert/phing-securitychecker", 360 | "version": "v0.3.1", 361 | "source": { 362 | "type": "git", 363 | "url": "https://github.com/bitExpert/phing-securitychecker.git", 364 | "reference": "1c059c24af59ad12e50a56c5894ecf5d06eb01df" 365 | }, 366 | "dist": { 367 | "type": "zip", 368 | "url": "https://api.github.com/repos/bitExpert/phing-securitychecker/zipball/1c059c24af59ad12e50a56c5894ecf5d06eb01df", 369 | "reference": "1c059c24af59ad12e50a56c5894ecf5d06eb01df", 370 | "shasum": "" 371 | }, 372 | "require": { 373 | "phing/phing": "^2.8.0", 374 | "php": "^7.0", 375 | "sensiolabs/security-checker": "^4.0" 376 | }, 377 | "require-dev": { 378 | "phpdocumentor/phpdocumentor": "^2.8", 379 | "phpunit/phpunit": "^6.0", 380 | "squizlabs/php_codesniffer": "^2.3" 381 | }, 382 | "type": "library", 383 | "autoload": { 384 | "psr-4": { 385 | "bitExpert\\Phing\\SecurityChecker\\": "src/bitExpert/Phing/SecurityChecker" 386 | } 387 | }, 388 | "notification-url": "https://packagist.org/downloads/", 389 | "license": [ 390 | "Apache-2.0" 391 | ], 392 | "authors": [ 393 | { 394 | "name": "Stephan Hochdörfer", 395 | "email": "S.Hochdoerfer@bitExpert.de", 396 | "homepage": "http://www.bitExpert.de" 397 | } 398 | ], 399 | "description": "Security Checker Phing Task", 400 | "keywords": [ 401 | "Security Checker", 402 | "phing" 403 | ], 404 | "time": "2017-05-26T08:53:20+00:00" 405 | }, 406 | { 407 | "name": "cilex/cilex", 408 | "version": "1.1.0", 409 | "source": { 410 | "type": "git", 411 | "url": "https://github.com/Cilex/Cilex.git", 412 | "reference": "7acd965a609a56d0345e8b6071c261fbdb926cb5" 413 | }, 414 | "dist": { 415 | "type": "zip", 416 | "url": "https://api.github.com/repos/Cilex/Cilex/zipball/7acd965a609a56d0345e8b6071c261fbdb926cb5", 417 | "reference": "7acd965a609a56d0345e8b6071c261fbdb926cb5", 418 | "shasum": "" 419 | }, 420 | "require": { 421 | "cilex/console-service-provider": "1.*", 422 | "php": ">=5.3.3", 423 | "pimple/pimple": "~1.0", 424 | "symfony/finder": "~2.1", 425 | "symfony/process": "~2.1" 426 | }, 427 | "require-dev": { 428 | "phpunit/phpunit": "3.7.*", 429 | "symfony/validator": "~2.1" 430 | }, 431 | "suggest": { 432 | "monolog/monolog": ">=1.0.0", 433 | "symfony/validator": ">=1.0.0", 434 | "symfony/yaml": ">=1.0.0" 435 | }, 436 | "type": "library", 437 | "extra": { 438 | "branch-alias": { 439 | "dev-master": "1.0-dev" 440 | } 441 | }, 442 | "autoload": { 443 | "psr-0": { 444 | "Cilex": "src/" 445 | } 446 | }, 447 | "notification-url": "https://packagist.org/downloads/", 448 | "license": [ 449 | "MIT" 450 | ], 451 | "authors": [ 452 | { 453 | "name": "Mike van Riel", 454 | "email": "mike.vanriel@naenius.com" 455 | } 456 | ], 457 | "description": "The PHP micro-framework for Command line tools based on the Symfony2 Components", 458 | "homepage": "http://cilex.github.com", 459 | "keywords": [ 460 | "cli", 461 | "microframework" 462 | ], 463 | "time": "2014-03-29T14:03:13+00:00" 464 | }, 465 | { 466 | "name": "cilex/console-service-provider", 467 | "version": "1.0.0", 468 | "source": { 469 | "type": "git", 470 | "url": "https://github.com/Cilex/console-service-provider.git", 471 | "reference": "25ee3d1875243d38e1a3448ff94bdf944f70d24e" 472 | }, 473 | "dist": { 474 | "type": "zip", 475 | "url": "https://api.github.com/repos/Cilex/console-service-provider/zipball/25ee3d1875243d38e1a3448ff94bdf944f70d24e", 476 | "reference": "25ee3d1875243d38e1a3448ff94bdf944f70d24e", 477 | "shasum": "" 478 | }, 479 | "require": { 480 | "php": ">=5.3.3", 481 | "pimple/pimple": "1.*@dev", 482 | "symfony/console": "~2.1" 483 | }, 484 | "require-dev": { 485 | "cilex/cilex": "1.*@dev", 486 | "silex/silex": "1.*@dev" 487 | }, 488 | "type": "library", 489 | "extra": { 490 | "branch-alias": { 491 | "dev-master": "1.0-dev" 492 | } 493 | }, 494 | "autoload": { 495 | "psr-0": { 496 | "Cilex\\Provider\\Console": "src" 497 | } 498 | }, 499 | "notification-url": "https://packagist.org/downloads/", 500 | "license": [ 501 | "MIT" 502 | ], 503 | "authors": [ 504 | { 505 | "name": "Beau Simensen", 506 | "email": "beau@dflydev.com", 507 | "homepage": "http://beausimensen.com" 508 | }, 509 | { 510 | "name": "Mike van Riel", 511 | "email": "mike.vanriel@naenius.com" 512 | } 513 | ], 514 | "description": "Console Service Provider", 515 | "keywords": [ 516 | "cilex", 517 | "console", 518 | "pimple", 519 | "service-provider", 520 | "silex" 521 | ], 522 | "time": "2012-12-19T10:50:58+00:00" 523 | }, 524 | { 525 | "name": "composer/ca-bundle", 526 | "version": "1.0.8", 527 | "source": { 528 | "type": "git", 529 | "url": "https://github.com/composer/ca-bundle.git", 530 | "reference": "9dd73a03951357922d8aee6cc084500de93e2343" 531 | }, 532 | "dist": { 533 | "type": "zip", 534 | "url": "https://api.github.com/repos/composer/ca-bundle/zipball/9dd73a03951357922d8aee6cc084500de93e2343", 535 | "reference": "9dd73a03951357922d8aee6cc084500de93e2343", 536 | "shasum": "" 537 | }, 538 | "require": { 539 | "ext-openssl": "*", 540 | "ext-pcre": "*", 541 | "php": "^5.3.2 || ^7.0" 542 | }, 543 | "require-dev": { 544 | "phpunit/phpunit": "^4.5", 545 | "psr/log": "^1.0", 546 | "symfony/process": "^2.5 || ^3.0" 547 | }, 548 | "suggest": { 549 | "symfony/process": "This is necessary to reliably check whether openssl_x509_parse is vulnerable on older php versions, but can be ignored on PHP 5.5.6+" 550 | }, 551 | "type": "library", 552 | "extra": { 553 | "branch-alias": { 554 | "dev-master": "1.x-dev" 555 | } 556 | }, 557 | "autoload": { 558 | "psr-4": { 559 | "Composer\\CaBundle\\": "src" 560 | } 561 | }, 562 | "notification-url": "https://packagist.org/downloads/", 563 | "license": [ 564 | "MIT" 565 | ], 566 | "authors": [ 567 | { 568 | "name": "Jordi Boggiano", 569 | "email": "j.boggiano@seld.be", 570 | "homepage": "http://seld.be" 571 | } 572 | ], 573 | "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", 574 | "keywords": [ 575 | "cabundle", 576 | "cacert", 577 | "certificate", 578 | "ssl", 579 | "tls" 580 | ], 581 | "time": "2017-09-11T07:24:36+00:00" 582 | }, 583 | { 584 | "name": "container-interop/container-interop", 585 | "version": "1.2.0", 586 | "source": { 587 | "type": "git", 588 | "url": "https://github.com/container-interop/container-interop.git", 589 | "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8" 590 | }, 591 | "dist": { 592 | "type": "zip", 593 | "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8", 594 | "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8", 595 | "shasum": "" 596 | }, 597 | "require": { 598 | "psr/container": "^1.0" 599 | }, 600 | "type": "library", 601 | "autoload": { 602 | "psr-4": { 603 | "Interop\\Container\\": "src/Interop/Container/" 604 | } 605 | }, 606 | "notification-url": "https://packagist.org/downloads/", 607 | "license": [ 608 | "MIT" 609 | ], 610 | "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", 611 | "homepage": "https://github.com/container-interop/container-interop", 612 | "time": "2017-02-14T19:40:03+00:00" 613 | }, 614 | { 615 | "name": "doctrine/annotations", 616 | "version": "v1.4.0", 617 | "source": { 618 | "type": "git", 619 | "url": "https://github.com/doctrine/annotations.git", 620 | "reference": "54cacc9b81758b14e3ce750f205a393d52339e97" 621 | }, 622 | "dist": { 623 | "type": "zip", 624 | "url": "https://api.github.com/repos/doctrine/annotations/zipball/54cacc9b81758b14e3ce750f205a393d52339e97", 625 | "reference": "54cacc9b81758b14e3ce750f205a393d52339e97", 626 | "shasum": "" 627 | }, 628 | "require": { 629 | "doctrine/lexer": "1.*", 630 | "php": "^5.6 || ^7.0" 631 | }, 632 | "require-dev": { 633 | "doctrine/cache": "1.*", 634 | "phpunit/phpunit": "^5.7" 635 | }, 636 | "type": "library", 637 | "extra": { 638 | "branch-alias": { 639 | "dev-master": "1.4.x-dev" 640 | } 641 | }, 642 | "autoload": { 643 | "psr-4": { 644 | "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" 645 | } 646 | }, 647 | "notification-url": "https://packagist.org/downloads/", 648 | "license": [ 649 | "MIT" 650 | ], 651 | "authors": [ 652 | { 653 | "name": "Roman Borschel", 654 | "email": "roman@code-factory.org" 655 | }, 656 | { 657 | "name": "Benjamin Eberlei", 658 | "email": "kontakt@beberlei.de" 659 | }, 660 | { 661 | "name": "Guilherme Blanco", 662 | "email": "guilhermeblanco@gmail.com" 663 | }, 664 | { 665 | "name": "Jonathan Wage", 666 | "email": "jonwage@gmail.com" 667 | }, 668 | { 669 | "name": "Johannes Schmitt", 670 | "email": "schmittjoh@gmail.com" 671 | } 672 | ], 673 | "description": "Docblock Annotations Parser", 674 | "homepage": "http://www.doctrine-project.org", 675 | "keywords": [ 676 | "annotations", 677 | "docblock", 678 | "parser" 679 | ], 680 | "time": "2017-02-24T16:22:25+00:00" 681 | }, 682 | { 683 | "name": "doctrine/instantiator", 684 | "version": "1.0.5", 685 | "source": { 686 | "type": "git", 687 | "url": "https://github.com/doctrine/instantiator.git", 688 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" 689 | }, 690 | "dist": { 691 | "type": "zip", 692 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", 693 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", 694 | "shasum": "" 695 | }, 696 | "require": { 697 | "php": ">=5.3,<8.0-DEV" 698 | }, 699 | "require-dev": { 700 | "athletic/athletic": "~0.1.8", 701 | "ext-pdo": "*", 702 | "ext-phar": "*", 703 | "phpunit/phpunit": "~4.0", 704 | "squizlabs/php_codesniffer": "~2.0" 705 | }, 706 | "type": "library", 707 | "extra": { 708 | "branch-alias": { 709 | "dev-master": "1.0.x-dev" 710 | } 711 | }, 712 | "autoload": { 713 | "psr-4": { 714 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 715 | } 716 | }, 717 | "notification-url": "https://packagist.org/downloads/", 718 | "license": [ 719 | "MIT" 720 | ], 721 | "authors": [ 722 | { 723 | "name": "Marco Pivetta", 724 | "email": "ocramius@gmail.com", 725 | "homepage": "http://ocramius.github.com/" 726 | } 727 | ], 728 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 729 | "homepage": "https://github.com/doctrine/instantiator", 730 | "keywords": [ 731 | "constructor", 732 | "instantiate" 733 | ], 734 | "time": "2015-06-14T21:17:01+00:00" 735 | }, 736 | { 737 | "name": "doctrine/lexer", 738 | "version": "v1.0.1", 739 | "source": { 740 | "type": "git", 741 | "url": "https://github.com/doctrine/lexer.git", 742 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" 743 | }, 744 | "dist": { 745 | "type": "zip", 746 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", 747 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", 748 | "shasum": "" 749 | }, 750 | "require": { 751 | "php": ">=5.3.2" 752 | }, 753 | "type": "library", 754 | "extra": { 755 | "branch-alias": { 756 | "dev-master": "1.0.x-dev" 757 | } 758 | }, 759 | "autoload": { 760 | "psr-0": { 761 | "Doctrine\\Common\\Lexer\\": "lib/" 762 | } 763 | }, 764 | "notification-url": "https://packagist.org/downloads/", 765 | "license": [ 766 | "MIT" 767 | ], 768 | "authors": [ 769 | { 770 | "name": "Roman Borschel", 771 | "email": "roman@code-factory.org" 772 | }, 773 | { 774 | "name": "Guilherme Blanco", 775 | "email": "guilhermeblanco@gmail.com" 776 | }, 777 | { 778 | "name": "Johannes Schmitt", 779 | "email": "schmittjoh@gmail.com" 780 | } 781 | ], 782 | "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", 783 | "homepage": "http://www.doctrine-project.org", 784 | "keywords": [ 785 | "lexer", 786 | "parser" 787 | ], 788 | "time": "2014-09-09T13:34:57+00:00" 789 | }, 790 | { 791 | "name": "erusev/parsedown", 792 | "version": "1.6.3", 793 | "source": { 794 | "type": "git", 795 | "url": "https://github.com/erusev/parsedown.git", 796 | "reference": "728952b90a333b5c6f77f06ea9422b94b585878d" 797 | }, 798 | "dist": { 799 | "type": "zip", 800 | "url": "https://api.github.com/repos/erusev/parsedown/zipball/728952b90a333b5c6f77f06ea9422b94b585878d", 801 | "reference": "728952b90a333b5c6f77f06ea9422b94b585878d", 802 | "shasum": "" 803 | }, 804 | "require": { 805 | "php": ">=5.3.0" 806 | }, 807 | "type": "library", 808 | "autoload": { 809 | "psr-0": { 810 | "Parsedown": "" 811 | } 812 | }, 813 | "notification-url": "https://packagist.org/downloads/", 814 | "license": [ 815 | "MIT" 816 | ], 817 | "authors": [ 818 | { 819 | "name": "Emanuil Rusev", 820 | "email": "hello@erusev.com", 821 | "homepage": "http://erusev.com" 822 | } 823 | ], 824 | "description": "Parser for Markdown.", 825 | "homepage": "http://parsedown.org", 826 | "keywords": [ 827 | "markdown", 828 | "parser" 829 | ], 830 | "time": "2017-05-14T14:47:48+00:00" 831 | }, 832 | { 833 | "name": "herrera-io/json", 834 | "version": "1.0.3", 835 | "source": { 836 | "type": "git", 837 | "url": "https://github.com/kherge-php/json.git", 838 | "reference": "60c696c9370a1e5136816ca557c17f82a6fa83f1" 839 | }, 840 | "dist": { 841 | "type": "zip", 842 | "url": "https://api.github.com/repos/kherge-php/json/zipball/60c696c9370a1e5136816ca557c17f82a6fa83f1", 843 | "reference": "60c696c9370a1e5136816ca557c17f82a6fa83f1", 844 | "shasum": "" 845 | }, 846 | "require": { 847 | "ext-json": "*", 848 | "justinrainbow/json-schema": ">=1.0,<2.0-dev", 849 | "php": ">=5.3.3", 850 | "seld/jsonlint": ">=1.0,<2.0-dev" 851 | }, 852 | "require-dev": { 853 | "herrera-io/phpunit-test-case": "1.*", 854 | "mikey179/vfsstream": "1.1.0", 855 | "phpunit/phpunit": "3.7.*" 856 | }, 857 | "type": "library", 858 | "extra": { 859 | "branch-alias": { 860 | "dev-master": "1.0-dev" 861 | } 862 | }, 863 | "autoload": { 864 | "files": [ 865 | "src/lib/json_version.php" 866 | ], 867 | "psr-0": { 868 | "Herrera\\Json": "src/lib" 869 | } 870 | }, 871 | "notification-url": "https://packagist.org/downloads/", 872 | "license": [ 873 | "MIT" 874 | ], 875 | "authors": [ 876 | { 877 | "name": "Kevin Herrera", 878 | "email": "kevin@herrera.io", 879 | "homepage": "http://kevin.herrera.io" 880 | } 881 | ], 882 | "description": "A library for simplifying JSON linting and validation.", 883 | "homepage": "http://herrera-io.github.com/php-json", 884 | "keywords": [ 885 | "json", 886 | "lint", 887 | "schema", 888 | "validate" 889 | ], 890 | "abandoned": "kherge/json", 891 | "time": "2013-10-30T16:51:34+00:00" 892 | }, 893 | { 894 | "name": "herrera-io/phar-update", 895 | "version": "1.0.3", 896 | "source": { 897 | "type": "git", 898 | "url": "https://github.com/kherge-abandoned/php-phar-update.git", 899 | "reference": "00a79e1d5b8cf3c080a2e3becf1ddf7a7fea025b" 900 | }, 901 | "dist": { 902 | "type": "zip", 903 | "url": "https://api.github.com/repos/kherge-abandoned/php-phar-update/zipball/00a79e1d5b8cf3c080a2e3becf1ddf7a7fea025b", 904 | "reference": "00a79e1d5b8cf3c080a2e3becf1ddf7a7fea025b", 905 | "shasum": "" 906 | }, 907 | "require": { 908 | "herrera-io/json": "1.*", 909 | "kherge/version": "1.*", 910 | "php": ">=5.3.3" 911 | }, 912 | "require-dev": { 913 | "herrera-io/phpunit-test-case": "1.*", 914 | "mikey179/vfsstream": "1.1.0", 915 | "phpunit/phpunit": "3.7.*" 916 | }, 917 | "type": "library", 918 | "extra": { 919 | "branch-alias": { 920 | "dev-master": "1.0-dev" 921 | } 922 | }, 923 | "autoload": { 924 | "files": [ 925 | "src/lib/constants.php" 926 | ], 927 | "psr-0": { 928 | "Herrera\\Phar\\Update": "src/lib" 929 | } 930 | }, 931 | "notification-url": "https://packagist.org/downloads/", 932 | "license": [ 933 | "MIT" 934 | ], 935 | "authors": [ 936 | { 937 | "name": "Kevin Herrera", 938 | "email": "kevin@herrera.io", 939 | "homepage": "http://kevin.herrera.io" 940 | } 941 | ], 942 | "description": "A library for self-updating Phars.", 943 | "homepage": "http://herrera-io.github.com/php-phar-update", 944 | "keywords": [ 945 | "phar", 946 | "update" 947 | ], 948 | "abandoned": true, 949 | "time": "2013-10-30T17:23:01+00:00" 950 | }, 951 | { 952 | "name": "jms/metadata", 953 | "version": "1.6.0", 954 | "source": { 955 | "type": "git", 956 | "url": "https://github.com/schmittjoh/metadata.git", 957 | "reference": "6a06970a10e0a532fb52d3959547123b84a3b3ab" 958 | }, 959 | "dist": { 960 | "type": "zip", 961 | "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/6a06970a10e0a532fb52d3959547123b84a3b3ab", 962 | "reference": "6a06970a10e0a532fb52d3959547123b84a3b3ab", 963 | "shasum": "" 964 | }, 965 | "require": { 966 | "php": ">=5.3.0" 967 | }, 968 | "require-dev": { 969 | "doctrine/cache": "~1.0", 970 | "symfony/cache": "~3.1" 971 | }, 972 | "type": "library", 973 | "extra": { 974 | "branch-alias": { 975 | "dev-master": "1.5.x-dev" 976 | } 977 | }, 978 | "autoload": { 979 | "psr-0": { 980 | "Metadata\\": "src/" 981 | } 982 | }, 983 | "notification-url": "https://packagist.org/downloads/", 984 | "license": [ 985 | "Apache-2.0" 986 | ], 987 | "authors": [ 988 | { 989 | "name": "Johannes M. Schmitt", 990 | "email": "schmittjoh@gmail.com" 991 | } 992 | ], 993 | "description": "Class/method/property metadata management in PHP", 994 | "keywords": [ 995 | "annotations", 996 | "metadata", 997 | "xml", 998 | "yaml" 999 | ], 1000 | "time": "2016-12-05T10:18:33+00:00" 1001 | }, 1002 | { 1003 | "name": "jms/parser-lib", 1004 | "version": "1.0.0", 1005 | "source": { 1006 | "type": "git", 1007 | "url": "https://github.com/schmittjoh/parser-lib.git", 1008 | "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d" 1009 | }, 1010 | "dist": { 1011 | "type": "zip", 1012 | "url": "https://api.github.com/repos/schmittjoh/parser-lib/zipball/c509473bc1b4866415627af0e1c6cc8ac97fa51d", 1013 | "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d", 1014 | "shasum": "" 1015 | }, 1016 | "require": { 1017 | "phpoption/phpoption": ">=0.9,<2.0-dev" 1018 | }, 1019 | "type": "library", 1020 | "extra": { 1021 | "branch-alias": { 1022 | "dev-master": "1.0-dev" 1023 | } 1024 | }, 1025 | "autoload": { 1026 | "psr-0": { 1027 | "JMS\\": "src/" 1028 | } 1029 | }, 1030 | "notification-url": "https://packagist.org/downloads/", 1031 | "license": [ 1032 | "Apache2" 1033 | ], 1034 | "description": "A library for easily creating recursive-descent parsers.", 1035 | "time": "2012-11-18T18:08:43+00:00" 1036 | }, 1037 | { 1038 | "name": "jms/serializer", 1039 | "version": "1.9.0", 1040 | "source": { 1041 | "type": "git", 1042 | "url": "https://github.com/schmittjoh/serializer.git", 1043 | "reference": "f4683f41ebf21e60667447bb49939bee35807c3c" 1044 | }, 1045 | "dist": { 1046 | "type": "zip", 1047 | "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/f4683f41ebf21e60667447bb49939bee35807c3c", 1048 | "reference": "f4683f41ebf21e60667447bb49939bee35807c3c", 1049 | "shasum": "" 1050 | }, 1051 | "require": { 1052 | "doctrine/annotations": "^1.0", 1053 | "doctrine/instantiator": "^1.0.3", 1054 | "jms/metadata": "~1.1", 1055 | "jms/parser-lib": "1.*", 1056 | "php": ">=5.5.0", 1057 | "phpcollection/phpcollection": "~0.1", 1058 | "phpoption/phpoption": "^1.1" 1059 | }, 1060 | "conflict": { 1061 | "jms/serializer-bundle": "<1.2.1", 1062 | "twig/twig": "<1.12" 1063 | }, 1064 | "require-dev": { 1065 | "doctrine/orm": "~2.1", 1066 | "doctrine/phpcr-odm": "^1.3|^2.0", 1067 | "ext-pdo_sqlite": "*", 1068 | "jackalope/jackalope-doctrine-dbal": "^1.1.5", 1069 | "phpunit/phpunit": "^4.8|^5.0", 1070 | "propel/propel1": "~1.7", 1071 | "symfony/expression-language": "^2.6|^3.0", 1072 | "symfony/filesystem": "^2.1", 1073 | "symfony/form": "~2.1|^3.0", 1074 | "symfony/translation": "^2.1|^3.0", 1075 | "symfony/validator": "^2.2|^3.0", 1076 | "symfony/yaml": "^2.1|^3.0", 1077 | "twig/twig": "~1.12|~2.0" 1078 | }, 1079 | "suggest": { 1080 | "doctrine/cache": "Required if you like to use cache functionality.", 1081 | "doctrine/collections": "Required if you like to use doctrine collection types as ArrayCollection.", 1082 | "symfony/yaml": "Required if you'd like to serialize data to YAML format." 1083 | }, 1084 | "type": "library", 1085 | "extra": { 1086 | "branch-alias": { 1087 | "dev-master": "1.9-dev" 1088 | } 1089 | }, 1090 | "autoload": { 1091 | "psr-0": { 1092 | "JMS\\Serializer": "src/" 1093 | } 1094 | }, 1095 | "notification-url": "https://packagist.org/downloads/", 1096 | "license": [ 1097 | "Apache-2.0" 1098 | ], 1099 | "authors": [ 1100 | { 1101 | "name": "Asmir Mustafic", 1102 | "email": "goetas@gmail.com" 1103 | }, 1104 | { 1105 | "name": "Johannes M. Schmitt", 1106 | "email": "schmittjoh@gmail.com" 1107 | } 1108 | ], 1109 | "description": "Library for (de-)serializing data of any complexity; supports XML, JSON, and YAML.", 1110 | "homepage": "http://jmsyst.com/libs/serializer", 1111 | "keywords": [ 1112 | "deserialization", 1113 | "jaxb", 1114 | "json", 1115 | "serialization", 1116 | "xml" 1117 | ], 1118 | "time": "2017-09-28T15:17:28+00:00" 1119 | }, 1120 | { 1121 | "name": "justinrainbow/json-schema", 1122 | "version": "1.6.1", 1123 | "source": { 1124 | "type": "git", 1125 | "url": "https://github.com/justinrainbow/json-schema.git", 1126 | "reference": "cc84765fb7317f6b07bd8ac78364747f95b86341" 1127 | }, 1128 | "dist": { 1129 | "type": "zip", 1130 | "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/cc84765fb7317f6b07bd8ac78364747f95b86341", 1131 | "reference": "cc84765fb7317f6b07bd8ac78364747f95b86341", 1132 | "shasum": "" 1133 | }, 1134 | "require": { 1135 | "php": ">=5.3.29" 1136 | }, 1137 | "require-dev": { 1138 | "json-schema/json-schema-test-suite": "1.1.0", 1139 | "phpdocumentor/phpdocumentor": "~2", 1140 | "phpunit/phpunit": "~3.7" 1141 | }, 1142 | "bin": [ 1143 | "bin/validate-json" 1144 | ], 1145 | "type": "library", 1146 | "extra": { 1147 | "branch-alias": { 1148 | "dev-master": "1.6.x-dev" 1149 | } 1150 | }, 1151 | "autoload": { 1152 | "psr-4": { 1153 | "JsonSchema\\": "src/JsonSchema/" 1154 | } 1155 | }, 1156 | "notification-url": "https://packagist.org/downloads/", 1157 | "license": [ 1158 | "BSD-3-Clause" 1159 | ], 1160 | "authors": [ 1161 | { 1162 | "name": "Bruno Prieto Reis", 1163 | "email": "bruno.p.reis@gmail.com" 1164 | }, 1165 | { 1166 | "name": "Justin Rainbow", 1167 | "email": "justin.rainbow@gmail.com" 1168 | }, 1169 | { 1170 | "name": "Igor Wiedler", 1171 | "email": "igor@wiedler.ch" 1172 | }, 1173 | { 1174 | "name": "Robert Schönthal", 1175 | "email": "seroscho@googlemail.com" 1176 | } 1177 | ], 1178 | "description": "A library to validate a json schema.", 1179 | "homepage": "https://github.com/justinrainbow/json-schema", 1180 | "keywords": [ 1181 | "json", 1182 | "schema" 1183 | ], 1184 | "time": "2016-01-25T15:43:01+00:00" 1185 | }, 1186 | { 1187 | "name": "kherge/version", 1188 | "version": "1.0.1", 1189 | "source": { 1190 | "type": "git", 1191 | "url": "https://github.com/kherge-abandoned/Version.git", 1192 | "reference": "f07cf83f8ce533be8f93d2893d96d674bbeb7e30" 1193 | }, 1194 | "dist": { 1195 | "type": "zip", 1196 | "url": "https://api.github.com/repos/kherge-abandoned/Version/zipball/f07cf83f8ce533be8f93d2893d96d674bbeb7e30", 1197 | "reference": "f07cf83f8ce533be8f93d2893d96d674bbeb7e30", 1198 | "shasum": "" 1199 | }, 1200 | "require": { 1201 | "php": ">=5.3.3" 1202 | }, 1203 | "type": "library", 1204 | "extra": { 1205 | "branch-alias": { 1206 | "dev-master": "1.0-dev" 1207 | } 1208 | }, 1209 | "autoload": { 1210 | "psr-0": { 1211 | "KevinGH\\Version": "src/lib/" 1212 | } 1213 | }, 1214 | "notification-url": "https://packagist.org/downloads/", 1215 | "license": [ 1216 | "MIT" 1217 | ], 1218 | "authors": [ 1219 | { 1220 | "name": "Kevin Herrera", 1221 | "email": "me@kevingh.com" 1222 | } 1223 | ], 1224 | "description": "A parsing and comparison library for semantic versioning.", 1225 | "homepage": "http://github.com/kherge/Version", 1226 | "abandoned": true, 1227 | "time": "2012-08-16T17:13:03+00:00" 1228 | }, 1229 | { 1230 | "name": "monolog/monolog", 1231 | "version": "1.23.0", 1232 | "source": { 1233 | "type": "git", 1234 | "url": "https://github.com/Seldaek/monolog.git", 1235 | "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4" 1236 | }, 1237 | "dist": { 1238 | "type": "zip", 1239 | "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4", 1240 | "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4", 1241 | "shasum": "" 1242 | }, 1243 | "require": { 1244 | "php": ">=5.3.0", 1245 | "psr/log": "~1.0" 1246 | }, 1247 | "provide": { 1248 | "psr/log-implementation": "1.0.0" 1249 | }, 1250 | "require-dev": { 1251 | "aws/aws-sdk-php": "^2.4.9 || ^3.0", 1252 | "doctrine/couchdb": "~1.0@dev", 1253 | "graylog2/gelf-php": "~1.0", 1254 | "jakub-onderka/php-parallel-lint": "0.9", 1255 | "php-amqplib/php-amqplib": "~2.4", 1256 | "php-console/php-console": "^3.1.3", 1257 | "phpunit/phpunit": "~4.5", 1258 | "phpunit/phpunit-mock-objects": "2.3.0", 1259 | "ruflin/elastica": ">=0.90 <3.0", 1260 | "sentry/sentry": "^0.13", 1261 | "swiftmailer/swiftmailer": "^5.3|^6.0" 1262 | }, 1263 | "suggest": { 1264 | "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", 1265 | "doctrine/couchdb": "Allow sending log messages to a CouchDB server", 1266 | "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", 1267 | "ext-mongo": "Allow sending log messages to a MongoDB server", 1268 | "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", 1269 | "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", 1270 | "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", 1271 | "php-console/php-console": "Allow sending log messages to Google Chrome", 1272 | "rollbar/rollbar": "Allow sending log messages to Rollbar", 1273 | "ruflin/elastica": "Allow sending log messages to an Elastic Search server", 1274 | "sentry/sentry": "Allow sending log messages to a Sentry server" 1275 | }, 1276 | "type": "library", 1277 | "extra": { 1278 | "branch-alias": { 1279 | "dev-master": "2.0.x-dev" 1280 | } 1281 | }, 1282 | "autoload": { 1283 | "psr-4": { 1284 | "Monolog\\": "src/Monolog" 1285 | } 1286 | }, 1287 | "notification-url": "https://packagist.org/downloads/", 1288 | "license": [ 1289 | "MIT" 1290 | ], 1291 | "authors": [ 1292 | { 1293 | "name": "Jordi Boggiano", 1294 | "email": "j.boggiano@seld.be", 1295 | "homepage": "http://seld.be" 1296 | } 1297 | ], 1298 | "description": "Sends your logs to files, sockets, inboxes, databases and various web services", 1299 | "homepage": "http://github.com/Seldaek/monolog", 1300 | "keywords": [ 1301 | "log", 1302 | "logging", 1303 | "psr-3" 1304 | ], 1305 | "time": "2017-06-19T01:22:40+00:00" 1306 | }, 1307 | { 1308 | "name": "nikic/php-parser", 1309 | "version": "v1.4.1", 1310 | "source": { 1311 | "type": "git", 1312 | "url": "https://github.com/nikic/PHP-Parser.git", 1313 | "reference": "f78af2c9c86107aa1a34cd1dbb5bbe9eeb0d9f51" 1314 | }, 1315 | "dist": { 1316 | "type": "zip", 1317 | "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f78af2c9c86107aa1a34cd1dbb5bbe9eeb0d9f51", 1318 | "reference": "f78af2c9c86107aa1a34cd1dbb5bbe9eeb0d9f51", 1319 | "shasum": "" 1320 | }, 1321 | "require": { 1322 | "ext-tokenizer": "*", 1323 | "php": ">=5.3" 1324 | }, 1325 | "type": "library", 1326 | "extra": { 1327 | "branch-alias": { 1328 | "dev-master": "1.4-dev" 1329 | } 1330 | }, 1331 | "autoload": { 1332 | "files": [ 1333 | "lib/bootstrap.php" 1334 | ] 1335 | }, 1336 | "notification-url": "https://packagist.org/downloads/", 1337 | "license": [ 1338 | "BSD-3-Clause" 1339 | ], 1340 | "authors": [ 1341 | { 1342 | "name": "Nikita Popov" 1343 | } 1344 | ], 1345 | "description": "A PHP parser written in PHP", 1346 | "keywords": [ 1347 | "parser", 1348 | "php" 1349 | ], 1350 | "time": "2015-09-19T14:15:08+00:00" 1351 | }, 1352 | { 1353 | "name": "phing/phing", 1354 | "version": "2.16.0", 1355 | "source": { 1356 | "type": "git", 1357 | "url": "https://github.com/phingofficial/phing.git", 1358 | "reference": "151a0f4d8cebf7711eccc62dde3f09bc36a00d7b" 1359 | }, 1360 | "dist": { 1361 | "type": "zip", 1362 | "url": "https://api.github.com/repos/phingofficial/phing/zipball/151a0f4d8cebf7711eccc62dde3f09bc36a00d7b", 1363 | "reference": "151a0f4d8cebf7711eccc62dde3f09bc36a00d7b", 1364 | "shasum": "" 1365 | }, 1366 | "require": { 1367 | "php": ">=5.2.0", 1368 | "symfony/yaml": "^3.1" 1369 | }, 1370 | "require-dev": { 1371 | "ext-pdo_sqlite": "*", 1372 | "mikey179/vfsstream": "^1.6", 1373 | "pdepend/pdepend": "2.x", 1374 | "pear/archive_tar": "1.4.x", 1375 | "pear/http_request2": "dev-trunk", 1376 | "pear/net_growl": "dev-trunk", 1377 | "pear/pear-core-minimal": "1.10.1", 1378 | "pear/versioncontrol_git": "@dev", 1379 | "pear/versioncontrol_svn": "~0.5", 1380 | "phpdocumentor/phpdocumentor": "2.x", 1381 | "phploc/phploc": "~2.0.6", 1382 | "phpmd/phpmd": "~2.2", 1383 | "phpunit/phpunit": ">=3.7", 1384 | "sebastian/git": "~1.0", 1385 | "sebastian/phpcpd": "2.x", 1386 | "siad007/versioncontrol_hg": "^1.0", 1387 | "simpletest/simpletest": "^1.1", 1388 | "squizlabs/php_codesniffer": "~2.2" 1389 | }, 1390 | "suggest": { 1391 | "pdepend/pdepend": "PHP version of JDepend", 1392 | "pear/archive_tar": "Tar file management class", 1393 | "pear/versioncontrol_git": "A library that provides OO interface to handle Git repository", 1394 | "pear/versioncontrol_svn": "A simple OO-style interface for Subversion, the free/open-source version control system", 1395 | "phpdocumentor/phpdocumentor": "Documentation Generator for PHP", 1396 | "phploc/phploc": "A tool for quickly measuring the size of a PHP project", 1397 | "phpmd/phpmd": "PHP version of PMD tool", 1398 | "phpunit/php-code-coverage": "Library that provides collection, processing, and rendering functionality for PHP code coverage information", 1399 | "phpunit/phpunit": "The PHP Unit Testing Framework", 1400 | "sebastian/phpcpd": "Copy/Paste Detector (CPD) for PHP code", 1401 | "siad007/versioncontrol_hg": "A library for interfacing with Mercurial repositories.", 1402 | "tedivm/jshrink": "Javascript Minifier built in PHP" 1403 | }, 1404 | "bin": [ 1405 | "bin/phing" 1406 | ], 1407 | "type": "library", 1408 | "extra": { 1409 | "branch-alias": { 1410 | "dev-master": "2.16.x-dev" 1411 | } 1412 | }, 1413 | "autoload": { 1414 | "classmap": [ 1415 | "classes/phing/" 1416 | ] 1417 | }, 1418 | "notification-url": "https://packagist.org/downloads/", 1419 | "include-path": [ 1420 | "classes" 1421 | ], 1422 | "license": [ 1423 | "LGPL-3.0" 1424 | ], 1425 | "authors": [ 1426 | { 1427 | "name": "Michiel Rook", 1428 | "email": "mrook@php.net" 1429 | }, 1430 | { 1431 | "name": "Phing Community", 1432 | "homepage": "https://www.phing.info/trac/wiki/Development/Contributors" 1433 | } 1434 | ], 1435 | "description": "PHing Is Not GNU make; it's a PHP project build system or build tool based on Apache Ant.", 1436 | "homepage": "https://www.phing.info/", 1437 | "keywords": [ 1438 | "build", 1439 | "phing", 1440 | "task", 1441 | "tool" 1442 | ], 1443 | "time": "2016-12-22T20:16:33+00:00" 1444 | }, 1445 | { 1446 | "name": "phpcollection/phpcollection", 1447 | "version": "0.5.0", 1448 | "source": { 1449 | "type": "git", 1450 | "url": "https://github.com/schmittjoh/php-collection.git", 1451 | "reference": "f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6" 1452 | }, 1453 | "dist": { 1454 | "type": "zip", 1455 | "url": "https://api.github.com/repos/schmittjoh/php-collection/zipball/f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6", 1456 | "reference": "f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6", 1457 | "shasum": "" 1458 | }, 1459 | "require": { 1460 | "phpoption/phpoption": "1.*" 1461 | }, 1462 | "type": "library", 1463 | "extra": { 1464 | "branch-alias": { 1465 | "dev-master": "0.4-dev" 1466 | } 1467 | }, 1468 | "autoload": { 1469 | "psr-0": { 1470 | "PhpCollection": "src/" 1471 | } 1472 | }, 1473 | "notification-url": "https://packagist.org/downloads/", 1474 | "license": [ 1475 | "Apache2" 1476 | ], 1477 | "authors": [ 1478 | { 1479 | "name": "Johannes M. Schmitt", 1480 | "email": "schmittjoh@gmail.com" 1481 | } 1482 | ], 1483 | "description": "General-Purpose Collection Library for PHP", 1484 | "keywords": [ 1485 | "collection", 1486 | "list", 1487 | "map", 1488 | "sequence", 1489 | "set" 1490 | ], 1491 | "time": "2015-05-17T12:39:23+00:00" 1492 | }, 1493 | { 1494 | "name": "phpdocumentor/fileset", 1495 | "version": "1.0.0", 1496 | "source": { 1497 | "type": "git", 1498 | "url": "https://github.com/phpDocumentor/Fileset.git", 1499 | "reference": "bfa78d8fa9763dfce6d0e5d3730c1d8ab25d34b0" 1500 | }, 1501 | "dist": { 1502 | "type": "zip", 1503 | "url": "https://api.github.com/repos/phpDocumentor/Fileset/zipball/bfa78d8fa9763dfce6d0e5d3730c1d8ab25d34b0", 1504 | "reference": "bfa78d8fa9763dfce6d0e5d3730c1d8ab25d34b0", 1505 | "shasum": "" 1506 | }, 1507 | "require": { 1508 | "php": ">=5.3.3", 1509 | "symfony/finder": "~2.1" 1510 | }, 1511 | "require-dev": { 1512 | "phpunit/phpunit": "~3.7" 1513 | }, 1514 | "type": "library", 1515 | "autoload": { 1516 | "psr-0": { 1517 | "phpDocumentor": [ 1518 | "src/", 1519 | "tests/unit/" 1520 | ] 1521 | } 1522 | }, 1523 | "notification-url": "https://packagist.org/downloads/", 1524 | "license": [ 1525 | "MIT" 1526 | ], 1527 | "description": "Fileset component for collecting a set of files given directories and file paths", 1528 | "homepage": "http://www.phpdoc.org", 1529 | "keywords": [ 1530 | "files", 1531 | "fileset", 1532 | "phpdoc" 1533 | ], 1534 | "time": "2013-08-06T21:07:42+00:00" 1535 | }, 1536 | { 1537 | "name": "phpdocumentor/graphviz", 1538 | "version": "1.0.4", 1539 | "source": { 1540 | "type": "git", 1541 | "url": "https://github.com/phpDocumentor/GraphViz.git", 1542 | "reference": "a906a90a9f230535f25ea31caf81b2323956283f" 1543 | }, 1544 | "dist": { 1545 | "type": "zip", 1546 | "url": "https://api.github.com/repos/phpDocumentor/GraphViz/zipball/a906a90a9f230535f25ea31caf81b2323956283f", 1547 | "reference": "a906a90a9f230535f25ea31caf81b2323956283f", 1548 | "shasum": "" 1549 | }, 1550 | "require": { 1551 | "php": ">=5.3.3" 1552 | }, 1553 | "require-dev": { 1554 | "phpunit/phpunit": "~4.0" 1555 | }, 1556 | "type": "library", 1557 | "autoload": { 1558 | "psr-0": { 1559 | "phpDocumentor": [ 1560 | "src/", 1561 | "tests/unit" 1562 | ] 1563 | } 1564 | }, 1565 | "notification-url": "https://packagist.org/downloads/", 1566 | "license": [ 1567 | "MIT" 1568 | ], 1569 | "authors": [ 1570 | { 1571 | "name": "Mike van Riel", 1572 | "email": "mike.vanriel@naenius.com" 1573 | } 1574 | ], 1575 | "time": "2016-02-02T13:00:08+00:00" 1576 | }, 1577 | { 1578 | "name": "phpdocumentor/phpdocumentor", 1579 | "version": "v2.9.0", 1580 | "source": { 1581 | "type": "git", 1582 | "url": "https://github.com/phpDocumentor/phpDocumentor2.git", 1583 | "reference": "be607da0eef9b9249c43c5b4820d25d631c73667" 1584 | }, 1585 | "dist": { 1586 | "type": "zip", 1587 | "url": "https://api.github.com/repos/phpDocumentor/phpDocumentor2/zipball/be607da0eef9b9249c43c5b4820d25d631c73667", 1588 | "reference": "be607da0eef9b9249c43c5b4820d25d631c73667", 1589 | "shasum": "" 1590 | }, 1591 | "require": { 1592 | "cilex/cilex": "~1.0", 1593 | "erusev/parsedown": "~1.0", 1594 | "herrera-io/phar-update": "1.0.3", 1595 | "jms/serializer": ">=0.12", 1596 | "monolog/monolog": "~1.6", 1597 | "php": ">=5.3.3", 1598 | "phpdocumentor/fileset": "~1.0", 1599 | "phpdocumentor/graphviz": "~1.0", 1600 | "phpdocumentor/reflection": "^3.0", 1601 | "phpdocumentor/reflection-docblock": "~2.0", 1602 | "symfony/config": "~2.3", 1603 | "symfony/console": "~2.3", 1604 | "symfony/event-dispatcher": "~2.1", 1605 | "symfony/process": "~2.0", 1606 | "symfony/stopwatch": "~2.3", 1607 | "symfony/validator": "~2.2", 1608 | "twig/twig": "~1.3", 1609 | "zendframework/zend-cache": "~2.1", 1610 | "zendframework/zend-config": "~2.1", 1611 | "zendframework/zend-filter": "~2.1", 1612 | "zendframework/zend-i18n": "~2.1", 1613 | "zendframework/zend-serializer": "~2.1", 1614 | "zendframework/zend-servicemanager": "~2.1", 1615 | "zendframework/zend-stdlib": "~2.1", 1616 | "zetacomponents/document": ">=1.3.1" 1617 | }, 1618 | "require-dev": { 1619 | "behat/behat": "~3.0", 1620 | "mikey179/vfsstream": "~1.2", 1621 | "mockery/mockery": "~0.9@dev", 1622 | "phpunit/phpunit": "~4.0", 1623 | "squizlabs/php_codesniffer": "~1.4", 1624 | "symfony/expression-language": "~2.4" 1625 | }, 1626 | "suggest": { 1627 | "ext-twig": "Enabling the twig extension improves the generation of twig based templates.", 1628 | "ext-xslcache": "Enabling the XSLCache extension improves the generation of xml based templates." 1629 | }, 1630 | "bin": [ 1631 | "bin/phpdoc.php", 1632 | "bin/phpdoc" 1633 | ], 1634 | "type": "library", 1635 | "extra": { 1636 | "branch-alias": { 1637 | "dev-develop": "2.9-dev" 1638 | } 1639 | }, 1640 | "autoload": { 1641 | "psr-0": { 1642 | "phpDocumentor": [ 1643 | "src/", 1644 | "tests/unit/" 1645 | ], 1646 | "Cilex\\Provider": [ 1647 | "src/" 1648 | ] 1649 | } 1650 | }, 1651 | "notification-url": "https://packagist.org/downloads/", 1652 | "license": [ 1653 | "MIT" 1654 | ], 1655 | "description": "Documentation Generator for PHP", 1656 | "homepage": "http://www.phpdoc.org", 1657 | "keywords": [ 1658 | "api", 1659 | "application", 1660 | "dga", 1661 | "documentation", 1662 | "phpdoc" 1663 | ], 1664 | "time": "2016-05-22T09:50:56+00:00" 1665 | }, 1666 | { 1667 | "name": "phpdocumentor/reflection", 1668 | "version": "3.0.1", 1669 | "source": { 1670 | "type": "git", 1671 | "url": "https://github.com/phpDocumentor/Reflection.git", 1672 | "reference": "793bfd92d9a0fc96ae9608fb3e947c3f59fb3a0d" 1673 | }, 1674 | "dist": { 1675 | "type": "zip", 1676 | "url": "https://api.github.com/repos/phpDocumentor/Reflection/zipball/793bfd92d9a0fc96ae9608fb3e947c3f59fb3a0d", 1677 | "reference": "793bfd92d9a0fc96ae9608fb3e947c3f59fb3a0d", 1678 | "shasum": "" 1679 | }, 1680 | "require": { 1681 | "nikic/php-parser": "^1.0", 1682 | "php": ">=5.3.3", 1683 | "phpdocumentor/reflection-docblock": "~2.0", 1684 | "psr/log": "~1.0" 1685 | }, 1686 | "require-dev": { 1687 | "behat/behat": "~2.4", 1688 | "mockery/mockery": "~0.8", 1689 | "phpunit/phpunit": "~4.0" 1690 | }, 1691 | "type": "library", 1692 | "extra": { 1693 | "branch-alias": { 1694 | "dev-master": "1.0.x-dev" 1695 | } 1696 | }, 1697 | "autoload": { 1698 | "psr-0": { 1699 | "phpDocumentor": [ 1700 | "src/", 1701 | "tests/unit/", 1702 | "tests/mocks/" 1703 | ] 1704 | } 1705 | }, 1706 | "notification-url": "https://packagist.org/downloads/", 1707 | "license": [ 1708 | "MIT" 1709 | ], 1710 | "description": "Reflection library to do Static Analysis for PHP Projects", 1711 | "homepage": "http://www.phpdoc.org", 1712 | "keywords": [ 1713 | "phpDocumentor", 1714 | "phpdoc", 1715 | "reflection", 1716 | "static analysis" 1717 | ], 1718 | "time": "2016-05-21T08:42:32+00:00" 1719 | }, 1720 | { 1721 | "name": "phpdocumentor/reflection-docblock", 1722 | "version": "2.0.5", 1723 | "source": { 1724 | "type": "git", 1725 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 1726 | "reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b" 1727 | }, 1728 | "dist": { 1729 | "type": "zip", 1730 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e6a969a640b00d8daa3c66518b0405fb41ae0c4b", 1731 | "reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b", 1732 | "shasum": "" 1733 | }, 1734 | "require": { 1735 | "php": ">=5.3.3" 1736 | }, 1737 | "require-dev": { 1738 | "phpunit/phpunit": "~4.0" 1739 | }, 1740 | "suggest": { 1741 | "dflydev/markdown": "~1.0", 1742 | "erusev/parsedown": "~1.0" 1743 | }, 1744 | "type": "library", 1745 | "extra": { 1746 | "branch-alias": { 1747 | "dev-master": "2.0.x-dev" 1748 | } 1749 | }, 1750 | "autoload": { 1751 | "psr-0": { 1752 | "phpDocumentor": [ 1753 | "src/" 1754 | ] 1755 | } 1756 | }, 1757 | "notification-url": "https://packagist.org/downloads/", 1758 | "license": [ 1759 | "MIT" 1760 | ], 1761 | "authors": [ 1762 | { 1763 | "name": "Mike van Riel", 1764 | "email": "mike.vanriel@naenius.com" 1765 | } 1766 | ], 1767 | "time": "2016-01-25T08:17:30+00:00" 1768 | }, 1769 | { 1770 | "name": "phpoption/phpoption", 1771 | "version": "1.5.0", 1772 | "source": { 1773 | "type": "git", 1774 | "url": "https://github.com/schmittjoh/php-option.git", 1775 | "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed" 1776 | }, 1777 | "dist": { 1778 | "type": "zip", 1779 | "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed", 1780 | "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed", 1781 | "shasum": "" 1782 | }, 1783 | "require": { 1784 | "php": ">=5.3.0" 1785 | }, 1786 | "require-dev": { 1787 | "phpunit/phpunit": "4.7.*" 1788 | }, 1789 | "type": "library", 1790 | "extra": { 1791 | "branch-alias": { 1792 | "dev-master": "1.3-dev" 1793 | } 1794 | }, 1795 | "autoload": { 1796 | "psr-0": { 1797 | "PhpOption\\": "src/" 1798 | } 1799 | }, 1800 | "notification-url": "https://packagist.org/downloads/", 1801 | "license": [ 1802 | "Apache2" 1803 | ], 1804 | "authors": [ 1805 | { 1806 | "name": "Johannes M. Schmitt", 1807 | "email": "schmittjoh@gmail.com" 1808 | } 1809 | ], 1810 | "description": "Option Type for PHP", 1811 | "keywords": [ 1812 | "language", 1813 | "option", 1814 | "php", 1815 | "type" 1816 | ], 1817 | "time": "2015-07-25T16:39:46+00:00" 1818 | }, 1819 | { 1820 | "name": "phpspec/prophecy", 1821 | "version": "v1.7.2", 1822 | "source": { 1823 | "type": "git", 1824 | "url": "https://github.com/phpspec/prophecy.git", 1825 | "reference": "c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6" 1826 | }, 1827 | "dist": { 1828 | "type": "zip", 1829 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6", 1830 | "reference": "c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6", 1831 | "shasum": "" 1832 | }, 1833 | "require": { 1834 | "doctrine/instantiator": "^1.0.2", 1835 | "php": "^5.3|^7.0", 1836 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", 1837 | "sebastian/comparator": "^1.1|^2.0", 1838 | "sebastian/recursion-context": "^1.0|^2.0|^3.0" 1839 | }, 1840 | "require-dev": { 1841 | "phpspec/phpspec": "^2.5|^3.2", 1842 | "phpunit/phpunit": "^4.8 || ^5.6.5" 1843 | }, 1844 | "type": "library", 1845 | "extra": { 1846 | "branch-alias": { 1847 | "dev-master": "1.7.x-dev" 1848 | } 1849 | }, 1850 | "autoload": { 1851 | "psr-0": { 1852 | "Prophecy\\": "src/" 1853 | } 1854 | }, 1855 | "notification-url": "https://packagist.org/downloads/", 1856 | "license": [ 1857 | "MIT" 1858 | ], 1859 | "authors": [ 1860 | { 1861 | "name": "Konstantin Kudryashov", 1862 | "email": "ever.zet@gmail.com", 1863 | "homepage": "http://everzet.com" 1864 | }, 1865 | { 1866 | "name": "Marcello Duarte", 1867 | "email": "marcello.duarte@gmail.com" 1868 | } 1869 | ], 1870 | "description": "Highly opinionated mocking framework for PHP 5.3+", 1871 | "homepage": "https://github.com/phpspec/prophecy", 1872 | "keywords": [ 1873 | "Double", 1874 | "Dummy", 1875 | "fake", 1876 | "mock", 1877 | "spy", 1878 | "stub" 1879 | ], 1880 | "time": "2017-09-04T11:05:03+00:00" 1881 | }, 1882 | { 1883 | "name": "phpunit/php-code-coverage", 1884 | "version": "2.2.4", 1885 | "source": { 1886 | "type": "git", 1887 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 1888 | "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" 1889 | }, 1890 | "dist": { 1891 | "type": "zip", 1892 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979", 1893 | "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979", 1894 | "shasum": "" 1895 | }, 1896 | "require": { 1897 | "php": ">=5.3.3", 1898 | "phpunit/php-file-iterator": "~1.3", 1899 | "phpunit/php-text-template": "~1.2", 1900 | "phpunit/php-token-stream": "~1.3", 1901 | "sebastian/environment": "^1.3.2", 1902 | "sebastian/version": "~1.0" 1903 | }, 1904 | "require-dev": { 1905 | "ext-xdebug": ">=2.1.4", 1906 | "phpunit/phpunit": "~4" 1907 | }, 1908 | "suggest": { 1909 | "ext-dom": "*", 1910 | "ext-xdebug": ">=2.2.1", 1911 | "ext-xmlwriter": "*" 1912 | }, 1913 | "type": "library", 1914 | "extra": { 1915 | "branch-alias": { 1916 | "dev-master": "2.2.x-dev" 1917 | } 1918 | }, 1919 | "autoload": { 1920 | "classmap": [ 1921 | "src/" 1922 | ] 1923 | }, 1924 | "notification-url": "https://packagist.org/downloads/", 1925 | "license": [ 1926 | "BSD-3-Clause" 1927 | ], 1928 | "authors": [ 1929 | { 1930 | "name": "Sebastian Bergmann", 1931 | "email": "sb@sebastian-bergmann.de", 1932 | "role": "lead" 1933 | } 1934 | ], 1935 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 1936 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 1937 | "keywords": [ 1938 | "coverage", 1939 | "testing", 1940 | "xunit" 1941 | ], 1942 | "time": "2015-10-06T15:47:00+00:00" 1943 | }, 1944 | { 1945 | "name": "phpunit/php-file-iterator", 1946 | "version": "1.4.2", 1947 | "source": { 1948 | "type": "git", 1949 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 1950 | "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" 1951 | }, 1952 | "dist": { 1953 | "type": "zip", 1954 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", 1955 | "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", 1956 | "shasum": "" 1957 | }, 1958 | "require": { 1959 | "php": ">=5.3.3" 1960 | }, 1961 | "type": "library", 1962 | "extra": { 1963 | "branch-alias": { 1964 | "dev-master": "1.4.x-dev" 1965 | } 1966 | }, 1967 | "autoload": { 1968 | "classmap": [ 1969 | "src/" 1970 | ] 1971 | }, 1972 | "notification-url": "https://packagist.org/downloads/", 1973 | "license": [ 1974 | "BSD-3-Clause" 1975 | ], 1976 | "authors": [ 1977 | { 1978 | "name": "Sebastian Bergmann", 1979 | "email": "sb@sebastian-bergmann.de", 1980 | "role": "lead" 1981 | } 1982 | ], 1983 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 1984 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 1985 | "keywords": [ 1986 | "filesystem", 1987 | "iterator" 1988 | ], 1989 | "time": "2016-10-03T07:40:28+00:00" 1990 | }, 1991 | { 1992 | "name": "phpunit/php-text-template", 1993 | "version": "1.2.1", 1994 | "source": { 1995 | "type": "git", 1996 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 1997 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 1998 | }, 1999 | "dist": { 2000 | "type": "zip", 2001 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 2002 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 2003 | "shasum": "" 2004 | }, 2005 | "require": { 2006 | "php": ">=5.3.3" 2007 | }, 2008 | "type": "library", 2009 | "autoload": { 2010 | "classmap": [ 2011 | "src/" 2012 | ] 2013 | }, 2014 | "notification-url": "https://packagist.org/downloads/", 2015 | "license": [ 2016 | "BSD-3-Clause" 2017 | ], 2018 | "authors": [ 2019 | { 2020 | "name": "Sebastian Bergmann", 2021 | "email": "sebastian@phpunit.de", 2022 | "role": "lead" 2023 | } 2024 | ], 2025 | "description": "Simple template engine.", 2026 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 2027 | "keywords": [ 2028 | "template" 2029 | ], 2030 | "time": "2015-06-21T13:50:34+00:00" 2031 | }, 2032 | { 2033 | "name": "phpunit/php-timer", 2034 | "version": "1.0.9", 2035 | "source": { 2036 | "type": "git", 2037 | "url": "https://github.com/sebastianbergmann/php-timer.git", 2038 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" 2039 | }, 2040 | "dist": { 2041 | "type": "zip", 2042 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", 2043 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", 2044 | "shasum": "" 2045 | }, 2046 | "require": { 2047 | "php": "^5.3.3 || ^7.0" 2048 | }, 2049 | "require-dev": { 2050 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 2051 | }, 2052 | "type": "library", 2053 | "extra": { 2054 | "branch-alias": { 2055 | "dev-master": "1.0-dev" 2056 | } 2057 | }, 2058 | "autoload": { 2059 | "classmap": [ 2060 | "src/" 2061 | ] 2062 | }, 2063 | "notification-url": "https://packagist.org/downloads/", 2064 | "license": [ 2065 | "BSD-3-Clause" 2066 | ], 2067 | "authors": [ 2068 | { 2069 | "name": "Sebastian Bergmann", 2070 | "email": "sb@sebastian-bergmann.de", 2071 | "role": "lead" 2072 | } 2073 | ], 2074 | "description": "Utility class for timing", 2075 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 2076 | "keywords": [ 2077 | "timer" 2078 | ], 2079 | "time": "2017-02-26T11:10:40+00:00" 2080 | }, 2081 | { 2082 | "name": "phpunit/php-token-stream", 2083 | "version": "1.4.11", 2084 | "source": { 2085 | "type": "git", 2086 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 2087 | "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7" 2088 | }, 2089 | "dist": { 2090 | "type": "zip", 2091 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e03f8f67534427a787e21a385a67ec3ca6978ea7", 2092 | "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7", 2093 | "shasum": "" 2094 | }, 2095 | "require": { 2096 | "ext-tokenizer": "*", 2097 | "php": ">=5.3.3" 2098 | }, 2099 | "require-dev": { 2100 | "phpunit/phpunit": "~4.2" 2101 | }, 2102 | "type": "library", 2103 | "extra": { 2104 | "branch-alias": { 2105 | "dev-master": "1.4-dev" 2106 | } 2107 | }, 2108 | "autoload": { 2109 | "classmap": [ 2110 | "src/" 2111 | ] 2112 | }, 2113 | "notification-url": "https://packagist.org/downloads/", 2114 | "license": [ 2115 | "BSD-3-Clause" 2116 | ], 2117 | "authors": [ 2118 | { 2119 | "name": "Sebastian Bergmann", 2120 | "email": "sebastian@phpunit.de" 2121 | } 2122 | ], 2123 | "description": "Wrapper around PHP's tokenizer extension.", 2124 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 2125 | "keywords": [ 2126 | "tokenizer" 2127 | ], 2128 | "time": "2017-02-27T10:12:30+00:00" 2129 | }, 2130 | { 2131 | "name": "phpunit/phpunit", 2132 | "version": "4.8.36", 2133 | "source": { 2134 | "type": "git", 2135 | "url": "https://github.com/sebastianbergmann/phpunit.git", 2136 | "reference": "46023de9a91eec7dfb06cc56cb4e260017298517" 2137 | }, 2138 | "dist": { 2139 | "type": "zip", 2140 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517", 2141 | "reference": "46023de9a91eec7dfb06cc56cb4e260017298517", 2142 | "shasum": "" 2143 | }, 2144 | "require": { 2145 | "ext-dom": "*", 2146 | "ext-json": "*", 2147 | "ext-pcre": "*", 2148 | "ext-reflection": "*", 2149 | "ext-spl": "*", 2150 | "php": ">=5.3.3", 2151 | "phpspec/prophecy": "^1.3.1", 2152 | "phpunit/php-code-coverage": "~2.1", 2153 | "phpunit/php-file-iterator": "~1.4", 2154 | "phpunit/php-text-template": "~1.2", 2155 | "phpunit/php-timer": "^1.0.6", 2156 | "phpunit/phpunit-mock-objects": "~2.3", 2157 | "sebastian/comparator": "~1.2.2", 2158 | "sebastian/diff": "~1.2", 2159 | "sebastian/environment": "~1.3", 2160 | "sebastian/exporter": "~1.2", 2161 | "sebastian/global-state": "~1.0", 2162 | "sebastian/version": "~1.0", 2163 | "symfony/yaml": "~2.1|~3.0" 2164 | }, 2165 | "suggest": { 2166 | "phpunit/php-invoker": "~1.1" 2167 | }, 2168 | "bin": [ 2169 | "phpunit" 2170 | ], 2171 | "type": "library", 2172 | "extra": { 2173 | "branch-alias": { 2174 | "dev-master": "4.8.x-dev" 2175 | } 2176 | }, 2177 | "autoload": { 2178 | "classmap": [ 2179 | "src/" 2180 | ] 2181 | }, 2182 | "notification-url": "https://packagist.org/downloads/", 2183 | "license": [ 2184 | "BSD-3-Clause" 2185 | ], 2186 | "authors": [ 2187 | { 2188 | "name": "Sebastian Bergmann", 2189 | "email": "sebastian@phpunit.de", 2190 | "role": "lead" 2191 | } 2192 | ], 2193 | "description": "The PHP Unit Testing framework.", 2194 | "homepage": "https://phpunit.de/", 2195 | "keywords": [ 2196 | "phpunit", 2197 | "testing", 2198 | "xunit" 2199 | ], 2200 | "time": "2017-06-21T08:07:12+00:00" 2201 | }, 2202 | { 2203 | "name": "phpunit/phpunit-mock-objects", 2204 | "version": "2.3.8", 2205 | "source": { 2206 | "type": "git", 2207 | "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", 2208 | "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" 2209 | }, 2210 | "dist": { 2211 | "type": "zip", 2212 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", 2213 | "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", 2214 | "shasum": "" 2215 | }, 2216 | "require": { 2217 | "doctrine/instantiator": "^1.0.2", 2218 | "php": ">=5.3.3", 2219 | "phpunit/php-text-template": "~1.2", 2220 | "sebastian/exporter": "~1.2" 2221 | }, 2222 | "require-dev": { 2223 | "phpunit/phpunit": "~4.4" 2224 | }, 2225 | "suggest": { 2226 | "ext-soap": "*" 2227 | }, 2228 | "type": "library", 2229 | "extra": { 2230 | "branch-alias": { 2231 | "dev-master": "2.3.x-dev" 2232 | } 2233 | }, 2234 | "autoload": { 2235 | "classmap": [ 2236 | "src/" 2237 | ] 2238 | }, 2239 | "notification-url": "https://packagist.org/downloads/", 2240 | "license": [ 2241 | "BSD-3-Clause" 2242 | ], 2243 | "authors": [ 2244 | { 2245 | "name": "Sebastian Bergmann", 2246 | "email": "sb@sebastian-bergmann.de", 2247 | "role": "lead" 2248 | } 2249 | ], 2250 | "description": "Mock Object library for PHPUnit", 2251 | "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", 2252 | "keywords": [ 2253 | "mock", 2254 | "xunit" 2255 | ], 2256 | "time": "2015-10-02T06:51:40+00:00" 2257 | }, 2258 | { 2259 | "name": "pimple/pimple", 2260 | "version": "v1.1.1", 2261 | "source": { 2262 | "type": "git", 2263 | "url": "https://github.com/silexphp/Pimple.git", 2264 | "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d" 2265 | }, 2266 | "dist": { 2267 | "type": "zip", 2268 | "url": "https://api.github.com/repos/silexphp/Pimple/zipball/2019c145fe393923f3441b23f29bbdfaa5c58c4d", 2269 | "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d", 2270 | "shasum": "" 2271 | }, 2272 | "require": { 2273 | "php": ">=5.3.0" 2274 | }, 2275 | "type": "library", 2276 | "extra": { 2277 | "branch-alias": { 2278 | "dev-master": "1.1.x-dev" 2279 | } 2280 | }, 2281 | "autoload": { 2282 | "psr-0": { 2283 | "Pimple": "lib/" 2284 | } 2285 | }, 2286 | "notification-url": "https://packagist.org/downloads/", 2287 | "license": [ 2288 | "MIT" 2289 | ], 2290 | "authors": [ 2291 | { 2292 | "name": "Fabien Potencier", 2293 | "email": "fabien@symfony.com" 2294 | } 2295 | ], 2296 | "description": "Pimple is a simple Dependency Injection Container for PHP 5.3", 2297 | "homepage": "http://pimple.sensiolabs.org", 2298 | "keywords": [ 2299 | "container", 2300 | "dependency injection" 2301 | ], 2302 | "time": "2013-11-22T08:30:29+00:00" 2303 | }, 2304 | { 2305 | "name": "psr/container", 2306 | "version": "1.0.0", 2307 | "source": { 2308 | "type": "git", 2309 | "url": "https://github.com/php-fig/container.git", 2310 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" 2311 | }, 2312 | "dist": { 2313 | "type": "zip", 2314 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 2315 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 2316 | "shasum": "" 2317 | }, 2318 | "require": { 2319 | "php": ">=5.3.0" 2320 | }, 2321 | "type": "library", 2322 | "extra": { 2323 | "branch-alias": { 2324 | "dev-master": "1.0.x-dev" 2325 | } 2326 | }, 2327 | "autoload": { 2328 | "psr-4": { 2329 | "Psr\\Container\\": "src/" 2330 | } 2331 | }, 2332 | "notification-url": "https://packagist.org/downloads/", 2333 | "license": [ 2334 | "MIT" 2335 | ], 2336 | "authors": [ 2337 | { 2338 | "name": "PHP-FIG", 2339 | "homepage": "http://www.php-fig.org/" 2340 | } 2341 | ], 2342 | "description": "Common Container Interface (PHP FIG PSR-11)", 2343 | "homepage": "https://github.com/php-fig/container", 2344 | "keywords": [ 2345 | "PSR-11", 2346 | "container", 2347 | "container-interface", 2348 | "container-interop", 2349 | "psr" 2350 | ], 2351 | "time": "2017-02-14T16:28:37+00:00" 2352 | }, 2353 | { 2354 | "name": "sebastian/comparator", 2355 | "version": "1.2.4", 2356 | "source": { 2357 | "type": "git", 2358 | "url": "https://github.com/sebastianbergmann/comparator.git", 2359 | "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" 2360 | }, 2361 | "dist": { 2362 | "type": "zip", 2363 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", 2364 | "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", 2365 | "shasum": "" 2366 | }, 2367 | "require": { 2368 | "php": ">=5.3.3", 2369 | "sebastian/diff": "~1.2", 2370 | "sebastian/exporter": "~1.2 || ~2.0" 2371 | }, 2372 | "require-dev": { 2373 | "phpunit/phpunit": "~4.4" 2374 | }, 2375 | "type": "library", 2376 | "extra": { 2377 | "branch-alias": { 2378 | "dev-master": "1.2.x-dev" 2379 | } 2380 | }, 2381 | "autoload": { 2382 | "classmap": [ 2383 | "src/" 2384 | ] 2385 | }, 2386 | "notification-url": "https://packagist.org/downloads/", 2387 | "license": [ 2388 | "BSD-3-Clause" 2389 | ], 2390 | "authors": [ 2391 | { 2392 | "name": "Jeff Welch", 2393 | "email": "whatthejeff@gmail.com" 2394 | }, 2395 | { 2396 | "name": "Volker Dusch", 2397 | "email": "github@wallbash.com" 2398 | }, 2399 | { 2400 | "name": "Bernhard Schussek", 2401 | "email": "bschussek@2bepublished.at" 2402 | }, 2403 | { 2404 | "name": "Sebastian Bergmann", 2405 | "email": "sebastian@phpunit.de" 2406 | } 2407 | ], 2408 | "description": "Provides the functionality to compare PHP values for equality", 2409 | "homepage": "http://www.github.com/sebastianbergmann/comparator", 2410 | "keywords": [ 2411 | "comparator", 2412 | "compare", 2413 | "equality" 2414 | ], 2415 | "time": "2017-01-29T09:50:25+00:00" 2416 | }, 2417 | { 2418 | "name": "sebastian/diff", 2419 | "version": "1.4.3", 2420 | "source": { 2421 | "type": "git", 2422 | "url": "https://github.com/sebastianbergmann/diff.git", 2423 | "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" 2424 | }, 2425 | "dist": { 2426 | "type": "zip", 2427 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", 2428 | "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", 2429 | "shasum": "" 2430 | }, 2431 | "require": { 2432 | "php": "^5.3.3 || ^7.0" 2433 | }, 2434 | "require-dev": { 2435 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 2436 | }, 2437 | "type": "library", 2438 | "extra": { 2439 | "branch-alias": { 2440 | "dev-master": "1.4-dev" 2441 | } 2442 | }, 2443 | "autoload": { 2444 | "classmap": [ 2445 | "src/" 2446 | ] 2447 | }, 2448 | "notification-url": "https://packagist.org/downloads/", 2449 | "license": [ 2450 | "BSD-3-Clause" 2451 | ], 2452 | "authors": [ 2453 | { 2454 | "name": "Kore Nordmann", 2455 | "email": "mail@kore-nordmann.de" 2456 | }, 2457 | { 2458 | "name": "Sebastian Bergmann", 2459 | "email": "sebastian@phpunit.de" 2460 | } 2461 | ], 2462 | "description": "Diff implementation", 2463 | "homepage": "https://github.com/sebastianbergmann/diff", 2464 | "keywords": [ 2465 | "diff" 2466 | ], 2467 | "time": "2017-05-22T07:24:03+00:00" 2468 | }, 2469 | { 2470 | "name": "sebastian/environment", 2471 | "version": "1.3.8", 2472 | "source": { 2473 | "type": "git", 2474 | "url": "https://github.com/sebastianbergmann/environment.git", 2475 | "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" 2476 | }, 2477 | "dist": { 2478 | "type": "zip", 2479 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", 2480 | "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", 2481 | "shasum": "" 2482 | }, 2483 | "require": { 2484 | "php": "^5.3.3 || ^7.0" 2485 | }, 2486 | "require-dev": { 2487 | "phpunit/phpunit": "^4.8 || ^5.0" 2488 | }, 2489 | "type": "library", 2490 | "extra": { 2491 | "branch-alias": { 2492 | "dev-master": "1.3.x-dev" 2493 | } 2494 | }, 2495 | "autoload": { 2496 | "classmap": [ 2497 | "src/" 2498 | ] 2499 | }, 2500 | "notification-url": "https://packagist.org/downloads/", 2501 | "license": [ 2502 | "BSD-3-Clause" 2503 | ], 2504 | "authors": [ 2505 | { 2506 | "name": "Sebastian Bergmann", 2507 | "email": "sebastian@phpunit.de" 2508 | } 2509 | ], 2510 | "description": "Provides functionality to handle HHVM/PHP environments", 2511 | "homepage": "http://www.github.com/sebastianbergmann/environment", 2512 | "keywords": [ 2513 | "Xdebug", 2514 | "environment", 2515 | "hhvm" 2516 | ], 2517 | "time": "2016-08-18T05:49:44+00:00" 2518 | }, 2519 | { 2520 | "name": "sebastian/exporter", 2521 | "version": "1.2.2", 2522 | "source": { 2523 | "type": "git", 2524 | "url": "https://github.com/sebastianbergmann/exporter.git", 2525 | "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" 2526 | }, 2527 | "dist": { 2528 | "type": "zip", 2529 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", 2530 | "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", 2531 | "shasum": "" 2532 | }, 2533 | "require": { 2534 | "php": ">=5.3.3", 2535 | "sebastian/recursion-context": "~1.0" 2536 | }, 2537 | "require-dev": { 2538 | "ext-mbstring": "*", 2539 | "phpunit/phpunit": "~4.4" 2540 | }, 2541 | "type": "library", 2542 | "extra": { 2543 | "branch-alias": { 2544 | "dev-master": "1.3.x-dev" 2545 | } 2546 | }, 2547 | "autoload": { 2548 | "classmap": [ 2549 | "src/" 2550 | ] 2551 | }, 2552 | "notification-url": "https://packagist.org/downloads/", 2553 | "license": [ 2554 | "BSD-3-Clause" 2555 | ], 2556 | "authors": [ 2557 | { 2558 | "name": "Jeff Welch", 2559 | "email": "whatthejeff@gmail.com" 2560 | }, 2561 | { 2562 | "name": "Volker Dusch", 2563 | "email": "github@wallbash.com" 2564 | }, 2565 | { 2566 | "name": "Bernhard Schussek", 2567 | "email": "bschussek@2bepublished.at" 2568 | }, 2569 | { 2570 | "name": "Sebastian Bergmann", 2571 | "email": "sebastian@phpunit.de" 2572 | }, 2573 | { 2574 | "name": "Adam Harvey", 2575 | "email": "aharvey@php.net" 2576 | } 2577 | ], 2578 | "description": "Provides the functionality to export PHP variables for visualization", 2579 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 2580 | "keywords": [ 2581 | "export", 2582 | "exporter" 2583 | ], 2584 | "time": "2016-06-17T09:04:28+00:00" 2585 | }, 2586 | { 2587 | "name": "sebastian/global-state", 2588 | "version": "1.1.1", 2589 | "source": { 2590 | "type": "git", 2591 | "url": "https://github.com/sebastianbergmann/global-state.git", 2592 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" 2593 | }, 2594 | "dist": { 2595 | "type": "zip", 2596 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", 2597 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", 2598 | "shasum": "" 2599 | }, 2600 | "require": { 2601 | "php": ">=5.3.3" 2602 | }, 2603 | "require-dev": { 2604 | "phpunit/phpunit": "~4.2" 2605 | }, 2606 | "suggest": { 2607 | "ext-uopz": "*" 2608 | }, 2609 | "type": "library", 2610 | "extra": { 2611 | "branch-alias": { 2612 | "dev-master": "1.0-dev" 2613 | } 2614 | }, 2615 | "autoload": { 2616 | "classmap": [ 2617 | "src/" 2618 | ] 2619 | }, 2620 | "notification-url": "https://packagist.org/downloads/", 2621 | "license": [ 2622 | "BSD-3-Clause" 2623 | ], 2624 | "authors": [ 2625 | { 2626 | "name": "Sebastian Bergmann", 2627 | "email": "sebastian@phpunit.de" 2628 | } 2629 | ], 2630 | "description": "Snapshotting of global state", 2631 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 2632 | "keywords": [ 2633 | "global state" 2634 | ], 2635 | "time": "2015-10-12T03:26:01+00:00" 2636 | }, 2637 | { 2638 | "name": "sebastian/recursion-context", 2639 | "version": "1.0.5", 2640 | "source": { 2641 | "type": "git", 2642 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 2643 | "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7" 2644 | }, 2645 | "dist": { 2646 | "type": "zip", 2647 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7", 2648 | "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7", 2649 | "shasum": "" 2650 | }, 2651 | "require": { 2652 | "php": ">=5.3.3" 2653 | }, 2654 | "require-dev": { 2655 | "phpunit/phpunit": "~4.4" 2656 | }, 2657 | "type": "library", 2658 | "extra": { 2659 | "branch-alias": { 2660 | "dev-master": "1.0.x-dev" 2661 | } 2662 | }, 2663 | "autoload": { 2664 | "classmap": [ 2665 | "src/" 2666 | ] 2667 | }, 2668 | "notification-url": "https://packagist.org/downloads/", 2669 | "license": [ 2670 | "BSD-3-Clause" 2671 | ], 2672 | "authors": [ 2673 | { 2674 | "name": "Jeff Welch", 2675 | "email": "whatthejeff@gmail.com" 2676 | }, 2677 | { 2678 | "name": "Sebastian Bergmann", 2679 | "email": "sebastian@phpunit.de" 2680 | }, 2681 | { 2682 | "name": "Adam Harvey", 2683 | "email": "aharvey@php.net" 2684 | } 2685 | ], 2686 | "description": "Provides functionality to recursively process PHP variables", 2687 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 2688 | "time": "2016-10-03T07:41:43+00:00" 2689 | }, 2690 | { 2691 | "name": "sebastian/version", 2692 | "version": "1.0.6", 2693 | "source": { 2694 | "type": "git", 2695 | "url": "https://github.com/sebastianbergmann/version.git", 2696 | "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" 2697 | }, 2698 | "dist": { 2699 | "type": "zip", 2700 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", 2701 | "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", 2702 | "shasum": "" 2703 | }, 2704 | "type": "library", 2705 | "autoload": { 2706 | "classmap": [ 2707 | "src/" 2708 | ] 2709 | }, 2710 | "notification-url": "https://packagist.org/downloads/", 2711 | "license": [ 2712 | "BSD-3-Clause" 2713 | ], 2714 | "authors": [ 2715 | { 2716 | "name": "Sebastian Bergmann", 2717 | "email": "sebastian@phpunit.de", 2718 | "role": "lead" 2719 | } 2720 | ], 2721 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 2722 | "homepage": "https://github.com/sebastianbergmann/version", 2723 | "time": "2015-06-21T13:59:46+00:00" 2724 | }, 2725 | { 2726 | "name": "seld/jsonlint", 2727 | "version": "1.6.1", 2728 | "source": { 2729 | "type": "git", 2730 | "url": "https://github.com/Seldaek/jsonlint.git", 2731 | "reference": "50d63f2858d87c4738d5b76a7dcbb99fa8cf7c77" 2732 | }, 2733 | "dist": { 2734 | "type": "zip", 2735 | "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/50d63f2858d87c4738d5b76a7dcbb99fa8cf7c77", 2736 | "reference": "50d63f2858d87c4738d5b76a7dcbb99fa8cf7c77", 2737 | "shasum": "" 2738 | }, 2739 | "require": { 2740 | "php": "^5.3 || ^7.0" 2741 | }, 2742 | "require-dev": { 2743 | "phpunit/phpunit": "^4.5" 2744 | }, 2745 | "bin": [ 2746 | "bin/jsonlint" 2747 | ], 2748 | "type": "library", 2749 | "autoload": { 2750 | "psr-4": { 2751 | "Seld\\JsonLint\\": "src/Seld/JsonLint/" 2752 | } 2753 | }, 2754 | "notification-url": "https://packagist.org/downloads/", 2755 | "license": [ 2756 | "MIT" 2757 | ], 2758 | "authors": [ 2759 | { 2760 | "name": "Jordi Boggiano", 2761 | "email": "j.boggiano@seld.be", 2762 | "homepage": "http://seld.be" 2763 | } 2764 | ], 2765 | "description": "JSON Linter", 2766 | "keywords": [ 2767 | "json", 2768 | "linter", 2769 | "parser", 2770 | "validator" 2771 | ], 2772 | "time": "2017-06-18T15:11:04+00:00" 2773 | }, 2774 | { 2775 | "name": "sensiolabs/security-checker", 2776 | "version": "v4.1.5", 2777 | "source": { 2778 | "type": "git", 2779 | "url": "https://github.com/sensiolabs/security-checker.git", 2780 | "reference": "55553c3ad6ae2121c1b1475d4c880d71b31b8f68" 2781 | }, 2782 | "dist": { 2783 | "type": "zip", 2784 | "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/55553c3ad6ae2121c1b1475d4c880d71b31b8f68", 2785 | "reference": "55553c3ad6ae2121c1b1475d4c880d71b31b8f68", 2786 | "shasum": "" 2787 | }, 2788 | "require": { 2789 | "composer/ca-bundle": "^1.0", 2790 | "symfony/console": "~2.7|~3.0" 2791 | }, 2792 | "bin": [ 2793 | "security-checker" 2794 | ], 2795 | "type": "library", 2796 | "extra": { 2797 | "branch-alias": { 2798 | "dev-master": "4.1-dev" 2799 | } 2800 | }, 2801 | "autoload": { 2802 | "psr-0": { 2803 | "SensioLabs\\Security": "" 2804 | } 2805 | }, 2806 | "notification-url": "https://packagist.org/downloads/", 2807 | "license": [ 2808 | "MIT" 2809 | ], 2810 | "authors": [ 2811 | { 2812 | "name": "Fabien Potencier", 2813 | "email": "fabien.potencier@gmail.com" 2814 | } 2815 | ], 2816 | "description": "A security checker for your composer.lock", 2817 | "time": "2017-08-22T22:18:16+00:00" 2818 | }, 2819 | { 2820 | "name": "squizlabs/php_codesniffer", 2821 | "version": "2.9.1", 2822 | "source": { 2823 | "type": "git", 2824 | "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", 2825 | "reference": "dcbed1074f8244661eecddfc2a675430d8d33f62" 2826 | }, 2827 | "dist": { 2828 | "type": "zip", 2829 | "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/dcbed1074f8244661eecddfc2a675430d8d33f62", 2830 | "reference": "dcbed1074f8244661eecddfc2a675430d8d33f62", 2831 | "shasum": "" 2832 | }, 2833 | "require": { 2834 | "ext-simplexml": "*", 2835 | "ext-tokenizer": "*", 2836 | "ext-xmlwriter": "*", 2837 | "php": ">=5.1.2" 2838 | }, 2839 | "require-dev": { 2840 | "phpunit/phpunit": "~4.0" 2841 | }, 2842 | "bin": [ 2843 | "scripts/phpcs", 2844 | "scripts/phpcbf" 2845 | ], 2846 | "type": "library", 2847 | "extra": { 2848 | "branch-alias": { 2849 | "dev-master": "2.x-dev" 2850 | } 2851 | }, 2852 | "autoload": { 2853 | "classmap": [ 2854 | "CodeSniffer.php", 2855 | "CodeSniffer/CLI.php", 2856 | "CodeSniffer/Exception.php", 2857 | "CodeSniffer/File.php", 2858 | "CodeSniffer/Fixer.php", 2859 | "CodeSniffer/Report.php", 2860 | "CodeSniffer/Reporting.php", 2861 | "CodeSniffer/Sniff.php", 2862 | "CodeSniffer/Tokens.php", 2863 | "CodeSniffer/Reports/", 2864 | "CodeSniffer/Tokenizers/", 2865 | "CodeSniffer/DocGenerators/", 2866 | "CodeSniffer/Standards/AbstractPatternSniff.php", 2867 | "CodeSniffer/Standards/AbstractScopeSniff.php", 2868 | "CodeSniffer/Standards/AbstractVariableSniff.php", 2869 | "CodeSniffer/Standards/IncorrectPatternException.php", 2870 | "CodeSniffer/Standards/Generic/Sniffs/", 2871 | "CodeSniffer/Standards/MySource/Sniffs/", 2872 | "CodeSniffer/Standards/PEAR/Sniffs/", 2873 | "CodeSniffer/Standards/PSR1/Sniffs/", 2874 | "CodeSniffer/Standards/PSR2/Sniffs/", 2875 | "CodeSniffer/Standards/Squiz/Sniffs/", 2876 | "CodeSniffer/Standards/Zend/Sniffs/" 2877 | ] 2878 | }, 2879 | "notification-url": "https://packagist.org/downloads/", 2880 | "license": [ 2881 | "BSD-3-Clause" 2882 | ], 2883 | "authors": [ 2884 | { 2885 | "name": "Greg Sherwood", 2886 | "role": "lead" 2887 | } 2888 | ], 2889 | "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", 2890 | "homepage": "http://www.squizlabs.com/php-codesniffer", 2891 | "keywords": [ 2892 | "phpcs", 2893 | "standards" 2894 | ], 2895 | "time": "2017-05-22T02:43:20+00:00" 2896 | }, 2897 | { 2898 | "name": "symfony/config", 2899 | "version": "v2.8.28", 2900 | "source": { 2901 | "type": "git", 2902 | "url": "https://github.com/symfony/config.git", 2903 | "reference": "1dbeaa8e2db4b29159265867efff075ad961558c" 2904 | }, 2905 | "dist": { 2906 | "type": "zip", 2907 | "url": "https://api.github.com/repos/symfony/config/zipball/1dbeaa8e2db4b29159265867efff075ad961558c", 2908 | "reference": "1dbeaa8e2db4b29159265867efff075ad961558c", 2909 | "shasum": "" 2910 | }, 2911 | "require": { 2912 | "php": ">=5.3.9", 2913 | "symfony/filesystem": "~2.3|~3.0.0" 2914 | }, 2915 | "require-dev": { 2916 | "symfony/yaml": "~2.7|~3.0.0" 2917 | }, 2918 | "suggest": { 2919 | "symfony/yaml": "To use the yaml reference dumper" 2920 | }, 2921 | "type": "library", 2922 | "extra": { 2923 | "branch-alias": { 2924 | "dev-master": "2.8-dev" 2925 | } 2926 | }, 2927 | "autoload": { 2928 | "psr-4": { 2929 | "Symfony\\Component\\Config\\": "" 2930 | }, 2931 | "exclude-from-classmap": [ 2932 | "/Tests/" 2933 | ] 2934 | }, 2935 | "notification-url": "https://packagist.org/downloads/", 2936 | "license": [ 2937 | "MIT" 2938 | ], 2939 | "authors": [ 2940 | { 2941 | "name": "Fabien Potencier", 2942 | "email": "fabien@symfony.com" 2943 | }, 2944 | { 2945 | "name": "Symfony Community", 2946 | "homepage": "https://symfony.com/contributors" 2947 | } 2948 | ], 2949 | "description": "Symfony Config Component", 2950 | "homepage": "https://symfony.com", 2951 | "time": "2017-10-04T18:56:36+00:00" 2952 | }, 2953 | { 2954 | "name": "symfony/console", 2955 | "version": "v2.8.28", 2956 | "source": { 2957 | "type": "git", 2958 | "url": "https://github.com/symfony/console.git", 2959 | "reference": "f81549d2c5fdee8d711c9ab3c7e7362353ea5853" 2960 | }, 2961 | "dist": { 2962 | "type": "zip", 2963 | "url": "https://api.github.com/repos/symfony/console/zipball/f81549d2c5fdee8d711c9ab3c7e7362353ea5853", 2964 | "reference": "f81549d2c5fdee8d711c9ab3c7e7362353ea5853", 2965 | "shasum": "" 2966 | }, 2967 | "require": { 2968 | "php": ">=5.3.9", 2969 | "symfony/debug": "^2.7.2|~3.0.0", 2970 | "symfony/polyfill-mbstring": "~1.0" 2971 | }, 2972 | "require-dev": { 2973 | "psr/log": "~1.0", 2974 | "symfony/event-dispatcher": "~2.1|~3.0.0", 2975 | "symfony/process": "~2.1|~3.0.0" 2976 | }, 2977 | "suggest": { 2978 | "psr/log": "For using the console logger", 2979 | "symfony/event-dispatcher": "", 2980 | "symfony/process": "" 2981 | }, 2982 | "type": "library", 2983 | "extra": { 2984 | "branch-alias": { 2985 | "dev-master": "2.8-dev" 2986 | } 2987 | }, 2988 | "autoload": { 2989 | "psr-4": { 2990 | "Symfony\\Component\\Console\\": "" 2991 | }, 2992 | "exclude-from-classmap": [ 2993 | "/Tests/" 2994 | ] 2995 | }, 2996 | "notification-url": "https://packagist.org/downloads/", 2997 | "license": [ 2998 | "MIT" 2999 | ], 3000 | "authors": [ 3001 | { 3002 | "name": "Fabien Potencier", 3003 | "email": "fabien@symfony.com" 3004 | }, 3005 | { 3006 | "name": "Symfony Community", 3007 | "homepage": "https://symfony.com/contributors" 3008 | } 3009 | ], 3010 | "description": "Symfony Console Component", 3011 | "homepage": "https://symfony.com", 3012 | "time": "2017-10-01T21:00:16+00:00" 3013 | }, 3014 | { 3015 | "name": "symfony/debug", 3016 | "version": "v3.0.9", 3017 | "source": { 3018 | "type": "git", 3019 | "url": "https://github.com/symfony/debug.git", 3020 | "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a" 3021 | }, 3022 | "dist": { 3023 | "type": "zip", 3024 | "url": "https://api.github.com/repos/symfony/debug/zipball/697c527acd9ea1b2d3efac34d9806bf255278b0a", 3025 | "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a", 3026 | "shasum": "" 3027 | }, 3028 | "require": { 3029 | "php": ">=5.5.9", 3030 | "psr/log": "~1.0" 3031 | }, 3032 | "conflict": { 3033 | "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" 3034 | }, 3035 | "require-dev": { 3036 | "symfony/class-loader": "~2.8|~3.0", 3037 | "symfony/http-kernel": "~2.8|~3.0" 3038 | }, 3039 | "type": "library", 3040 | "extra": { 3041 | "branch-alias": { 3042 | "dev-master": "3.0-dev" 3043 | } 3044 | }, 3045 | "autoload": { 3046 | "psr-4": { 3047 | "Symfony\\Component\\Debug\\": "" 3048 | }, 3049 | "exclude-from-classmap": [ 3050 | "/Tests/" 3051 | ] 3052 | }, 3053 | "notification-url": "https://packagist.org/downloads/", 3054 | "license": [ 3055 | "MIT" 3056 | ], 3057 | "authors": [ 3058 | { 3059 | "name": "Fabien Potencier", 3060 | "email": "fabien@symfony.com" 3061 | }, 3062 | { 3063 | "name": "Symfony Community", 3064 | "homepage": "https://symfony.com/contributors" 3065 | } 3066 | ], 3067 | "description": "Symfony Debug Component", 3068 | "homepage": "https://symfony.com", 3069 | "time": "2016-07-30T07:22:48+00:00" 3070 | }, 3071 | { 3072 | "name": "symfony/event-dispatcher", 3073 | "version": "v2.8.28", 3074 | "source": { 3075 | "type": "git", 3076 | "url": "https://github.com/symfony/event-dispatcher.git", 3077 | "reference": "7fe089232554357efb8d4af65ce209fc6e5a2186" 3078 | }, 3079 | "dist": { 3080 | "type": "zip", 3081 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/7fe089232554357efb8d4af65ce209fc6e5a2186", 3082 | "reference": "7fe089232554357efb8d4af65ce209fc6e5a2186", 3083 | "shasum": "" 3084 | }, 3085 | "require": { 3086 | "php": ">=5.3.9" 3087 | }, 3088 | "require-dev": { 3089 | "psr/log": "~1.0", 3090 | "symfony/config": "^2.0.5|~3.0.0", 3091 | "symfony/dependency-injection": "~2.6|~3.0.0", 3092 | "symfony/expression-language": "~2.6|~3.0.0", 3093 | "symfony/stopwatch": "~2.3|~3.0.0" 3094 | }, 3095 | "suggest": { 3096 | "symfony/dependency-injection": "", 3097 | "symfony/http-kernel": "" 3098 | }, 3099 | "type": "library", 3100 | "extra": { 3101 | "branch-alias": { 3102 | "dev-master": "2.8-dev" 3103 | } 3104 | }, 3105 | "autoload": { 3106 | "psr-4": { 3107 | "Symfony\\Component\\EventDispatcher\\": "" 3108 | }, 3109 | "exclude-from-classmap": [ 3110 | "/Tests/" 3111 | ] 3112 | }, 3113 | "notification-url": "https://packagist.org/downloads/", 3114 | "license": [ 3115 | "MIT" 3116 | ], 3117 | "authors": [ 3118 | { 3119 | "name": "Fabien Potencier", 3120 | "email": "fabien@symfony.com" 3121 | }, 3122 | { 3123 | "name": "Symfony Community", 3124 | "homepage": "https://symfony.com/contributors" 3125 | } 3126 | ], 3127 | "description": "Symfony EventDispatcher Component", 3128 | "homepage": "https://symfony.com", 3129 | "time": "2017-10-01T21:00:16+00:00" 3130 | }, 3131 | { 3132 | "name": "symfony/filesystem", 3133 | "version": "v3.0.9", 3134 | "source": { 3135 | "type": "git", 3136 | "url": "https://github.com/symfony/filesystem.git", 3137 | "reference": "b2da5009d9bacbd91d83486aa1f44c793a8c380d" 3138 | }, 3139 | "dist": { 3140 | "type": "zip", 3141 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/b2da5009d9bacbd91d83486aa1f44c793a8c380d", 3142 | "reference": "b2da5009d9bacbd91d83486aa1f44c793a8c380d", 3143 | "shasum": "" 3144 | }, 3145 | "require": { 3146 | "php": ">=5.5.9" 3147 | }, 3148 | "type": "library", 3149 | "extra": { 3150 | "branch-alias": { 3151 | "dev-master": "3.0-dev" 3152 | } 3153 | }, 3154 | "autoload": { 3155 | "psr-4": { 3156 | "Symfony\\Component\\Filesystem\\": "" 3157 | }, 3158 | "exclude-from-classmap": [ 3159 | "/Tests/" 3160 | ] 3161 | }, 3162 | "notification-url": "https://packagist.org/downloads/", 3163 | "license": [ 3164 | "MIT" 3165 | ], 3166 | "authors": [ 3167 | { 3168 | "name": "Fabien Potencier", 3169 | "email": "fabien@symfony.com" 3170 | }, 3171 | { 3172 | "name": "Symfony Community", 3173 | "homepage": "https://symfony.com/contributors" 3174 | } 3175 | ], 3176 | "description": "Symfony Filesystem Component", 3177 | "homepage": "https://symfony.com", 3178 | "time": "2016-07-20T05:43:46+00:00" 3179 | }, 3180 | { 3181 | "name": "symfony/finder", 3182 | "version": "v2.8.28", 3183 | "source": { 3184 | "type": "git", 3185 | "url": "https://github.com/symfony/finder.git", 3186 | "reference": "a945724b201f74d543e356f6059c930bb8d10c92" 3187 | }, 3188 | "dist": { 3189 | "type": "zip", 3190 | "url": "https://api.github.com/repos/symfony/finder/zipball/a945724b201f74d543e356f6059c930bb8d10c92", 3191 | "reference": "a945724b201f74d543e356f6059c930bb8d10c92", 3192 | "shasum": "" 3193 | }, 3194 | "require": { 3195 | "php": ">=5.3.9" 3196 | }, 3197 | "type": "library", 3198 | "extra": { 3199 | "branch-alias": { 3200 | "dev-master": "2.8-dev" 3201 | } 3202 | }, 3203 | "autoload": { 3204 | "psr-4": { 3205 | "Symfony\\Component\\Finder\\": "" 3206 | }, 3207 | "exclude-from-classmap": [ 3208 | "/Tests/" 3209 | ] 3210 | }, 3211 | "notification-url": "https://packagist.org/downloads/", 3212 | "license": [ 3213 | "MIT" 3214 | ], 3215 | "authors": [ 3216 | { 3217 | "name": "Fabien Potencier", 3218 | "email": "fabien@symfony.com" 3219 | }, 3220 | { 3221 | "name": "Symfony Community", 3222 | "homepage": "https://symfony.com/contributors" 3223 | } 3224 | ], 3225 | "description": "Symfony Finder Component", 3226 | "homepage": "https://symfony.com", 3227 | "time": "2017-10-01T21:00:16+00:00" 3228 | }, 3229 | { 3230 | "name": "symfony/polyfill-mbstring", 3231 | "version": "v1.5.0", 3232 | "source": { 3233 | "type": "git", 3234 | "url": "https://github.com/symfony/polyfill-mbstring.git", 3235 | "reference": "7c8fae0ac1d216eb54349e6a8baa57d515fe8803" 3236 | }, 3237 | "dist": { 3238 | "type": "zip", 3239 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7c8fae0ac1d216eb54349e6a8baa57d515fe8803", 3240 | "reference": "7c8fae0ac1d216eb54349e6a8baa57d515fe8803", 3241 | "shasum": "" 3242 | }, 3243 | "require": { 3244 | "php": ">=5.3.3" 3245 | }, 3246 | "suggest": { 3247 | "ext-mbstring": "For best performance" 3248 | }, 3249 | "type": "library", 3250 | "extra": { 3251 | "branch-alias": { 3252 | "dev-master": "1.5-dev" 3253 | } 3254 | }, 3255 | "autoload": { 3256 | "psr-4": { 3257 | "Symfony\\Polyfill\\Mbstring\\": "" 3258 | }, 3259 | "files": [ 3260 | "bootstrap.php" 3261 | ] 3262 | }, 3263 | "notification-url": "https://packagist.org/downloads/", 3264 | "license": [ 3265 | "MIT" 3266 | ], 3267 | "authors": [ 3268 | { 3269 | "name": "Nicolas Grekas", 3270 | "email": "p@tchwork.com" 3271 | }, 3272 | { 3273 | "name": "Symfony Community", 3274 | "homepage": "https://symfony.com/contributors" 3275 | } 3276 | ], 3277 | "description": "Symfony polyfill for the Mbstring extension", 3278 | "homepage": "https://symfony.com", 3279 | "keywords": [ 3280 | "compatibility", 3281 | "mbstring", 3282 | "polyfill", 3283 | "portable", 3284 | "shim" 3285 | ], 3286 | "time": "2017-06-14T15:44:48+00:00" 3287 | }, 3288 | { 3289 | "name": "symfony/process", 3290 | "version": "v2.8.28", 3291 | "source": { 3292 | "type": "git", 3293 | "url": "https://github.com/symfony/process.git", 3294 | "reference": "26c9fb02bf06bd6b90f661a5bd17e510810d0176" 3295 | }, 3296 | "dist": { 3297 | "type": "zip", 3298 | "url": "https://api.github.com/repos/symfony/process/zipball/26c9fb02bf06bd6b90f661a5bd17e510810d0176", 3299 | "reference": "26c9fb02bf06bd6b90f661a5bd17e510810d0176", 3300 | "shasum": "" 3301 | }, 3302 | "require": { 3303 | "php": ">=5.3.9" 3304 | }, 3305 | "type": "library", 3306 | "extra": { 3307 | "branch-alias": { 3308 | "dev-master": "2.8-dev" 3309 | } 3310 | }, 3311 | "autoload": { 3312 | "psr-4": { 3313 | "Symfony\\Component\\Process\\": "" 3314 | }, 3315 | "exclude-from-classmap": [ 3316 | "/Tests/" 3317 | ] 3318 | }, 3319 | "notification-url": "https://packagist.org/downloads/", 3320 | "license": [ 3321 | "MIT" 3322 | ], 3323 | "authors": [ 3324 | { 3325 | "name": "Fabien Potencier", 3326 | "email": "fabien@symfony.com" 3327 | }, 3328 | { 3329 | "name": "Symfony Community", 3330 | "homepage": "https://symfony.com/contributors" 3331 | } 3332 | ], 3333 | "description": "Symfony Process Component", 3334 | "homepage": "https://symfony.com", 3335 | "time": "2017-10-01T21:00:16+00:00" 3336 | }, 3337 | { 3338 | "name": "symfony/stopwatch", 3339 | "version": "v2.8.28", 3340 | "source": { 3341 | "type": "git", 3342 | "url": "https://github.com/symfony/stopwatch.git", 3343 | "reference": "28ee62ea4736431ca817cdaebcb005663e9cd1cb" 3344 | }, 3345 | "dist": { 3346 | "type": "zip", 3347 | "url": "https://api.github.com/repos/symfony/stopwatch/zipball/28ee62ea4736431ca817cdaebcb005663e9cd1cb", 3348 | "reference": "28ee62ea4736431ca817cdaebcb005663e9cd1cb", 3349 | "shasum": "" 3350 | }, 3351 | "require": { 3352 | "php": ">=5.3.9" 3353 | }, 3354 | "type": "library", 3355 | "extra": { 3356 | "branch-alias": { 3357 | "dev-master": "2.8-dev" 3358 | } 3359 | }, 3360 | "autoload": { 3361 | "psr-4": { 3362 | "Symfony\\Component\\Stopwatch\\": "" 3363 | }, 3364 | "exclude-from-classmap": [ 3365 | "/Tests/" 3366 | ] 3367 | }, 3368 | "notification-url": "https://packagist.org/downloads/", 3369 | "license": [ 3370 | "MIT" 3371 | ], 3372 | "authors": [ 3373 | { 3374 | "name": "Fabien Potencier", 3375 | "email": "fabien@symfony.com" 3376 | }, 3377 | { 3378 | "name": "Symfony Community", 3379 | "homepage": "https://symfony.com/contributors" 3380 | } 3381 | ], 3382 | "description": "Symfony Stopwatch Component", 3383 | "homepage": "https://symfony.com", 3384 | "time": "2017-10-01T21:00:16+00:00" 3385 | }, 3386 | { 3387 | "name": "symfony/translation", 3388 | "version": "v3.0.9", 3389 | "source": { 3390 | "type": "git", 3391 | "url": "https://github.com/symfony/translation.git", 3392 | "reference": "eee6c664853fd0576f21ae25725cfffeafe83f26" 3393 | }, 3394 | "dist": { 3395 | "type": "zip", 3396 | "url": "https://api.github.com/repos/symfony/translation/zipball/eee6c664853fd0576f21ae25725cfffeafe83f26", 3397 | "reference": "eee6c664853fd0576f21ae25725cfffeafe83f26", 3398 | "shasum": "" 3399 | }, 3400 | "require": { 3401 | "php": ">=5.5.9", 3402 | "symfony/polyfill-mbstring": "~1.0" 3403 | }, 3404 | "conflict": { 3405 | "symfony/config": "<2.8" 3406 | }, 3407 | "require-dev": { 3408 | "psr/log": "~1.0", 3409 | "symfony/config": "~2.8|~3.0", 3410 | "symfony/intl": "~2.8|~3.0", 3411 | "symfony/yaml": "~2.8|~3.0" 3412 | }, 3413 | "suggest": { 3414 | "psr/log": "To use logging capability in translator", 3415 | "symfony/config": "", 3416 | "symfony/yaml": "" 3417 | }, 3418 | "type": "library", 3419 | "extra": { 3420 | "branch-alias": { 3421 | "dev-master": "3.0-dev" 3422 | } 3423 | }, 3424 | "autoload": { 3425 | "psr-4": { 3426 | "Symfony\\Component\\Translation\\": "" 3427 | }, 3428 | "exclude-from-classmap": [ 3429 | "/Tests/" 3430 | ] 3431 | }, 3432 | "notification-url": "https://packagist.org/downloads/", 3433 | "license": [ 3434 | "MIT" 3435 | ], 3436 | "authors": [ 3437 | { 3438 | "name": "Fabien Potencier", 3439 | "email": "fabien@symfony.com" 3440 | }, 3441 | { 3442 | "name": "Symfony Community", 3443 | "homepage": "https://symfony.com/contributors" 3444 | } 3445 | ], 3446 | "description": "Symfony Translation Component", 3447 | "homepage": "https://symfony.com", 3448 | "time": "2016-07-30T07:22:48+00:00" 3449 | }, 3450 | { 3451 | "name": "symfony/validator", 3452 | "version": "v2.8.28", 3453 | "source": { 3454 | "type": "git", 3455 | "url": "https://github.com/symfony/validator.git", 3456 | "reference": "1531ddfd96efd1b2c231cbf45f22e652a8f67925" 3457 | }, 3458 | "dist": { 3459 | "type": "zip", 3460 | "url": "https://api.github.com/repos/symfony/validator/zipball/1531ddfd96efd1b2c231cbf45f22e652a8f67925", 3461 | "reference": "1531ddfd96efd1b2c231cbf45f22e652a8f67925", 3462 | "shasum": "" 3463 | }, 3464 | "require": { 3465 | "php": ">=5.3.9", 3466 | "symfony/polyfill-mbstring": "~1.0", 3467 | "symfony/translation": "~2.4|~3.0.0" 3468 | }, 3469 | "require-dev": { 3470 | "doctrine/annotations": "~1.0", 3471 | "doctrine/cache": "~1.0", 3472 | "egulias/email-validator": "^1.2.1", 3473 | "symfony/config": "~2.2|~3.0.0", 3474 | "symfony/expression-language": "~2.4|~3.0.0", 3475 | "symfony/http-foundation": "~2.3|~3.0.0", 3476 | "symfony/intl": "~2.7.25|^2.8.18|~3.2.5", 3477 | "symfony/property-access": "~2.3|~3.0.0", 3478 | "symfony/yaml": "^2.0.5|~3.0.0" 3479 | }, 3480 | "suggest": { 3481 | "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", 3482 | "doctrine/cache": "For using the default cached annotation reader and metadata cache.", 3483 | "egulias/email-validator": "Strict (RFC compliant) email validation", 3484 | "symfony/config": "", 3485 | "symfony/expression-language": "For using the 2.4 Expression validator", 3486 | "symfony/http-foundation": "", 3487 | "symfony/intl": "", 3488 | "symfony/property-access": "For using the 2.4 Validator API", 3489 | "symfony/yaml": "" 3490 | }, 3491 | "type": "library", 3492 | "extra": { 3493 | "branch-alias": { 3494 | "dev-master": "2.8-dev" 3495 | } 3496 | }, 3497 | "autoload": { 3498 | "psr-4": { 3499 | "Symfony\\Component\\Validator\\": "" 3500 | }, 3501 | "exclude-from-classmap": [ 3502 | "/Tests/" 3503 | ] 3504 | }, 3505 | "notification-url": "https://packagist.org/downloads/", 3506 | "license": [ 3507 | "MIT" 3508 | ], 3509 | "authors": [ 3510 | { 3511 | "name": "Fabien Potencier", 3512 | "email": "fabien@symfony.com" 3513 | }, 3514 | { 3515 | "name": "Symfony Community", 3516 | "homepage": "https://symfony.com/contributors" 3517 | } 3518 | ], 3519 | "description": "Symfony Validator Component", 3520 | "homepage": "https://symfony.com", 3521 | "time": "2017-10-01T21:00:16+00:00" 3522 | }, 3523 | { 3524 | "name": "symfony/yaml", 3525 | "version": "v3.3.10", 3526 | "source": { 3527 | "type": "git", 3528 | "url": "https://github.com/symfony/yaml.git", 3529 | "reference": "8c7bf1e7d5d6b05a690b715729cb4cd0c0a99c46" 3530 | }, 3531 | "dist": { 3532 | "type": "zip", 3533 | "url": "https://api.github.com/repos/symfony/yaml/zipball/8c7bf1e7d5d6b05a690b715729cb4cd0c0a99c46", 3534 | "reference": "8c7bf1e7d5d6b05a690b715729cb4cd0c0a99c46", 3535 | "shasum": "" 3536 | }, 3537 | "require": { 3538 | "php": "^5.5.9|>=7.0.8" 3539 | }, 3540 | "require-dev": { 3541 | "symfony/console": "~2.8|~3.0" 3542 | }, 3543 | "suggest": { 3544 | "symfony/console": "For validating YAML files using the lint command" 3545 | }, 3546 | "type": "library", 3547 | "extra": { 3548 | "branch-alias": { 3549 | "dev-master": "3.3-dev" 3550 | } 3551 | }, 3552 | "autoload": { 3553 | "psr-4": { 3554 | "Symfony\\Component\\Yaml\\": "" 3555 | }, 3556 | "exclude-from-classmap": [ 3557 | "/Tests/" 3558 | ] 3559 | }, 3560 | "notification-url": "https://packagist.org/downloads/", 3561 | "license": [ 3562 | "MIT" 3563 | ], 3564 | "authors": [ 3565 | { 3566 | "name": "Fabien Potencier", 3567 | "email": "fabien@symfony.com" 3568 | }, 3569 | { 3570 | "name": "Symfony Community", 3571 | "homepage": "https://symfony.com/contributors" 3572 | } 3573 | ], 3574 | "description": "Symfony Yaml Component", 3575 | "homepage": "https://symfony.com", 3576 | "time": "2017-10-05T14:43:42+00:00" 3577 | }, 3578 | { 3579 | "name": "twig/twig", 3580 | "version": "v1.35.0", 3581 | "source": { 3582 | "type": "git", 3583 | "url": "https://github.com/twigphp/Twig.git", 3584 | "reference": "daa657073e55b0a78cce8fdd22682fddecc6385f" 3585 | }, 3586 | "dist": { 3587 | "type": "zip", 3588 | "url": "https://api.github.com/repos/twigphp/Twig/zipball/daa657073e55b0a78cce8fdd22682fddecc6385f", 3589 | "reference": "daa657073e55b0a78cce8fdd22682fddecc6385f", 3590 | "shasum": "" 3591 | }, 3592 | "require": { 3593 | "php": ">=5.3.3" 3594 | }, 3595 | "require-dev": { 3596 | "psr/container": "^1.0", 3597 | "symfony/debug": "~2.7", 3598 | "symfony/phpunit-bridge": "~3.3@dev" 3599 | }, 3600 | "type": "library", 3601 | "extra": { 3602 | "branch-alias": { 3603 | "dev-master": "1.35-dev" 3604 | } 3605 | }, 3606 | "autoload": { 3607 | "psr-0": { 3608 | "Twig_": "lib/" 3609 | }, 3610 | "psr-4": { 3611 | "Twig\\": "src/" 3612 | } 3613 | }, 3614 | "notification-url": "https://packagist.org/downloads/", 3615 | "license": [ 3616 | "BSD-3-Clause" 3617 | ], 3618 | "authors": [ 3619 | { 3620 | "name": "Fabien Potencier", 3621 | "email": "fabien@symfony.com", 3622 | "homepage": "http://fabien.potencier.org", 3623 | "role": "Lead Developer" 3624 | }, 3625 | { 3626 | "name": "Armin Ronacher", 3627 | "email": "armin.ronacher@active-4.com", 3628 | "role": "Project Founder" 3629 | }, 3630 | { 3631 | "name": "Twig Team", 3632 | "homepage": "http://twig.sensiolabs.org/contributors", 3633 | "role": "Contributors" 3634 | } 3635 | ], 3636 | "description": "Twig, the flexible, fast, and secure template language for PHP", 3637 | "homepage": "http://twig.sensiolabs.org", 3638 | "keywords": [ 3639 | "templating" 3640 | ], 3641 | "time": "2017-09-27T18:06:46+00:00" 3642 | }, 3643 | { 3644 | "name": "zendframework/zend-cache", 3645 | "version": "2.7.2", 3646 | "source": { 3647 | "type": "git", 3648 | "url": "https://github.com/zendframework/zend-cache.git", 3649 | "reference": "c98331b96d3b9d9b24cf32d02660602edb34d039" 3650 | }, 3651 | "dist": { 3652 | "type": "zip", 3653 | "url": "https://api.github.com/repos/zendframework/zend-cache/zipball/c98331b96d3b9d9b24cf32d02660602edb34d039", 3654 | "reference": "c98331b96d3b9d9b24cf32d02660602edb34d039", 3655 | "shasum": "" 3656 | }, 3657 | "require": { 3658 | "php": "^5.5 || ^7.0", 3659 | "zendframework/zend-eventmanager": "^2.6.2 || ^3.0", 3660 | "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", 3661 | "zendframework/zend-stdlib": "^2.7 || ^3.0" 3662 | }, 3663 | "require-dev": { 3664 | "phpbench/phpbench": "^0.10.0", 3665 | "phpunit/phpunit": "^4.8", 3666 | "zendframework/zend-coding-standard": "~1.0.0", 3667 | "zendframework/zend-serializer": "^2.6", 3668 | "zendframework/zend-session": "^2.6.2" 3669 | }, 3670 | "suggest": { 3671 | "ext-apc": "APC or compatible extension, to use the APC storage adapter", 3672 | "ext-apcu": "APCU >= 5.1.0, to use the APCu storage adapter", 3673 | "ext-dba": "DBA, to use the DBA storage adapter", 3674 | "ext-memcache": "Memcache >= 2.0.0 to use the Memcache storage adapter", 3675 | "ext-memcached": "Memcached >= 1.0.0 to use the Memcached storage adapter", 3676 | "ext-mongo": "Mongo, to use MongoDb storage adapter", 3677 | "ext-redis": "Redis, to use Redis storage adapter", 3678 | "ext-wincache": "WinCache, to use the WinCache storage adapter", 3679 | "ext-xcache": "XCache, to use the XCache storage adapter", 3680 | "mongofill/mongofill": "Alternative to ext-mongo - a pure PHP implementation designed as a drop in replacement", 3681 | "zendframework/zend-serializer": "Zend\\Serializer component", 3682 | "zendframework/zend-session": "Zend\\Session component" 3683 | }, 3684 | "type": "library", 3685 | "extra": { 3686 | "branch-alias": { 3687 | "dev-master": "2.7-dev", 3688 | "dev-develop": "2.8-dev" 3689 | }, 3690 | "zf": { 3691 | "component": "Zend\\Cache", 3692 | "config-provider": "Zend\\Cache\\ConfigProvider" 3693 | } 3694 | }, 3695 | "autoload": { 3696 | "psr-4": { 3697 | "Zend\\Cache\\": "src/" 3698 | } 3699 | }, 3700 | "notification-url": "https://packagist.org/downloads/", 3701 | "license": [ 3702 | "BSD-3-Clause" 3703 | ], 3704 | "description": "provides a generic way to cache any data", 3705 | "homepage": "https://github.com/zendframework/zend-cache", 3706 | "keywords": [ 3707 | "cache", 3708 | "zf2" 3709 | ], 3710 | "time": "2016-12-16T11:35:47+00:00" 3711 | }, 3712 | { 3713 | "name": "zendframework/zend-config", 3714 | "version": "2.6.0", 3715 | "source": { 3716 | "type": "git", 3717 | "url": "https://github.com/zendframework/zend-config.git", 3718 | "reference": "2920e877a9f6dca9fa8f6bd3b1ffc2e19bb1e30d" 3719 | }, 3720 | "dist": { 3721 | "type": "zip", 3722 | "url": "https://api.github.com/repos/zendframework/zend-config/zipball/2920e877a9f6dca9fa8f6bd3b1ffc2e19bb1e30d", 3723 | "reference": "2920e877a9f6dca9fa8f6bd3b1ffc2e19bb1e30d", 3724 | "shasum": "" 3725 | }, 3726 | "require": { 3727 | "php": "^5.5 || ^7.0", 3728 | "zendframework/zend-stdlib": "^2.7 || ^3.0" 3729 | }, 3730 | "require-dev": { 3731 | "fabpot/php-cs-fixer": "1.7.*", 3732 | "phpunit/phpunit": "~4.0", 3733 | "zendframework/zend-filter": "^2.6", 3734 | "zendframework/zend-i18n": "^2.5", 3735 | "zendframework/zend-json": "^2.6.1", 3736 | "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3" 3737 | }, 3738 | "suggest": { 3739 | "zendframework/zend-filter": "Zend\\Filter component", 3740 | "zendframework/zend-i18n": "Zend\\I18n component", 3741 | "zendframework/zend-json": "Zend\\Json to use the Json reader or writer classes", 3742 | "zendframework/zend-servicemanager": "Zend\\ServiceManager for use with the Config Factory to retrieve reader and writer instances" 3743 | }, 3744 | "type": "library", 3745 | "extra": { 3746 | "branch-alias": { 3747 | "dev-master": "2.6-dev", 3748 | "dev-develop": "2.7-dev" 3749 | } 3750 | }, 3751 | "autoload": { 3752 | "psr-4": { 3753 | "Zend\\Config\\": "src/" 3754 | } 3755 | }, 3756 | "notification-url": "https://packagist.org/downloads/", 3757 | "license": [ 3758 | "BSD-3-Clause" 3759 | ], 3760 | "description": "provides a nested object property based user interface for accessing this configuration data within application code", 3761 | "homepage": "https://github.com/zendframework/zend-config", 3762 | "keywords": [ 3763 | "config", 3764 | "zf2" 3765 | ], 3766 | "time": "2016-02-04T23:01:10+00:00" 3767 | }, 3768 | { 3769 | "name": "zendframework/zend-eventmanager", 3770 | "version": "3.2.0", 3771 | "source": { 3772 | "type": "git", 3773 | "url": "https://github.com/zendframework/zend-eventmanager.git", 3774 | "reference": "9d72db10ceb6e42fb92350c0cb54460da61bd79c" 3775 | }, 3776 | "dist": { 3777 | "type": "zip", 3778 | "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/9d72db10ceb6e42fb92350c0cb54460da61bd79c", 3779 | "reference": "9d72db10ceb6e42fb92350c0cb54460da61bd79c", 3780 | "shasum": "" 3781 | }, 3782 | "require": { 3783 | "php": "^5.6 || ^7.0" 3784 | }, 3785 | "require-dev": { 3786 | "athletic/athletic": "^0.1", 3787 | "container-interop/container-interop": "^1.1.0", 3788 | "phpunit/phpunit": "^6.0.7 || ^5.7.14", 3789 | "zendframework/zend-coding-standard": "~1.0.0", 3790 | "zendframework/zend-stdlib": "^2.7.3 || ^3.0" 3791 | }, 3792 | "suggest": { 3793 | "container-interop/container-interop": "^1.1.0, to use the lazy listeners feature", 3794 | "zendframework/zend-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature" 3795 | }, 3796 | "type": "library", 3797 | "extra": { 3798 | "branch-alias": { 3799 | "dev-master": "3.2-dev", 3800 | "dev-develop": "3.3-dev" 3801 | } 3802 | }, 3803 | "autoload": { 3804 | "psr-4": { 3805 | "Zend\\EventManager\\": "src/" 3806 | } 3807 | }, 3808 | "notification-url": "https://packagist.org/downloads/", 3809 | "license": [ 3810 | "BSD-3-Clause" 3811 | ], 3812 | "description": "Trigger and listen to events within a PHP application", 3813 | "homepage": "https://github.com/zendframework/zend-eventmanager", 3814 | "keywords": [ 3815 | "event", 3816 | "eventmanager", 3817 | "events", 3818 | "zf2" 3819 | ], 3820 | "time": "2017-07-11T19:17:22+00:00" 3821 | }, 3822 | { 3823 | "name": "zendframework/zend-filter", 3824 | "version": "2.7.2", 3825 | "source": { 3826 | "type": "git", 3827 | "url": "https://github.com/zendframework/zend-filter.git", 3828 | "reference": "b8d0ff872f126631bf63a932e33aa2d22d467175" 3829 | }, 3830 | "dist": { 3831 | "type": "zip", 3832 | "url": "https://api.github.com/repos/zendframework/zend-filter/zipball/b8d0ff872f126631bf63a932e33aa2d22d467175", 3833 | "reference": "b8d0ff872f126631bf63a932e33aa2d22d467175", 3834 | "shasum": "" 3835 | }, 3836 | "require": { 3837 | "php": "^5.5 || ^7.0", 3838 | "zendframework/zend-stdlib": "^2.7 || ^3.0" 3839 | }, 3840 | "require-dev": { 3841 | "pear/archive_tar": "^1.4", 3842 | "phpunit/phpunit": "^6.0.10 || ^5.7.17", 3843 | "zendframework/zend-coding-standard": "~1.0.0", 3844 | "zendframework/zend-crypt": "^2.6 || ^3.0", 3845 | "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", 3846 | "zendframework/zend-uri": "^2.5" 3847 | }, 3848 | "suggest": { 3849 | "zendframework/zend-crypt": "Zend\\Crypt component, for encryption filters", 3850 | "zendframework/zend-i18n": "Zend\\I18n component for filters depending on i18n functionality", 3851 | "zendframework/zend-servicemanager": "Zend\\ServiceManager component, for using the filter chain functionality", 3852 | "zendframework/zend-uri": "Zend\\Uri component, for the UriNormalize filter" 3853 | }, 3854 | "type": "library", 3855 | "extra": { 3856 | "branch-alias": { 3857 | "dev-master": "2.7-dev", 3858 | "dev-develop": "2.8-dev" 3859 | }, 3860 | "zf": { 3861 | "component": "Zend\\Filter", 3862 | "config-provider": "Zend\\Filter\\ConfigProvider" 3863 | } 3864 | }, 3865 | "autoload": { 3866 | "psr-4": { 3867 | "Zend\\Filter\\": "src/" 3868 | } 3869 | }, 3870 | "notification-url": "https://packagist.org/downloads/", 3871 | "license": [ 3872 | "BSD-3-Clause" 3873 | ], 3874 | "description": "provides a set of commonly needed data filters", 3875 | "homepage": "https://github.com/zendframework/zend-filter", 3876 | "keywords": [ 3877 | "filter", 3878 | "zf2" 3879 | ], 3880 | "time": "2017-05-17T20:56:17+00:00" 3881 | }, 3882 | { 3883 | "name": "zendframework/zend-hydrator", 3884 | "version": "1.1.0", 3885 | "source": { 3886 | "type": "git", 3887 | "url": "https://github.com/zendframework/zend-hydrator.git", 3888 | "reference": "22652e1661a5a10b3f564cf7824a2206cf5a4a65" 3889 | }, 3890 | "dist": { 3891 | "type": "zip", 3892 | "url": "https://api.github.com/repos/zendframework/zend-hydrator/zipball/22652e1661a5a10b3f564cf7824a2206cf5a4a65", 3893 | "reference": "22652e1661a5a10b3f564cf7824a2206cf5a4a65", 3894 | "shasum": "" 3895 | }, 3896 | "require": { 3897 | "php": "^5.5 || ^7.0", 3898 | "zendframework/zend-stdlib": "^2.7 || ^3.0" 3899 | }, 3900 | "require-dev": { 3901 | "phpunit/phpunit": "~4.0", 3902 | "squizlabs/php_codesniffer": "^2.0@dev", 3903 | "zendframework/zend-eventmanager": "^2.6.2 || ^3.0", 3904 | "zendframework/zend-filter": "^2.6", 3905 | "zendframework/zend-inputfilter": "^2.6", 3906 | "zendframework/zend-serializer": "^2.6.1", 3907 | "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3" 3908 | }, 3909 | "suggest": { 3910 | "zendframework/zend-eventmanager": "^2.6.2 || ^3.0, to support aggregate hydrator usage", 3911 | "zendframework/zend-filter": "^2.6, to support naming strategy hydrator usage", 3912 | "zendframework/zend-serializer": "^2.6.1, to use the SerializableStrategy", 3913 | "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3, to support hydrator plugin manager usage" 3914 | }, 3915 | "type": "library", 3916 | "extra": { 3917 | "branch-alias": { 3918 | "dev-release-1.0": "1.0-dev", 3919 | "dev-release-1.1": "1.1-dev", 3920 | "dev-master": "2.0-dev", 3921 | "dev-develop": "2.1-dev" 3922 | } 3923 | }, 3924 | "autoload": { 3925 | "psr-4": { 3926 | "Zend\\Hydrator\\": "src/" 3927 | } 3928 | }, 3929 | "notification-url": "https://packagist.org/downloads/", 3930 | "license": [ 3931 | "BSD-3-Clause" 3932 | ], 3933 | "homepage": "https://github.com/zendframework/zend-hydrator", 3934 | "keywords": [ 3935 | "hydrator", 3936 | "zf2" 3937 | ], 3938 | "time": "2016-02-18T22:38:26+00:00" 3939 | }, 3940 | { 3941 | "name": "zendframework/zend-i18n", 3942 | "version": "2.7.4", 3943 | "source": { 3944 | "type": "git", 3945 | "url": "https://github.com/zendframework/zend-i18n.git", 3946 | "reference": "d3431e29cc00c2a1c6704e601d4371dbf24f6a31" 3947 | }, 3948 | "dist": { 3949 | "type": "zip", 3950 | "url": "https://api.github.com/repos/zendframework/zend-i18n/zipball/d3431e29cc00c2a1c6704e601d4371dbf24f6a31", 3951 | "reference": "d3431e29cc00c2a1c6704e601d4371dbf24f6a31", 3952 | "shasum": "" 3953 | }, 3954 | "require": { 3955 | "php": "^7.0 || ^5.6", 3956 | "zendframework/zend-stdlib": "^2.7 || ^3.0" 3957 | }, 3958 | "require-dev": { 3959 | "phpunit/phpunit": "^6.0.8 || ^5.7.15", 3960 | "zendframework/zend-cache": "^2.6.1", 3961 | "zendframework/zend-coding-standard": "~1.0.0", 3962 | "zendframework/zend-config": "^2.6", 3963 | "zendframework/zend-eventmanager": "^2.6.2 || ^3.0", 3964 | "zendframework/zend-filter": "^2.6.1", 3965 | "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", 3966 | "zendframework/zend-validator": "^2.6", 3967 | "zendframework/zend-view": "^2.6.3" 3968 | }, 3969 | "suggest": { 3970 | "ext-intl": "Required for most features of Zend\\I18n; included in default builds of PHP", 3971 | "zendframework/zend-cache": "Zend\\Cache component", 3972 | "zendframework/zend-config": "Zend\\Config component", 3973 | "zendframework/zend-eventmanager": "You should install this package to use the events in the translator", 3974 | "zendframework/zend-filter": "You should install this package to use the provided filters", 3975 | "zendframework/zend-i18n-resources": "Translation resources", 3976 | "zendframework/zend-servicemanager": "Zend\\ServiceManager component", 3977 | "zendframework/zend-validator": "You should install this package to use the provided validators", 3978 | "zendframework/zend-view": "You should install this package to use the provided view helpers" 3979 | }, 3980 | "type": "library", 3981 | "extra": { 3982 | "branch-alias": { 3983 | "dev-master": "2.7-dev", 3984 | "dev-develop": "2.8-dev" 3985 | }, 3986 | "zf": { 3987 | "component": "Zend\\I18n", 3988 | "config-provider": "Zend\\I18n\\ConfigProvider" 3989 | } 3990 | }, 3991 | "autoload": { 3992 | "psr-4": { 3993 | "Zend\\I18n\\": "src/" 3994 | } 3995 | }, 3996 | "notification-url": "https://packagist.org/downloads/", 3997 | "license": [ 3998 | "BSD-3-Clause" 3999 | ], 4000 | "homepage": "https://github.com/zendframework/zend-i18n", 4001 | "keywords": [ 4002 | "i18n", 4003 | "zf2" 4004 | ], 4005 | "time": "2017-05-17T17:00:12+00:00" 4006 | }, 4007 | { 4008 | "name": "zendframework/zend-json", 4009 | "version": "3.0.0", 4010 | "source": { 4011 | "type": "git", 4012 | "url": "https://github.com/zendframework/zend-json.git", 4013 | "reference": "f42a1588e75c2a3e338cd94c37906231e616daab" 4014 | }, 4015 | "dist": { 4016 | "type": "zip", 4017 | "url": "https://api.github.com/repos/zendframework/zend-json/zipball/f42a1588e75c2a3e338cd94c37906231e616daab", 4018 | "reference": "f42a1588e75c2a3e338cd94c37906231e616daab", 4019 | "shasum": "" 4020 | }, 4021 | "require": { 4022 | "php": "^5.5 || ^7.0" 4023 | }, 4024 | "require-dev": { 4025 | "phpunit/phpunit": "~4.0", 4026 | "squizlabs/php_codesniffer": "^2.3", 4027 | "zendframework/zend-stdlib": "^2.7 || ^3.0" 4028 | }, 4029 | "suggest": { 4030 | "zendframework/zend-json-server": "For implementing JSON-RPC servers", 4031 | "zendframework/zend-xml2json": "For converting XML documents to JSON" 4032 | }, 4033 | "type": "library", 4034 | "extra": { 4035 | "branch-alias": { 4036 | "dev-master": "3.0-dev", 4037 | "dev-develop": "3.1-dev" 4038 | } 4039 | }, 4040 | "autoload": { 4041 | "psr-4": { 4042 | "Zend\\Json\\": "src/" 4043 | } 4044 | }, 4045 | "notification-url": "https://packagist.org/downloads/", 4046 | "license": [ 4047 | "BSD-3-Clause" 4048 | ], 4049 | "description": "provides convenience methods for serializing native PHP to JSON and decoding JSON to native PHP", 4050 | "homepage": "https://github.com/zendframework/zend-json", 4051 | "keywords": [ 4052 | "json", 4053 | "zf2" 4054 | ], 4055 | "time": "2016-04-01T02:34:00+00:00" 4056 | }, 4057 | { 4058 | "name": "zendframework/zend-serializer", 4059 | "version": "2.8.0", 4060 | "source": { 4061 | "type": "git", 4062 | "url": "https://github.com/zendframework/zend-serializer.git", 4063 | "reference": "ff74ea020f5f90866eb28365327e9bc765a61a6e" 4064 | }, 4065 | "dist": { 4066 | "type": "zip", 4067 | "url": "https://api.github.com/repos/zendframework/zend-serializer/zipball/ff74ea020f5f90866eb28365327e9bc765a61a6e", 4068 | "reference": "ff74ea020f5f90866eb28365327e9bc765a61a6e", 4069 | "shasum": "" 4070 | }, 4071 | "require": { 4072 | "php": "^5.6 || ^7.0", 4073 | "zendframework/zend-json": "^2.5 || ^3.0", 4074 | "zendframework/zend-stdlib": "^2.7 || ^3.0" 4075 | }, 4076 | "require-dev": { 4077 | "phpunit/phpunit": "^4.5", 4078 | "squizlabs/php_codesniffer": "^2.3.1", 4079 | "zendframework/zend-math": "^2.6", 4080 | "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3" 4081 | }, 4082 | "suggest": { 4083 | "zendframework/zend-math": "(^2.6 || ^3.0) To support Python Pickle serialization", 4084 | "zendframework/zend-servicemanager": "(^2.7.5 || ^3.0.3) To support plugin manager support" 4085 | }, 4086 | "type": "library", 4087 | "extra": { 4088 | "branch-alias": { 4089 | "dev-master": "2.8-dev", 4090 | "dev-develop": "2.9-dev" 4091 | }, 4092 | "zf": { 4093 | "component": "Zend\\Serializer", 4094 | "config-provider": "Zend\\Serializer\\ConfigProvider" 4095 | } 4096 | }, 4097 | "autoload": { 4098 | "psr-4": { 4099 | "Zend\\Serializer\\": "src/" 4100 | } 4101 | }, 4102 | "notification-url": "https://packagist.org/downloads/", 4103 | "license": [ 4104 | "BSD-3-Clause" 4105 | ], 4106 | "description": "provides an adapter based interface to simply generate storable representation of PHP types by different facilities, and recover", 4107 | "homepage": "https://github.com/zendframework/zend-serializer", 4108 | "keywords": [ 4109 | "serializer", 4110 | "zf2" 4111 | ], 4112 | "time": "2016-06-21T17:01:55+00:00" 4113 | }, 4114 | { 4115 | "name": "zendframework/zend-servicemanager", 4116 | "version": "2.7.8", 4117 | "source": { 4118 | "type": "git", 4119 | "url": "https://github.com/zendframework/zend-servicemanager.git", 4120 | "reference": "2ae3b6e4978ec2e9ff52352e661946714ed989f9" 4121 | }, 4122 | "dist": { 4123 | "type": "zip", 4124 | "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/2ae3b6e4978ec2e9ff52352e661946714ed989f9", 4125 | "reference": "2ae3b6e4978ec2e9ff52352e661946714ed989f9", 4126 | "shasum": "" 4127 | }, 4128 | "require": { 4129 | "container-interop/container-interop": "~1.0", 4130 | "php": "^5.5 || ^7.0" 4131 | }, 4132 | "require-dev": { 4133 | "athletic/athletic": "dev-master", 4134 | "fabpot/php-cs-fixer": "1.7.*", 4135 | "phpunit/phpunit": "~4.0", 4136 | "zendframework/zend-di": "~2.5", 4137 | "zendframework/zend-mvc": "~2.5" 4138 | }, 4139 | "suggest": { 4140 | "ocramius/proxy-manager": "ProxyManager 0.5.* to handle lazy initialization of services", 4141 | "zendframework/zend-di": "Zend\\Di component" 4142 | }, 4143 | "type": "library", 4144 | "extra": { 4145 | "branch-alias": { 4146 | "dev-master": "2.7-dev", 4147 | "dev-develop": "3.0-dev" 4148 | } 4149 | }, 4150 | "autoload": { 4151 | "psr-4": { 4152 | "Zend\\ServiceManager\\": "src/" 4153 | } 4154 | }, 4155 | "notification-url": "https://packagist.org/downloads/", 4156 | "license": [ 4157 | "BSD-3-Clause" 4158 | ], 4159 | "homepage": "https://github.com/zendframework/zend-servicemanager", 4160 | "keywords": [ 4161 | "servicemanager", 4162 | "zf2" 4163 | ], 4164 | "time": "2016-12-19T19:14:29+00:00" 4165 | }, 4166 | { 4167 | "name": "zendframework/zend-stdlib", 4168 | "version": "2.7.7", 4169 | "source": { 4170 | "type": "git", 4171 | "url": "https://github.com/zendframework/zend-stdlib.git", 4172 | "reference": "0e44eb46788f65e09e077eb7f44d2659143bcc1f" 4173 | }, 4174 | "dist": { 4175 | "type": "zip", 4176 | "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/0e44eb46788f65e09e077eb7f44d2659143bcc1f", 4177 | "reference": "0e44eb46788f65e09e077eb7f44d2659143bcc1f", 4178 | "shasum": "" 4179 | }, 4180 | "require": { 4181 | "php": "^5.5 || ^7.0", 4182 | "zendframework/zend-hydrator": "~1.1" 4183 | }, 4184 | "require-dev": { 4185 | "athletic/athletic": "~0.1", 4186 | "fabpot/php-cs-fixer": "1.7.*", 4187 | "phpunit/phpunit": "~4.0", 4188 | "zendframework/zend-config": "~2.5", 4189 | "zendframework/zend-eventmanager": "~2.5", 4190 | "zendframework/zend-filter": "~2.5", 4191 | "zendframework/zend-inputfilter": "~2.5", 4192 | "zendframework/zend-serializer": "~2.5", 4193 | "zendframework/zend-servicemanager": "~2.5" 4194 | }, 4195 | "suggest": { 4196 | "zendframework/zend-eventmanager": "To support aggregate hydrator usage", 4197 | "zendframework/zend-filter": "To support naming strategy hydrator usage", 4198 | "zendframework/zend-serializer": "Zend\\Serializer component", 4199 | "zendframework/zend-servicemanager": "To support hydrator plugin manager usage" 4200 | }, 4201 | "type": "library", 4202 | "extra": { 4203 | "branch-alias": { 4204 | "dev-release-2.7": "2.7-dev", 4205 | "dev-master": "3.0-dev", 4206 | "dev-develop": "3.1-dev" 4207 | } 4208 | }, 4209 | "autoload": { 4210 | "psr-4": { 4211 | "Zend\\Stdlib\\": "src/" 4212 | } 4213 | }, 4214 | "notification-url": "https://packagist.org/downloads/", 4215 | "license": [ 4216 | "BSD-3-Clause" 4217 | ], 4218 | "homepage": "https://github.com/zendframework/zend-stdlib", 4219 | "keywords": [ 4220 | "stdlib", 4221 | "zf2" 4222 | ], 4223 | "time": "2016-04-12T21:17:31+00:00" 4224 | }, 4225 | { 4226 | "name": "zetacomponents/base", 4227 | "version": "1.9", 4228 | "source": { 4229 | "type": "git", 4230 | "url": "https://github.com/zetacomponents/Base.git", 4231 | "reference": "f20df24e8de3e48b6b69b2503f917e457281e687" 4232 | }, 4233 | "dist": { 4234 | "type": "zip", 4235 | "url": "https://api.github.com/repos/zetacomponents/Base/zipball/f20df24e8de3e48b6b69b2503f917e457281e687", 4236 | "reference": "f20df24e8de3e48b6b69b2503f917e457281e687", 4237 | "shasum": "" 4238 | }, 4239 | "require-dev": { 4240 | "zetacomponents/unit-test": "*" 4241 | }, 4242 | "type": "library", 4243 | "autoload": { 4244 | "classmap": [ 4245 | "src" 4246 | ] 4247 | }, 4248 | "notification-url": "https://packagist.org/downloads/", 4249 | "license": [ 4250 | "Apache-2.0" 4251 | ], 4252 | "authors": [ 4253 | { 4254 | "name": "Sergey Alexeev" 4255 | }, 4256 | { 4257 | "name": "Sebastian Bergmann" 4258 | }, 4259 | { 4260 | "name": "Jan Borsodi" 4261 | }, 4262 | { 4263 | "name": "Raymond Bosman" 4264 | }, 4265 | { 4266 | "name": "Frederik Holljen" 4267 | }, 4268 | { 4269 | "name": "Kore Nordmann" 4270 | }, 4271 | { 4272 | "name": "Derick Rethans" 4273 | }, 4274 | { 4275 | "name": "Vadym Savchuk" 4276 | }, 4277 | { 4278 | "name": "Tobias Schlitt" 4279 | }, 4280 | { 4281 | "name": "Alexandru Stanoi" 4282 | } 4283 | ], 4284 | "description": "The Base package provides the basic infrastructure that all packages rely on. Therefore every component relies on this package.", 4285 | "homepage": "https://github.com/zetacomponents", 4286 | "time": "2014-09-19T03:28:34+00:00" 4287 | }, 4288 | { 4289 | "name": "zetacomponents/document", 4290 | "version": "1.3.1", 4291 | "source": { 4292 | "type": "git", 4293 | "url": "https://github.com/zetacomponents/Document.git", 4294 | "reference": "688abfde573cf3fe0730f82538fbd7aa9fc95bc8" 4295 | }, 4296 | "dist": { 4297 | "type": "zip", 4298 | "url": "https://api.github.com/repos/zetacomponents/Document/zipball/688abfde573cf3fe0730f82538fbd7aa9fc95bc8", 4299 | "reference": "688abfde573cf3fe0730f82538fbd7aa9fc95bc8", 4300 | "shasum": "" 4301 | }, 4302 | "require": { 4303 | "zetacomponents/base": "*" 4304 | }, 4305 | "require-dev": { 4306 | "zetacomponents/unit-test": "dev-master" 4307 | }, 4308 | "type": "library", 4309 | "autoload": { 4310 | "classmap": [ 4311 | "src" 4312 | ] 4313 | }, 4314 | "notification-url": "https://packagist.org/downloads/", 4315 | "license": [ 4316 | "Apache-2.0" 4317 | ], 4318 | "authors": [ 4319 | { 4320 | "name": "Sebastian Bergmann" 4321 | }, 4322 | { 4323 | "name": "Kore Nordmann" 4324 | }, 4325 | { 4326 | "name": "Derick Rethans" 4327 | }, 4328 | { 4329 | "name": "Tobias Schlitt" 4330 | }, 4331 | { 4332 | "name": "Alexandru Stanoi" 4333 | } 4334 | ], 4335 | "description": "The Document components provides a general conversion framework for different semantic document markup languages like XHTML, Docbook, RST and similar.", 4336 | "homepage": "https://github.com/zetacomponents", 4337 | "time": "2013-12-19T11:40:00+00:00" 4338 | } 4339 | ], 4340 | "aliases": [], 4341 | "minimum-stability": "stable", 4342 | "stability-flags": [], 4343 | "prefer-stable": false, 4344 | "prefer-lowest": false, 4345 | "platform": { 4346 | "php": "^7.0" 4347 | }, 4348 | "platform-dev": [] 4349 | } 4350 | -------------------------------------------------------------------------------- /phpdoc.dist.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | build/apidoc 5 | 6 | 7 | build/apidoc 8 | 9 | 10 | ./src 11 | 12 | 13 | -------------------------------------------------------------------------------- /phpunit.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 14 | 15 | ./tests/ 16 | 17 | 18 | ./tests/ 19 | 20 | 21 | 22 | 23 | 24 | ./src/ 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /src/bitExpert/Http/Middleware/Psr7/Prophiler/DataCollector/Request.php: -------------------------------------------------------------------------------- 1 | request = $request; 31 | } 32 | 33 | /** 34 | * {@inheritdoc} 35 | */ 36 | public function getTitle() 37 | { 38 | return 'Request'; 39 | } 40 | 41 | 42 | /** 43 | * {@inheritdoc} 44 | */ 45 | public function getIcon() 46 | { 47 | return ''; 48 | } 49 | 50 | /** 51 | * {@inheritdoc} 52 | */ 53 | public function getData() 54 | { 55 | $headers = []; 56 | foreach ($this->request->getHeaders() as $name => $values) { 57 | $headers[$name] = implode(', ', $values); 58 | } 59 | 60 | $data = [ 61 | 'SERVER' => $this->request->getServerParams(), 62 | 'QUERY' => $this->request->getQueryParams(), 63 | 'COOKIES' => $this->request->getCookieParams(), 64 | 'HEADERS' => $headers, 65 | 'ATTRIBUTES' => $this->request->getAttributes() 66 | ]; 67 | 68 | return $data; 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/bitExpert/Http/Middleware/Psr7/Prophiler/ProphilerMiddleware.php: -------------------------------------------------------------------------------- 1 | toolbar = $toolbar; 39 | $this->logger = LoggerFactory::getLogger(__CLASS__); 40 | } 41 | 42 | /** 43 | * {@inheritDoc} 44 | */ 45 | public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $out = null) 46 | { 47 | $this->toolbar->addDataCollector(new Request($request)); 48 | 49 | if (null !== $out) { 50 | $response = $out($request, $response); 51 | } 52 | 53 | if (!$response->getBody()->isWritable()) { 54 | $this->logger->debug('Response is not writable. Skipping Prophiler toolbar generation.'); 55 | return $response; 56 | } 57 | 58 | // Allow any HTML content type 59 | $contentType = $response->getHeaderLine('Content-Type'); 60 | if (!preg_match('#^(?:text/html|application/xhtml\+xml)\s*(?:;|$)#', $contentType) 61 | ) { 62 | $this->logger->debug('Content-Type of response is not HTML. Skipping Prophiler toolbar generation.'); 63 | return $response; 64 | } 65 | 66 | // We need to be at the end of the stream when writing 67 | $body = $response->getBody(); 68 | if (!$body->eof() && $body->isSeekable()) { 69 | $body->seek(0, SEEK_END); 70 | } 71 | $body->write($this->toolbar->render()); 72 | return $response; 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /tests/bitExpert/Http/Middleware/Psr7/Prophiler/DataCollector/RequestUnitTest.php: -------------------------------------------------------------------------------- 1 | request = $this->getMock(ServerRequestInterface::class); 34 | $this->request->expects($this->any()) 35 | ->method('getHeaders') 36 | ->will($this->returnValue([])); 37 | $this->request->expects($this->any()) 38 | ->method('getServerParams') 39 | ->will($this->returnValue([])); 40 | $this->request->expects($this->any()) 41 | ->method('getQueryParams') 42 | ->will($this->returnValue([])); 43 | $this->request->expects($this->any()) 44 | ->method('getCookieParams') 45 | ->will($this->returnValue([])); 46 | $this->request->expects($this->any()) 47 | ->method('getAttributes') 48 | ->will($this->returnValue([])); 49 | 50 | $this->dataCollector = new Request($this->request); 51 | } 52 | 53 | /** 54 | * @test 55 | */ 56 | public function datacollectorReturnsArray() 57 | { 58 | $data = $this->dataCollector->getData(); 59 | 60 | $this->assertTrue(is_array($data)); 61 | $this->assertArrayHasKey('SERVER', $data); 62 | $this->assertArrayHasKey('QUERY', $data); 63 | $this->assertArrayHasKey('COOKIES', $data); 64 | $this->assertArrayHasKey('HEADERS', $data); 65 | $this->assertArrayHasKey('ATTRIBUTES', $data); 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /tests/bitExpert/Http/Middleware/Psr7/Prophiler/ProphilerMiddlewareUnitTest.php: -------------------------------------------------------------------------------- 1 | toolbar = $this->getMock(Toolbar::class, [], [], '', false); 49 | $this->middleware = new ProphilerMiddleware($this->toolbar); 50 | $this->body = $this->getMock(StreamInterface::class); 51 | $this->request = $this->getMock(ServerRequestInterface::class); 52 | $this->response = $this->getMock(ResponseInterface::class); 53 | $this->response->expects($this->any()) 54 | ->method('getBody') 55 | ->will($this->returnValue($this->body)); 56 | } 57 | 58 | /** 59 | * @test 60 | */ 61 | public function toolbarIsNotAppendedWhenResponseIsNotWritable() 62 | { 63 | $this->body->expects($this->once()) 64 | ->method('isWritable') 65 | ->will($this->returnValue(false)); 66 | $this->body->expects($this->never()) 67 | ->method('write'); 68 | 69 | $this->middleware->__invoke($this->request, $this->response); 70 | } 71 | 72 | /** 73 | * @test 74 | */ 75 | public function toolbarIsNotAppendedWhenContentTypeIsMissing() 76 | { 77 | $this->body->expects($this->once()) 78 | ->method('isWritable') 79 | ->will($this->returnValue(true)); 80 | $this->body->expects($this->never()) 81 | ->method('write'); 82 | $this->response->expects($this->once()) 83 | ->method('getHeaderLine') 84 | ->will($this->returnValue('')); 85 | 86 | $this->middleware->__invoke($this->request, $this->response); 87 | } 88 | 89 | /** 90 | * @test 91 | */ 92 | public function toolbarIsNotAppendedWhenContentTypeIsNotHtml() 93 | { 94 | $this->body->expects($this->once()) 95 | ->method('isWritable') 96 | ->will($this->returnValue(true)); 97 | $this->body->expects($this->never()) 98 | ->method('write'); 99 | $this->response->expects($this->once()) 100 | ->method('getHeaderLine') 101 | ->will($this->returnValue('application/json')); 102 | 103 | $this->middleware->__invoke($this->request, $this->response); 104 | } 105 | 106 | public function htmlContentTypes() 107 | { 108 | return [ 109 | 'text/html' => ['text/html'], 110 | 'text/html; charset=utf-8' => ['text/html; charset=utf-8'], 111 | 'text/html;charset=utf-8' => ['text/html;charset=utf-8'], 112 | 'application/xhtml+xml' => ['application/xhtml+xml'], 113 | 'application/xhtml+xml; charset=utf-8' => ['application/xhtml+xml; charset=utf-8'], 114 | 'application/xhtml+xml;charset=utf-8' => ['application/xhtml+xml;charset=utf-8'], 115 | ]; 116 | } 117 | 118 | /** 119 | * @test 120 | * @dataProvider htmlContentTypes 121 | */ 122 | public function toolbarIsAppendedWhenContentTypeIsHtml($contentType) 123 | { 124 | $this->body->expects($this->once()) 125 | ->method('isWritable') 126 | ->will($this->returnValue(true)); 127 | $this->body->expects($this->once()) 128 | ->method('write'); 129 | $this->response->expects($this->once()) 130 | ->method('getHeaderLine') 131 | ->will($this->returnValue($contentType)); 132 | 133 | $this->middleware->__invoke($this->request, $this->response); 134 | } 135 | 136 | public function seeksToTheBodyEOFPriorToWriting() 137 | { 138 | $this->body->expects($this->once()) 139 | ->method('isWritable') 140 | ->will($this->returnValue(true)); 141 | $this->body->expects($this->once()) 142 | ->method('eof') 143 | ->will($this->returnValue(false)); 144 | $this->body->expects($this->once()) 145 | ->method('isSeekable') 146 | ->will($this->returnValue(true)); 147 | $this->body->expects($this->once()) 148 | ->method('seek') 149 | ->with($this->equalTo(0), $this->equalTo(SEEK_END)) 150 | ->will($this->returnValue(true)); 151 | $this->body->expects($this->once()) 152 | ->method('write'); 153 | $this->response->expects($this->once()) 154 | ->method('getHeaderLine') 155 | ->will($this->returnValue('text/html')); 156 | 157 | $this->middleware->__invoke($this->request, $this->response); 158 | } 159 | } 160 | -------------------------------------------------------------------------------- /tests/bootstrap.php: -------------------------------------------------------------------------------- 1 |