Version Description
- Fix - Purchases over 1.000 USD fail. #84
Download this release
Release Info
| Developer | automattic |
| Plugin | |
| Version | 1.0.2 |
| Comparing to | |
| See all releases | |
Code changes from version 1.0.1 to 1.0.2
- changelog.txt +3 -0
- modules/ppcp-api-client/src/Entity/class-amount.php +1 -1
- modules/ppcp-api-client/src/Entity/class-money.php +1 -1
- modules/ppcp-button/assets/js/hostedfields.js +0 -2
- modules/ppcp-button/assets/js/hostedfields.js.map +0 -1
- package-lock.json +5 -0
- readme.txt +4 -1
- vendor/autoload.php +1 -1
- vendor/composer/ClassLoader.php +1 -1
- vendor/composer/autoload_files.php +10 -0
- vendor/composer/autoload_psr4.php +2 -0
- vendor/composer/autoload_real.php +22 -4
- vendor/composer/autoload_static.php +18 -4
- vendor/composer/installed.json +142 -97
- vendor/dhii/collections-interface/.env.example +2 -0
- vendor/dhii/collections-interface/CHANGELOG.md +64 -0
- vendor/{wp-oop/transient-cache → dhii/collections-interface}/LICENSE +1 -1
- vendor/dhii/collections-interface/README.md +43 -0
- vendor/dhii/collections-interface/composer.json +42 -0
- vendor/dhii/{module-interface → collections-interface}/docker-compose.yml +6 -1
- vendor/dhii/{module-interface → collections-interface}/docker/Dockerfile_php +1 -1
- vendor/dhii/collections-interface/phpcs.xml.dist +48 -0
- vendor/dhii/collections-interface/phpunit.xml.dist +23 -0
- vendor/dhii/collections-interface/psalm.xml.dist +25 -0
- vendor/dhii/collections-interface/src/ClearableContainerInterface.php +18 -0
- vendor/dhii/collections-interface/src/ContainerFactoryInterface.php +27 -0
- vendor/dhii/collections-interface/src/ContainerInterface.php +16 -0
- vendor/dhii/collections-interface/src/CountableListInterface.php +21 -0
- vendor/dhii/collections-interface/src/CountableMapInterface.php +21 -0
- vendor/dhii/collections-interface/src/CountableSetInterface.php +21 -0
- vendor/dhii/collections-interface/src/HasCapableInterface.php +29 -0
- vendor/dhii/collections-interface/src/HasItemCapableInterface.php +30 -0
- vendor/dhii/collections-interface/src/MapFactoryInterface.php +27 -0
- vendor/dhii/collections-interface/src/MapInterface.php +21 -0
- vendor/dhii/collections-interface/src/MutableContainerInterface.php +42 -0
- vendor/dhii/collections-interface/src/SetFactoryInterface.php +30 -0
- vendor/dhii/collections-interface/src/SetInterface.php +21 -0
- vendor/dhii/collections-interface/src/WritableContainerFactoryInterface.php +20 -0
- vendor/dhii/collections-interface/src/WritableContainerInterface.php +58 -0
- vendor/dhii/collections-interface/src/WritableMapFactoryInterface.php +22 -0
- vendor/dhii/collections-interface/src/WritableMapInterface.php +15 -0
- vendor/dhii/collections-interface/src/WritableSetFactoryInterface.php +20 -0
- vendor/dhii/collections-interface/src/WritableSetInterface.php +54 -0
- vendor/dhii/containers/.codeclimate.yml +0 -21
- vendor/dhii/containers/.php_cs +0 -27
- vendor/dhii/containers/CHANGELOG.md +3 -0
- vendor/dhii/containers/composer.json +3 -3
- vendor/dhii/containers/docker/Dockerfile_php +2 -2
- vendor/dhii/containers/phpunit.xml +0 -35
- vendor/dhii/containers/src/AliasingContainer.php +84 -0
- vendor/dhii/containers/src/CachingContainer.php +10 -15
- vendor/dhii/containers/src/CompositeCachingServiceProvider.php +3 -3
- vendor/dhii/containers/src/CompositeContainer.php +10 -16
- vendor/dhii/containers/src/DataStructureBasedFactory.php +43 -0
- vendor/dhii/containers/src/DataStructureBasedFactoryInterface.php +26 -0
- vendor/dhii/containers/src/DelegatingContainer.php +14 -18
- vendor/dhii/containers/src/DeprefixingContainer.php +96 -0
- vendor/dhii/containers/src/Dictionary.php +115 -0
- vendor/dhii/containers/src/DictionaryFactory.php +21 -0
- vendor/dhii/containers/src/Exception/ContainerException.php +3 -16
- vendor/dhii/containers/src/Exception/NotFoundException.php +4 -17
- vendor/dhii/containers/src/HierarchyContainer.php +87 -0
- vendor/dhii/containers/src/MappingContainer.php +88 -0
- vendor/dhii/containers/src/MaskingContainer.php +100 -0
- vendor/dhii/containers/src/PathContainer.php +125 -0
- vendor/dhii/containers/src/PrefixingContainer.php +121 -0
- vendor/dhii/containers/src/SegmentingContainer.php +116 -0
- vendor/dhii/containers/test/functional/CompositeCachingServiceProviderTest.php +0 -119
- vendor/dhii/containers/test/functional/DelegatingContainerTest.php +0 -109
- vendor/dhii/containers/test/functional/Dhii/Container/FuncTest/CachingContainerTest.php +0 -88
- vendor/dhii/containers/test/functional/Dhii/Container/FuncTest/CompositeContainerTest.php +0 -130
- vendor/dhii/containers/test/functional/Exception/ContainerExceptionTest.php +0 -63
- vendor/dhii/containers/test/functional/Exception/NotFoundExceptionTest.php +0 -63
- vendor/dhii/containers/test/functional/ServiceProviderTest.php +0 -78
- vendor/dhii/containers/test/helpers/ComponentMockeryTrait.php +0 -267
- vendor/dhii/containers/test/unit/CompositeCachingServiceProviderTest.php +0 -136
- vendor/dhii/containers/test/unit/ProxyContainerTest.php +0 -112
- vendor/dhii/{module-interface → data-key-value-aware-interface}/.codeclimate.yml +0 -4
- vendor/dhii/{module-interface → data-key-value-aware-interface}/.php_cs +2 -2
- vendor/dhii/data-key-value-aware-interface/CHANGELOG.md +12 -0
- vendor/dhii/data-key-value-aware-interface/README.md +6 -0
- vendor/dhii/data-key-value-aware-interface/composer.json +27 -0
- vendor/dhii/{containers → data-key-value-aware-interface}/composer.lock +807 -742
- vendor/dhii/data-key-value-aware-interface/nbproject/project.properties +25 -0
- vendor/dhii/data-key-value-aware-interface/nbproject/project.xml +9 -0
- vendor/dhii/{module-interface → data-key-value-aware-interface}/phpunit.xml +1 -1
- vendor/dhii/data-key-value-aware-interface/src/KeyAwareInterface.php +22 -0
- vendor/dhii/data-key-value-aware-interface/src/KeyValueAwareInterface.php +16 -0
- vendor/dhii/data-key-value-aware-interface/src/ValueAwareInterface.php +20 -0
- vendor/dhii/{containers → data-key-value-aware-interface}/test/bootstrap.php +0 -0
- vendor/dhii/data-key-value-aware-interface/test/functional/KeyAwareInterfaceTest.php +41 -0
- vendor/dhii/data-key-value-aware-interface/test/functional/KeyValueAwareInterfaceTest.php +42 -0
- vendor/dhii/data-key-value-aware-interface/test/functional/ValueAwareInterfaceTest.php +41 -0
- vendor/dhii/module-interface/.env.example +0 -1
- vendor/dhii/module-interface/CHANGELOG.md +0 -16
- vendor/dhii/module-interface/README.md +14 -274
- vendor/dhii/module-interface/composer.json +14 -8
- vendor/dhii/module-interface/composer.lock +0 -1569
- vendor/dhii/module-interface/src/DependenciesAwareInterface.php +24 -0
- vendor/dhii/module-interface/src/Exception/ModuleExceptionInterface.php +3 -3
- vendor/dhii/module-interface/src/ModuleAwareInterface.php +2 -2
- vendor/dhii/module-interface/src/ModuleFactoryInterface.php +22 -0
- vendor/dhii/module-interface/src/ModuleInterface.php +21 -29
- vendor/dhii/module-interface/src/ModuleKeyAwareInterface.php +22 -0
- vendor/dhii/module-interface/test/bootstrap.php +0 -5
- vendor/dhii/module-interface/test/stubs/GetImplementingMockBuilderCapableTrait.php +0 -46
- vendor/dhii/module-interface/test/unit/Exception/ModuleExceptionInterfaceTest.php +0 -64
- vendor/dhii/module-interface/test/unit/ModuleAwareInterfaceTest.php +0 -46
- vendor/dhii/module-interface/test/unit/ModuleInterfaceTest.php +0 -46
- vendor/dhii/module-interface/travis.php.ini +1 -0
- vendor/psr/simple-cache/.editorconfig +0 -12
- vendor/psr/simple-cache/LICENSE.md +0 -21
- vendor/psr/simple-cache/README.md +0 -8
- vendor/psr/simple-cache/composer.json +0 -25
- vendor/psr/simple-cache/src/CacheException.php +0 -10
- vendor/psr/simple-cache/src/CacheInterface.php +0 -114
- vendor/psr/simple-cache/src/InvalidArgumentException.php +0 -13
- vendor/ralouphie/getallheaders/LICENSE +21 -0
- vendor/ralouphie/getallheaders/README.md +27 -0
- vendor/ralouphie/getallheaders/composer.json +26 -0
- vendor/ralouphie/getallheaders/src/getallheaders.php +46 -0
- vendor/wp-oop/transient-cache/CHANGELOG.md +0 -30
- vendor/wp-oop/transient-cache/README.md +0 -105
- vendor/wp-oop/transient-cache/composer.json +0 -37
- vendor/wp-oop/transient-cache/src/CachePool.php +0 -609
- vendor/wp-oop/transient-cache/src/CachePoolFactory.php +0 -46
- vendor/wp-oop/transient-cache/src/CachePoolFactoryInterface.php +0 -21
- vendor/wp-oop/transient-cache/src/Exception/CacheException.php +0 -14
- vendor/wp-oop/transient-cache/src/Exception/InvalidArgumentException.php +0 -14
- vendor/wp-oop/transient-cache/src/SilentPool.php +0 -154
- vendor/wp-oop/transient-cache/src/SilentPoolFactory.php +0 -33
- woocommerce-paypal-payments.php +1 -1
changelog.txt
CHANGED
|
@@ -1,5 +1,8 @@
|
|
| 1 |
*** Changelog ***
|
| 2 |
|
|
|
|
|
|
|
|
|
|
| 3 |
= 1.0.1 - 2020-11-05 =
|
| 4 |
* Fix - PayPal Smart buttons don't load when using a production/live account and `WP_Debug` is turned on/true. #66
|
| 5 |
* Fix - [Card Processing] SCA/Visa Verification form loads underneath the Checkout blockUI element. #63
|
| 1 |
*** Changelog ***
|
| 2 |
|
| 3 |
+
= 1.0.2 - 2020-11-09 =
|
| 4 |
+
* Fix - Purchases over 1.000 USD fail. #84
|
| 5 |
+
|
| 6 |
= 1.0.1 - 2020-11-05 =
|
| 7 |
* Fix - PayPal Smart buttons don't load when using a production/live account and `WP_Debug` is turned on/true. #66
|
| 8 |
* Fix - [Card Processing] SCA/Visa Verification form loads underneath the Checkout blockUI element. #63
|
modules/ppcp-api-client/src/Entity/class-amount.php
CHANGED
|
@@ -74,7 +74,7 @@ class Amount {
|
|
| 74 |
public function to_array(): array {
|
| 75 |
$amount = array(
|
| 76 |
'currency_code' => $this->currency_code(),
|
| 77 |
-
'value' => number_format( $this->value(), 2 ),
|
| 78 |
);
|
| 79 |
if ( $this->breakdown() && count( $this->breakdown()->to_array() ) ) {
|
| 80 |
$amount['breakdown'] = $this->breakdown()->to_array();
|
| 74 |
public function to_array(): array {
|
| 75 |
$amount = array(
|
| 76 |
'currency_code' => $this->currency_code(),
|
| 77 |
+
'value' => number_format( $this->value(), 2, '.', '' ),
|
| 78 |
);
|
| 79 |
if ( $this->breakdown() && count( $this->breakdown()->to_array() ) ) {
|
| 80 |
$amount['breakdown'] = $this->breakdown()->to_array();
|
modules/ppcp-api-client/src/Entity/class-money.php
CHANGED
|
@@ -65,7 +65,7 @@ class Money {
|
|
| 65 |
public function to_array(): array {
|
| 66 |
return array(
|
| 67 |
'currency_code' => $this->currency_code(),
|
| 68 |
-
'value' => number_format( $this->value(), 2 ),
|
| 69 |
);
|
| 70 |
}
|
| 71 |
}
|
| 65 |
public function to_array(): array {
|
| 66 |
return array(
|
| 67 |
'currency_code' => $this->currency_code(),
|
| 68 |
+
'value' => number_format( $this->value(), 2, '.', '' ),
|
| 69 |
);
|
| 70 |
}
|
| 71 |
}
|
modules/ppcp-button/assets/js/hostedfields.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
| 1 |
-
!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){e.exports=r.p+"css/hosted-fields.css"}]);
|
| 2 |
-
//# sourceMappingURL=hostedfields.js.map
|
|
|
|
|
|
modules/ppcp-button/assets/js/hostedfields.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./resources/css/hosted-fields.scss"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,G,kBClFrDhC,EAAOD,QAAU,IAA0B","file":"js/hostedfields.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","module.exports = __webpack_public_path__ + \"css/hosted-fields.css\";"],"sourceRoot":""}
|
|
|
package-lock.json
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "woocommerce-paypal-payments",
|
| 3 |
+
"version": "1.0.2",
|
| 4 |
+
"lockfileVersion": 1
|
| 5 |
+
}
|
readme.txt
CHANGED
|
@@ -4,7 +4,7 @@ Tags: woocommerce, paypal, payments, ecommerce, e-commerce, store, sales, sell,
|
|
| 4 |
Requires at least: 5.3
|
| 5 |
Tested up to: 5.5
|
| 6 |
Requires PHP: 7.0
|
| 7 |
-
Stable tag: 1.0.
|
| 8 |
License: GPLv2
|
| 9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
| 10 |
|
|
@@ -58,6 +58,9 @@ Follow the steps below to connect the plugin to your PayPal account:
|
|
| 58 |
|
| 59 |
== Changelog ==
|
| 60 |
|
|
|
|
|
|
|
|
|
|
| 61 |
= 1.0.1 =
|
| 62 |
* Fix - PayPal Smart buttons don't load when using a production/live account and `WP_Debug` is turned on/true. #66
|
| 63 |
* Fix - [Card Processing] SCA/Visa Verification form loads underneath the Checkout blockUI element. #63
|
| 4 |
Requires at least: 5.3
|
| 5 |
Tested up to: 5.5
|
| 6 |
Requires PHP: 7.0
|
| 7 |
+
Stable tag: 1.0.2
|
| 8 |
License: GPLv2
|
| 9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
| 10 |
|
| 58 |
|
| 59 |
== Changelog ==
|
| 60 |
|
| 61 |
+
= 1.0.2 =
|
| 62 |
+
* Fix - Purchases over 1.000 USD fail. #84
|
| 63 |
+
|
| 64 |
= 1.0.1 =
|
| 65 |
* Fix - PayPal Smart buttons don't load when using a production/live account and `WP_Debug` is turned on/true. #66
|
| 66 |
* Fix - [Card Processing] SCA/Visa Verification form loads underneath the Checkout blockUI element. #63
|
vendor/autoload.php
CHANGED
|
@@ -4,4 +4,4 @@
|
|
| 4 |
|
| 5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
| 6 |
|
| 7 |
-
return
|
| 4 |
|
| 5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
| 6 |
|
| 7 |
+
return ComposerAutoloaderInit01caf726188ce4a8c830c9ea3872c0fc::getLoader();
|
vendor/composer/ClassLoader.php
CHANGED
|
@@ -60,7 +60,7 @@ class ClassLoader
|
|
| 60 |
public function getPrefixes()
|
| 61 |
{
|
| 62 |
if (!empty($this->prefixesPsr0)) {
|
| 63 |
-
return call_user_func_array('array_merge',
|
| 64 |
}
|
| 65 |
|
| 66 |
return array();
|
| 60 |
public function getPrefixes()
|
| 61 |
{
|
| 62 |
if (!empty($this->prefixesPsr0)) {
|
| 63 |
+
return call_user_func_array('array_merge', $this->prefixesPsr0);
|
| 64 |
}
|
| 65 |
|
| 66 |
return array();
|
vendor/composer/autoload_files.php
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
// autoload_files.php @generated by Composer
|
| 4 |
+
|
| 5 |
+
$vendorDir = dirname(dirname(__FILE__));
|
| 6 |
+
$baseDir = dirname($vendorDir);
|
| 7 |
+
|
| 8 |
+
return array(
|
| 9 |
+
'7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
|
| 10 |
+
);
|
vendor/composer/autoload_psr4.php
CHANGED
|
@@ -16,6 +16,8 @@ return array(
|
|
| 16 |
'Dhii\\Factory\\' => array($vendorDir . '/dhii/factory-interface/src'),
|
| 17 |
'Dhii\\Exception\\' => array($vendorDir . '/dhii/exception-interface/src'),
|
| 18 |
'Dhii\\Data\\Container\\' => array($vendorDir . '/dhii/data-container-interface/src'),
|
|
|
|
| 19 |
'Dhii\\Container\\' => array($vendorDir . '/dhii/containers/src'),
|
|
|
|
| 20 |
'Composer\\Installers\\' => array($vendorDir . '/composer/installers/src/Composer/Installers'),
|
| 21 |
);
|
| 16 |
'Dhii\\Factory\\' => array($vendorDir . '/dhii/factory-interface/src'),
|
| 17 |
'Dhii\\Exception\\' => array($vendorDir . '/dhii/exception-interface/src'),
|
| 18 |
'Dhii\\Data\\Container\\' => array($vendorDir . '/dhii/data-container-interface/src'),
|
| 19 |
+
'Dhii\\Data\\' => array($vendorDir . '/dhii/data-key-value-aware-interface/src'),
|
| 20 |
'Dhii\\Container\\' => array($vendorDir . '/dhii/containers/src'),
|
| 21 |
+
'Dhii\\Collection\\' => array($vendorDir . '/dhii/collections-interface/src'),
|
| 22 |
'Composer\\Installers\\' => array($vendorDir . '/composer/installers/src/Composer/Installers'),
|
| 23 |
);
|
vendor/composer/autoload_real.php
CHANGED
|
@@ -2,7 +2,7 @@
|
|
| 2 |
|
| 3 |
// autoload_real.php @generated by Composer
|
| 4 |
|
| 5 |
-
class
|
| 6 |
{
|
| 7 |
private static $loader;
|
| 8 |
|
|
@@ -22,15 +22,15 @@ class ComposerAutoloaderInit21689d596dda2cee10278dd72c8d9cfa
|
|
| 22 |
return self::$loader;
|
| 23 |
}
|
| 24 |
|
| 25 |
-
spl_autoload_register(array('
|
| 26 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
| 27 |
-
spl_autoload_unregister(array('
|
| 28 |
|
| 29 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
| 30 |
if ($useStaticLoader) {
|
| 31 |
require_once __DIR__ . '/autoload_static.php';
|
| 32 |
|
| 33 |
-
call_user_func(\Composer\Autoload\
|
| 34 |
} else {
|
| 35 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
| 36 |
foreach ($map as $namespace => $path) {
|
|
@@ -50,6 +50,24 @@ class ComposerAutoloaderInit21689d596dda2cee10278dd72c8d9cfa
|
|
| 50 |
|
| 51 |
$loader->register(true);
|
| 52 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 53 |
return $loader;
|
| 54 |
}
|
| 55 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
|
| 3 |
// autoload_real.php @generated by Composer
|
| 4 |
|
| 5 |
+
class ComposerAutoloaderInit01caf726188ce4a8c830c9ea3872c0fc
|
| 6 |
{
|
| 7 |
private static $loader;
|
| 8 |
|
| 22 |
return self::$loader;
|
| 23 |
}
|
| 24 |
|
| 25 |
+
spl_autoload_register(array('ComposerAutoloaderInit01caf726188ce4a8c830c9ea3872c0fc', 'loadClassLoader'), true, true);
|
| 26 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
| 27 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit01caf726188ce4a8c830c9ea3872c0fc', 'loadClassLoader'));
|
| 28 |
|
| 29 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
| 30 |
if ($useStaticLoader) {
|
| 31 |
require_once __DIR__ . '/autoload_static.php';
|
| 32 |
|
| 33 |
+
call_user_func(\Composer\Autoload\ComposerStaticInit01caf726188ce4a8c830c9ea3872c0fc::getInitializer($loader));
|
| 34 |
} else {
|
| 35 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
| 36 |
foreach ($map as $namespace => $path) {
|
| 50 |
|
| 51 |
$loader->register(true);
|
| 52 |
|
| 53 |
+
if ($useStaticLoader) {
|
| 54 |
+
$includeFiles = Composer\Autoload\ComposerStaticInit01caf726188ce4a8c830c9ea3872c0fc::$files;
|
| 55 |
+
} else {
|
| 56 |
+
$includeFiles = require __DIR__ . '/autoload_files.php';
|
| 57 |
+
}
|
| 58 |
+
foreach ($includeFiles as $fileIdentifier => $file) {
|
| 59 |
+
composerRequire01caf726188ce4a8c830c9ea3872c0fc($fileIdentifier, $file);
|
| 60 |
+
}
|
| 61 |
+
|
| 62 |
return $loader;
|
| 63 |
}
|
| 64 |
}
|
| 65 |
+
|
| 66 |
+
function composerRequire01caf726188ce4a8c830c9ea3872c0fc($fileIdentifier, $file)
|
| 67 |
+
{
|
| 68 |
+
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
| 69 |
+
require $file;
|
| 70 |
+
|
| 71 |
+
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
|
| 72 |
+
}
|
| 73 |
+
}
|
vendor/composer/autoload_static.php
CHANGED
|
@@ -4,8 +4,12 @@
|
|
| 4 |
|
| 5 |
namespace Composer\Autoload;
|
| 6 |
|
| 7 |
-
class
|
| 8 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
public static $prefixLengthsPsr4 = array (
|
| 10 |
'P' =>
|
| 11 |
array (
|
|
@@ -28,7 +32,9 @@ class ComposerStaticInit21689d596dda2cee10278dd72c8d9cfa
|
|
| 28 |
'Dhii\\Factory\\' => 13,
|
| 29 |
'Dhii\\Exception\\' => 15,
|
| 30 |
'Dhii\\Data\\Container\\' => 20,
|
|
|
|
| 31 |
'Dhii\\Container\\' => 15,
|
|
|
|
| 32 |
),
|
| 33 |
'C' =>
|
| 34 |
array (
|
|
@@ -77,10 +83,18 @@ class ComposerStaticInit21689d596dda2cee10278dd72c8d9cfa
|
|
| 77 |
array (
|
| 78 |
0 => __DIR__ . '/..' . '/dhii/data-container-interface/src',
|
| 79 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
| 80 |
'Dhii\\Container\\' =>
|
| 81 |
array (
|
| 82 |
0 => __DIR__ . '/..' . '/dhii/containers/src',
|
| 83 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
| 84 |
'Composer\\Installers\\' =>
|
| 85 |
array (
|
| 86 |
0 => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers',
|
|
@@ -238,9 +252,9 @@ class ComposerStaticInit21689d596dda2cee10278dd72c8d9cfa
|
|
| 238 |
public static function getInitializer(ClassLoader $loader)
|
| 239 |
{
|
| 240 |
return \Closure::bind(function () use ($loader) {
|
| 241 |
-
$loader->prefixLengthsPsr4 =
|
| 242 |
-
$loader->prefixDirsPsr4 =
|
| 243 |
-
$loader->classMap =
|
| 244 |
|
| 245 |
}, null, ClassLoader::class);
|
| 246 |
}
|
| 4 |
|
| 5 |
namespace Composer\Autoload;
|
| 6 |
|
| 7 |
+
class ComposerStaticInit01caf726188ce4a8c830c9ea3872c0fc
|
| 8 |
{
|
| 9 |
+
public static $files = array (
|
| 10 |
+
'7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
|
| 11 |
+
);
|
| 12 |
+
|
| 13 |
public static $prefixLengthsPsr4 = array (
|
| 14 |
'P' =>
|
| 15 |
array (
|
| 32 |
'Dhii\\Factory\\' => 13,
|
| 33 |
'Dhii\\Exception\\' => 15,
|
| 34 |
'Dhii\\Data\\Container\\' => 20,
|
| 35 |
+
'Dhii\\Data\\' => 10,
|
| 36 |
'Dhii\\Container\\' => 15,
|
| 37 |
+
'Dhii\\Collection\\' => 16,
|
| 38 |
),
|
| 39 |
'C' =>
|
| 40 |
array (
|
| 83 |
array (
|
| 84 |
0 => __DIR__ . '/..' . '/dhii/data-container-interface/src',
|
| 85 |
),
|
| 86 |
+
'Dhii\\Data\\' =>
|
| 87 |
+
array (
|
| 88 |
+
0 => __DIR__ . '/..' . '/dhii/data-key-value-aware-interface/src',
|
| 89 |
+
),
|
| 90 |
'Dhii\\Container\\' =>
|
| 91 |
array (
|
| 92 |
0 => __DIR__ . '/..' . '/dhii/containers/src',
|
| 93 |
),
|
| 94 |
+
'Dhii\\Collection\\' =>
|
| 95 |
+
array (
|
| 96 |
+
0 => __DIR__ . '/..' . '/dhii/collections-interface/src',
|
| 97 |
+
),
|
| 98 |
'Composer\\Installers\\' =>
|
| 99 |
array (
|
| 100 |
0 => __DIR__ . '/..' . '/composer/installers/src/Composer/Installers',
|
| 252 |
public static function getInitializer(ClassLoader $loader)
|
| 253 |
{
|
| 254 |
return \Closure::bind(function () use ($loader) {
|
| 255 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInit01caf726188ce4a8c830c9ea3872c0fc::$prefixLengthsPsr4;
|
| 256 |
+
$loader->prefixDirsPsr4 = ComposerStaticInit01caf726188ce4a8c830c9ea3872c0fc::$prefixDirsPsr4;
|
| 257 |
+
$loader->classMap = ComposerStaticInit01caf726188ce4a8c830c9ea3872c0fc::$classMap;
|
| 258 |
|
| 259 |
}, null, ClassLoader::class);
|
| 260 |
}
|
vendor/composer/installed.json
CHANGED
|
@@ -171,40 +171,93 @@
|
|
| 171 |
"description": "Promoting container interoperability through standard service providers",
|
| 172 |
"homepage": "https://github.com/container-interop/service-provider"
|
| 173 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 174 |
{
|
| 175 |
"name": "dhii/containers",
|
| 176 |
-
"version": "
|
| 177 |
-
"version_normalized": "
|
| 178 |
"source": {
|
| 179 |
"type": "git",
|
| 180 |
"url": "https://github.com/Dhii/containers.git",
|
| 181 |
-
"reference": "
|
| 182 |
},
|
| 183 |
"dist": {
|
| 184 |
"type": "zip",
|
| 185 |
-
"url": "https://api.github.com/repos/Dhii/containers/zipball/
|
| 186 |
-
"reference": "
|
| 187 |
"shasum": ""
|
| 188 |
},
|
| 189 |
"require": {
|
| 190 |
"container-interop/service-provider": "^0.4",
|
| 191 |
-
"dhii/
|
| 192 |
-
"php": "^7.
|
| 193 |
},
|
| 194 |
"require-dev": {
|
| 195 |
"gmazzap/andrew": "^1.1",
|
| 196 |
-
"phpunit/phpunit": "^
|
| 197 |
"psr/container": "^1.0",
|
| 198 |
"slevomat/coding-standard": "~4.0"
|
| 199 |
},
|
| 200 |
-
"time": "2020-
|
| 201 |
"type": "library",
|
| 202 |
"extra": {
|
| 203 |
"branch-alias": {
|
| 204 |
"dev-develop": "0.1.x-dev"
|
| 205 |
}
|
| 206 |
},
|
| 207 |
-
"installation-source": "
|
| 208 |
"autoload": {
|
| 209 |
"psr-4": {
|
| 210 |
"Dhii\\Container\\": "src/"
|
|
@@ -283,6 +336,50 @@
|
|
| 283 |
"description": "Interfaces for working with data containers",
|
| 284 |
"abandoned": "dhii/collections-interface"
|
| 285 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 286 |
{
|
| 287 |
"name": "dhii/exception-interface",
|
| 288 |
"version": "v0.2",
|
|
@@ -387,35 +484,41 @@
|
|
| 387 |
},
|
| 388 |
{
|
| 389 |
"name": "dhii/module-interface",
|
| 390 |
-
"version": "
|
| 391 |
-
"version_normalized": "
|
| 392 |
"source": {
|
| 393 |
"type": "git",
|
| 394 |
"url": "https://github.com/Dhii/module-interface.git",
|
| 395 |
-
"reference": "
|
| 396 |
},
|
| 397 |
"dist": {
|
| 398 |
"type": "zip",
|
| 399 |
-
"url": "https://api.github.com/repos/Dhii/module-interface/zipball/
|
| 400 |
-
"reference": "
|
| 401 |
"shasum": ""
|
| 402 |
},
|
| 403 |
"require": {
|
| 404 |
-
"
|
| 405 |
-
"
|
| 406 |
-
"
|
|
|
|
| 407 |
},
|
| 408 |
"require-dev": {
|
| 409 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 410 |
},
|
| 411 |
-
"time": "
|
| 412 |
"type": "library",
|
| 413 |
"extra": {
|
| 414 |
"branch-alias": {
|
| 415 |
-
"dev-develop": "0.
|
| 416 |
}
|
| 417 |
},
|
| 418 |
-
"installation-source": "
|
| 419 |
"autoload": {
|
| 420 |
"psr-4": {
|
| 421 |
"Dhii\\Modular\\Module\\": "src"
|
|
@@ -679,91 +782,34 @@
|
|
| 679 |
]
|
| 680 |
},
|
| 681 |
{
|
| 682 |
-
"name": "
|
| 683 |
-
"version": "
|
| 684 |
-
"version_normalized": "
|
| 685 |
"source": {
|
| 686 |
"type": "git",
|
| 687 |
-
"url": "https://github.com/
|
| 688 |
-
"reference": "
|
| 689 |
},
|
| 690 |
"dist": {
|
| 691 |
"type": "zip",
|
| 692 |
-
"url": "https://api.github.com/repos/
|
| 693 |
-
"reference": "
|
| 694 |
"shasum": ""
|
| 695 |
},
|
| 696 |
"require": {
|
| 697 |
-
"php": ">=5.
|
| 698 |
-
},
|
| 699 |
-
"time": "2017-10-23T01:57:42+00:00",
|
| 700 |
-
"type": "library",
|
| 701 |
-
"extra": {
|
| 702 |
-
"branch-alias": {
|
| 703 |
-
"dev-master": "1.0.x-dev"
|
| 704 |
-
}
|
| 705 |
-
},
|
| 706 |
-
"installation-source": "dist",
|
| 707 |
-
"autoload": {
|
| 708 |
-
"psr-4": {
|
| 709 |
-
"Psr\\SimpleCache\\": "src/"
|
| 710 |
-
}
|
| 711 |
-
},
|
| 712 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 713 |
-
"license": [
|
| 714 |
-
"MIT"
|
| 715 |
-
],
|
| 716 |
-
"authors": [
|
| 717 |
-
{
|
| 718 |
-
"name": "PHP-FIG",
|
| 719 |
-
"homepage": "http://www.php-fig.org/"
|
| 720 |
-
}
|
| 721 |
-
],
|
| 722 |
-
"description": "Common interfaces for simple caching",
|
| 723 |
-
"keywords": [
|
| 724 |
-
"cache",
|
| 725 |
-
"caching",
|
| 726 |
-
"psr",
|
| 727 |
-
"psr-16",
|
| 728 |
-
"simple-cache"
|
| 729 |
-
]
|
| 730 |
-
},
|
| 731 |
-
{
|
| 732 |
-
"name": "wp-oop/transient-cache",
|
| 733 |
-
"version": "v0.1.0-alpha3",
|
| 734 |
-
"version_normalized": "0.1.0.0-alpha3",
|
| 735 |
-
"source": {
|
| 736 |
-
"type": "git",
|
| 737 |
-
"url": "https://github.com/wp-oop/transient-cache.git",
|
| 738 |
-
"reference": "9eb92e378ad82b29d9d597bc4f41734a57502291"
|
| 739 |
-
},
|
| 740 |
-
"dist": {
|
| 741 |
-
"type": "zip",
|
| 742 |
-
"url": "https://api.github.com/repos/wp-oop/transient-cache/zipball/9eb92e378ad82b29d9d597bc4f41734a57502291",
|
| 743 |
-
"reference": "9eb92e378ad82b29d9d597bc4f41734a57502291",
|
| 744 |
-
"shasum": ""
|
| 745 |
-
},
|
| 746 |
-
"require": {
|
| 747 |
-
"php": "^7.1",
|
| 748 |
-
"psr/simple-cache": "^1.0"
|
| 749 |
},
|
| 750 |
"require-dev": {
|
| 751 |
-
"
|
| 752 |
-
"
|
| 753 |
-
"phpunit/phpunit": "^7.1"
|
| 754 |
},
|
| 755 |
-
"time": "
|
| 756 |
"type": "library",
|
| 757 |
-
"extra": {
|
| 758 |
-
"branch-alias": {
|
| 759 |
-
"dev-develop": "0.1.x-dev"
|
| 760 |
-
}
|
| 761 |
-
},
|
| 762 |
"installation-source": "dist",
|
| 763 |
"autoload": {
|
| 764 |
-
"
|
| 765 |
-
"
|
| 766 |
-
|
| 767 |
},
|
| 768 |
"notification-url": "https://packagist.org/downloads/",
|
| 769 |
"license": [
|
|
@@ -771,11 +817,10 @@
|
|
| 771 |
],
|
| 772 |
"authors": [
|
| 773 |
{
|
| 774 |
-
"name": "
|
| 775 |
-
"email": "
|
| 776 |
-
"role": "Developer"
|
| 777 |
}
|
| 778 |
],
|
| 779 |
-
"description": "A
|
| 780 |
}
|
| 781 |
]
|
| 171 |
"description": "Promoting container interoperability through standard service providers",
|
| 172 |
"homepage": "https://github.com/container-interop/service-provider"
|
| 173 |
},
|
| 174 |
+
{
|
| 175 |
+
"name": "dhii/collections-interface",
|
| 176 |
+
"version": "v0.3.0-alpha2",
|
| 177 |
+
"version_normalized": "0.3.0.0-alpha2",
|
| 178 |
+
"source": {
|
| 179 |
+
"type": "git",
|
| 180 |
+
"url": "https://github.com/Dhii/collections-interface.git",
|
| 181 |
+
"reference": "0fa5a14c407995cb0b9634ee42f127a91f24aafc"
|
| 182 |
+
},
|
| 183 |
+
"dist": {
|
| 184 |
+
"type": "zip",
|
| 185 |
+
"url": "https://api.github.com/repos/Dhii/collections-interface/zipball/0fa5a14c407995cb0b9634ee42f127a91f24aafc",
|
| 186 |
+
"reference": "0fa5a14c407995cb0b9634ee42f127a91f24aafc",
|
| 187 |
+
"shasum": ""
|
| 188 |
+
},
|
| 189 |
+
"require": {
|
| 190 |
+
"php": "^7.1",
|
| 191 |
+
"psr/container": "^1.0"
|
| 192 |
+
},
|
| 193 |
+
"require-dev": {
|
| 194 |
+
"phpunit/phpunit": "^7.0 | ^8.0",
|
| 195 |
+
"slevomat/coding-standard": "^6.0",
|
| 196 |
+
"vimeo/psalm": "^3.0"
|
| 197 |
+
},
|
| 198 |
+
"time": "2020-10-13T08:27:37+00:00",
|
| 199 |
+
"type": "library",
|
| 200 |
+
"extra": {
|
| 201 |
+
"branch-alias": {
|
| 202 |
+
"dev-develop": "0.3.x-dev"
|
| 203 |
+
}
|
| 204 |
+
},
|
| 205 |
+
"installation-source": "dist",
|
| 206 |
+
"autoload": {
|
| 207 |
+
"psr-4": {
|
| 208 |
+
"Dhii\\Collection\\": "src"
|
| 209 |
+
}
|
| 210 |
+
},
|
| 211 |
+
"notification-url": "https://packagist.org/downloads/",
|
| 212 |
+
"license": [
|
| 213 |
+
"MIT"
|
| 214 |
+
],
|
| 215 |
+
"authors": [
|
| 216 |
+
{
|
| 217 |
+
"name": "Dhii Team",
|
| 218 |
+
"email": "development@dhii.co"
|
| 219 |
+
},
|
| 220 |
+
{
|
| 221 |
+
"name": "Anton Ukhanev",
|
| 222 |
+
"email": "xedin.unknown@gmail.com"
|
| 223 |
+
}
|
| 224 |
+
],
|
| 225 |
+
"description": "A highly ISP-compliant collection of interfaces that represent maps and lists."
|
| 226 |
+
},
|
| 227 |
{
|
| 228 |
"name": "dhii/containers",
|
| 229 |
+
"version": "v0.1.0-alpha1",
|
| 230 |
+
"version_normalized": "0.1.0.0-alpha1",
|
| 231 |
"source": {
|
| 232 |
"type": "git",
|
| 233 |
"url": "https://github.com/Dhii/containers.git",
|
| 234 |
+
"reference": "73eed5422e106006c81ca1fa8b7213c6be33efbc"
|
| 235 |
},
|
| 236 |
"dist": {
|
| 237 |
"type": "zip",
|
| 238 |
+
"url": "https://api.github.com/repos/Dhii/containers/zipball/73eed5422e106006c81ca1fa8b7213c6be33efbc",
|
| 239 |
+
"reference": "73eed5422e106006c81ca1fa8b7213c6be33efbc",
|
| 240 |
"shasum": ""
|
| 241 |
},
|
| 242 |
"require": {
|
| 243 |
"container-interop/service-provider": "^0.4",
|
| 244 |
+
"dhii/collections-interface": "^0.3.0-alpha1",
|
| 245 |
+
"php": "^7.1 | ^8.0"
|
| 246 |
},
|
| 247 |
"require-dev": {
|
| 248 |
"gmazzap/andrew": "^1.1",
|
| 249 |
+
"phpunit/phpunit": "^7.0",
|
| 250 |
"psr/container": "^1.0",
|
| 251 |
"slevomat/coding-standard": "~4.0"
|
| 252 |
},
|
| 253 |
+
"time": "2020-09-14T18:27:47+00:00",
|
| 254 |
"type": "library",
|
| 255 |
"extra": {
|
| 256 |
"branch-alias": {
|
| 257 |
"dev-develop": "0.1.x-dev"
|
| 258 |
}
|
| 259 |
},
|
| 260 |
+
"installation-source": "dist",
|
| 261 |
"autoload": {
|
| 262 |
"psr-4": {
|
| 263 |
"Dhii\\Container\\": "src/"
|
| 336 |
"description": "Interfaces for working with data containers",
|
| 337 |
"abandoned": "dhii/collections-interface"
|
| 338 |
},
|
| 339 |
+
{
|
| 340 |
+
"name": "dhii/data-key-value-aware-interface",
|
| 341 |
+
"version": "v0.1",
|
| 342 |
+
"version_normalized": "0.1.0.0",
|
| 343 |
+
"source": {
|
| 344 |
+
"type": "git",
|
| 345 |
+
"url": "https://github.com/Dhii/data-key-value-aware-interface.git",
|
| 346 |
+
"reference": "220232bc9040fab78a6c039f5a4a5f9542317bdc"
|
| 347 |
+
},
|
| 348 |
+
"dist": {
|
| 349 |
+
"type": "zip",
|
| 350 |
+
"url": "https://api.github.com/repos/Dhii/data-key-value-aware-interface/zipball/220232bc9040fab78a6c039f5a4a5f9542317bdc",
|
| 351 |
+
"reference": "220232bc9040fab78a6c039f5a4a5f9542317bdc",
|
| 352 |
+
"shasum": ""
|
| 353 |
+
},
|
| 354 |
+
"require": {
|
| 355 |
+
"php": "^5.3 | ^7.0"
|
| 356 |
+
},
|
| 357 |
+
"require-dev": {
|
| 358 |
+
"codeclimate/php-test-reporter": "<=0.3.2",
|
| 359 |
+
"dhii/php-cs-fixer-config": "dev-php-5.3",
|
| 360 |
+
"phpunit/phpunit": "4.*",
|
| 361 |
+
"ptrofimov/xpmock": "^1.1"
|
| 362 |
+
},
|
| 363 |
+
"time": "2017-01-21T17:35:30+00:00",
|
| 364 |
+
"type": "library",
|
| 365 |
+
"installation-source": "dist",
|
| 366 |
+
"autoload": {
|
| 367 |
+
"psr-4": {
|
| 368 |
+
"Dhii\\Data\\": "src/"
|
| 369 |
+
}
|
| 370 |
+
},
|
| 371 |
+
"notification-url": "https://packagist.org/downloads/",
|
| 372 |
+
"license": [
|
| 373 |
+
"MIT"
|
| 374 |
+
],
|
| 375 |
+
"authors": [
|
| 376 |
+
{
|
| 377 |
+
"name": "Dhii Team",
|
| 378 |
+
"email": "development@dhii.co"
|
| 379 |
+
}
|
| 380 |
+
],
|
| 381 |
+
"description": "Interfaces that aim to increase interoperability of value objects"
|
| 382 |
+
},
|
| 383 |
{
|
| 384 |
"name": "dhii/exception-interface",
|
| 385 |
"version": "v0.2",
|
| 484 |
},
|
| 485 |
{
|
| 486 |
"name": "dhii/module-interface",
|
| 487 |
+
"version": "v0.1",
|
| 488 |
+
"version_normalized": "0.1.0.0",
|
| 489 |
"source": {
|
| 490 |
"type": "git",
|
| 491 |
"url": "https://github.com/Dhii/module-interface.git",
|
| 492 |
+
"reference": "a4271f2040e54f81cb7c4d5b3f18cb4a7532c277"
|
| 493 |
},
|
| 494 |
"dist": {
|
| 495 |
"type": "zip",
|
| 496 |
+
"url": "https://api.github.com/repos/Dhii/module-interface/zipball/a4271f2040e54f81cb7c4d5b3f18cb4a7532c277",
|
| 497 |
+
"reference": "a4271f2040e54f81cb7c4d5b3f18cb4a7532c277",
|
| 498 |
"shasum": ""
|
| 499 |
},
|
| 500 |
"require": {
|
| 501 |
+
"dhii/data-key-value-aware-interface": "^0.1",
|
| 502 |
+
"dhii/exception-interface": "^0.1 | ^0.2",
|
| 503 |
+
"dhii/factory-interface": "^0.1-alpha1",
|
| 504 |
+
"php": "^5.3 | ^7.0"
|
| 505 |
},
|
| 506 |
"require-dev": {
|
| 507 |
+
"codeclimate/php-test-reporter": "<=0.3.2",
|
| 508 |
+
"dhii/php-cs-fixer-config": "dev-php-5.3",
|
| 509 |
+
"dhii/stringable-interface": "^0.1",
|
| 510 |
+
"phpunit/phpunit": "^4.8",
|
| 511 |
+
"psr/container": "^1.0",
|
| 512 |
+
"ptrofimov/xpmock": "^1.1"
|
| 513 |
},
|
| 514 |
+
"time": "2019-11-05T18:25:12+00:00",
|
| 515 |
"type": "library",
|
| 516 |
"extra": {
|
| 517 |
"branch-alias": {
|
| 518 |
+
"dev-develop": "0.1.x-dev"
|
| 519 |
}
|
| 520 |
},
|
| 521 |
+
"installation-source": "dist",
|
| 522 |
"autoload": {
|
| 523 |
"psr-4": {
|
| 524 |
"Dhii\\Modular\\Module\\": "src"
|
| 782 |
]
|
| 783 |
},
|
| 784 |
{
|
| 785 |
+
"name": "ralouphie/getallheaders",
|
| 786 |
+
"version": "3.0.3",
|
| 787 |
+
"version_normalized": "3.0.3.0",
|
| 788 |
"source": {
|
| 789 |
"type": "git",
|
| 790 |
+
"url": "https://github.com/ralouphie/getallheaders.git",
|
| 791 |
+
"reference": "120b605dfeb996808c31b6477290a714d356e822"
|
| 792 |
},
|
| 793 |
"dist": {
|
| 794 |
"type": "zip",
|
| 795 |
+
"url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
|
| 796 |
+
"reference": "120b605dfeb996808c31b6477290a714d356e822",
|
| 797 |
"shasum": ""
|
| 798 |
},
|
| 799 |
"require": {
|
| 800 |
+
"php": ">=5.6"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 801 |
},
|
| 802 |
"require-dev": {
|
| 803 |
+
"php-coveralls/php-coveralls": "^2.1",
|
| 804 |
+
"phpunit/phpunit": "^5 || ^6.5"
|
|
|
|
| 805 |
},
|
| 806 |
+
"time": "2019-03-08T08:55:37+00:00",
|
| 807 |
"type": "library",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 808 |
"installation-source": "dist",
|
| 809 |
"autoload": {
|
| 810 |
+
"files": [
|
| 811 |
+
"src/getallheaders.php"
|
| 812 |
+
]
|
| 813 |
},
|
| 814 |
"notification-url": "https://packagist.org/downloads/",
|
| 815 |
"license": [
|
| 817 |
],
|
| 818 |
"authors": [
|
| 819 |
{
|
| 820 |
+
"name": "Ralph Khattar",
|
| 821 |
+
"email": "ralph.khattar@gmail.com"
|
|
|
|
| 822 |
}
|
| 823 |
],
|
| 824 |
+
"description": "A polyfill for getallheaders."
|
| 825 |
}
|
| 826 |
]
|
vendor/dhii/collections-interface/.env.example
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
| 1 |
+
BASE_PATH=./
|
| 2 |
+
PROJECT_NAME=dhii_collections-interface
|
vendor/dhii/collections-interface/CHANGELOG.md
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Change log
|
| 2 |
+
All notable changes to this project will be documented in this file.
|
| 3 |
+
|
| 4 |
+
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
| 5 |
+
and this project adheres to [Semantic Versioning](http://semver.org/).
|
| 6 |
+
|
| 7 |
+
## [[*next-version*]] - YYYY-MM-DD
|
| 8 |
+
|
| 9 |
+
## [0.3.0-alpha2] - 2020-10-13
|
| 10 |
+
### Added
|
| 11 |
+
- `ClearableContainerInterface`.
|
| 12 |
+
|
| 13 |
+
## [0.3.0-alpha1] - 2020-09-09
|
| 14 |
+
### Removed
|
| 15 |
+
- Support for PHP 5.x.
|
| 16 |
+
- Obsolete dependencies, scripts and other info.
|
| 17 |
+
- `AddCapableInterface`, `SetCapableInterface`, and their descendants.
|
| 18 |
+
|
| 19 |
+
### Changed
|
| 20 |
+
`MapFactoryInterface` now extends a new interface, leading to signature change.
|
| 21 |
+
|
| 22 |
+
### Added
|
| 23 |
+
- Docker configuration.
|
| 24 |
+
- `ContainerFactoryInterface`.
|
| 25 |
+
- `SetFactoryInterface`.
|
| 26 |
+
- `HasCapableInteface` for ISP.
|
| 27 |
+
- `ContainerCapableInterface` as a bridge between `HasCapableInterface`
|
| 28 |
+
and PSR-11.
|
| 29 |
+
- `WritableMapInterface` and `WritableSetInterface`.
|
| 30 |
+
- `MutableContainerInterface`.
|
| 31 |
+
- `MutableContainerInterface#unset()` can now throw `NotFoundExceptionInterface`
|
| 32 |
+
when unsetting non-existing key.
|
| 33 |
+
|
| 34 |
+
## [0.2] - 2019-05-10
|
| 35 |
+
Stable release.
|
| 36 |
+
|
| 37 |
+
## [0.2-alpha5] - 2018-04-26
|
| 38 |
+
### Added
|
| 39 |
+
- `MapFactoryInterface`.
|
| 40 |
+
|
| 41 |
+
## [0.2-alpha4] - 2018-04-09
|
| 42 |
+
### Fixed
|
| 43 |
+
- Problem #15, where `AddCapableInterface#$add()` didn't accept the item.
|
| 44 |
+
|
| 45 |
+
## [0.2-alpha3] - 2018-04-06
|
| 46 |
+
### Changed
|
| 47 |
+
- `CountableMapInterface` no longer extends `CountableSetInterface`, but still extends `CountableListInterface`.
|
| 48 |
+
|
| 49 |
+
### Added
|
| 50 |
+
- `SetCapableMapInterface`.
|
| 51 |
+
|
| 52 |
+
## [0.2-alpha2] - 2018-04-06
|
| 53 |
+
### Changed
|
| 54 |
+
- `SetInterface` no longer extends `HasCapableInterface`, but extends new `HasItemCapableInterface`
|
| 55 |
+
- `MapInterface` no longer extends `SetInterface`, but is still traversable.
|
| 56 |
+
|
| 57 |
+
### Added
|
| 58 |
+
- `HasItemCapableInterface`.
|
| 59 |
+
- `AddCapableInterface`.
|
| 60 |
+
- `AddCapableSetInterface`.
|
| 61 |
+
- `SetCapableInterface`.
|
| 62 |
+
|
| 63 |
+
## [0.2-alpha1] - 2018-04-06
|
| 64 |
+
Initial version.
|
vendor/{wp-oop/transient-cache → dhii/collections-interface}/LICENSE
RENAMED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
Copyright (c)
|
| 2 |
|
| 3 |
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 4 |
of this software and associated documentation files (the "Software"), to deal
|
| 1 |
+
Copyright (c) 2018 Dhii
|
| 2 |
|
| 3 |
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 4 |
of this software and associated documentation files (the "Software"), to deal
|
vendor/dhii/collections-interface/README.md
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Dhii - Collections Interface
|
| 2 |
+
|
| 3 |
+
[](https://travis-ci.org/Dhii/collections-interface)
|
| 4 |
+
[](https://codeclimate.com/github/Dhii/collections-interface)
|
| 5 |
+
[](https://codeclimate.com/github/Dhii/collections-interface/coverage)
|
| 6 |
+
[](https://packagist.org/packages/dhii/collections-interface)
|
| 7 |
+
|
| 8 |
+
A highly [ISP][ISP]-compliant collection of interfaces that represent collections.
|
| 9 |
+
|
| 10 |
+
## Interfaces
|
| 11 |
+
- [`CountableListInterface`][CountableListInterface]: A list that can be iterated and counted.
|
| 12 |
+
- [`HasItemCapableInterface`][HasItemCapableInterface]: Something that can be checked for the existence of an item.
|
| 13 |
+
- [`SetInterface`][SetInterface]: A list that can be checked for a value.
|
| 14 |
+
- [`CountableSetInterface`][CountableSetInterface]: A set that can be counted.
|
| 15 |
+
- [`MapInterface`][MapInterface]: An iterable container.
|
| 16 |
+
- [`CountableMapInterface`][CountableMapInterface]: A countable map.
|
| 17 |
+
- [`ContainerFactoryInterface`][]: A factory of `ContainerInterface` objects.
|
| 18 |
+
- [`MapFactoryInterface`][]: A factory of `MapInterface` objects.
|
| 19 |
+
- [`HasCapableInterface`][]: Something that can check for a given key.
|
| 20 |
+
- [`ContainerInterface`][]: A container implementing `HasCapableInterface`.
|
| 21 |
+
- [`WritableContainerInterface`][]: A container that can have mappings added and removed.
|
| 22 |
+
- [`WritableMapInterface`][]: A map that can have mappings added and removed.
|
| 23 |
+
- [`WritableSetInterface`][]: A set that can have items added and removed.
|
| 24 |
+
- [`ClearableContainerInterface`][]: A container that can have its members cleared.
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
[Dhii]: https://github.com/Dhii/dhii
|
| 28 |
+
[ISP]: https://en.wikipedia.org/wiki/Interface_segregation_principle
|
| 29 |
+
|
| 30 |
+
[CountableListInterface]: src/CountableListInterface.php
|
| 31 |
+
[SetInterface]: src/SetInterface.php
|
| 32 |
+
[CountableSetInterface]: src/CountableSetInterface.php
|
| 33 |
+
[MapInterface]: src/MapInterface.php
|
| 34 |
+
[CountableMapInterface]: src/CountableMapInterface.php
|
| 35 |
+
[HasItemCapableInterface]: src/HasItemCapableInterface.php
|
| 36 |
+
[`MapFactoryInterface`]: src/MapFactoryInterface.php
|
| 37 |
+
[`ContainerFactoryInterface`]: src/ContainerFactoryInterface.php
|
| 38 |
+
[`HasCapableInterface`]: src/HasCapableInterface.php
|
| 39 |
+
[`ContainerInterface`]: src/ContainerInterface.php
|
| 40 |
+
[`WritableContainerInterface`]: src/WritableContainerInterface.php
|
| 41 |
+
[`WritableMapInterface`]: src/WritableMapInterface.php
|
| 42 |
+
[`WritableSetInterface`]: src/WritableSetInterface.php
|
| 43 |
+
[`ClearableContainerInterface`]: src/ClearableContainerInterface.php
|
vendor/dhii/collections-interface/composer.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "dhii/collections-interface",
|
| 3 |
+
"description": "A highly ISP-compliant collection of interfaces that represent maps and lists.",
|
| 4 |
+
"type": "library",
|
| 5 |
+
"license": "MIT",
|
| 6 |
+
"authors": [
|
| 7 |
+
{
|
| 8 |
+
"name": "Dhii Team",
|
| 9 |
+
"email": "development@dhii.co"
|
| 10 |
+
},
|
| 11 |
+
{
|
| 12 |
+
"name": "Anton Ukhanev",
|
| 13 |
+
"email": "xedin.unknown@gmail.com"
|
| 14 |
+
}
|
| 15 |
+
],
|
| 16 |
+
"minimum-stability": "dev",
|
| 17 |
+
"prefer-stable": true,
|
| 18 |
+
"require": {
|
| 19 |
+
"php": "^7.1",
|
| 20 |
+
"psr/container": "^1.0"
|
| 21 |
+
},
|
| 22 |
+
"require-dev": {
|
| 23 |
+
"phpunit/phpunit": "^7.0 | ^8.0",
|
| 24 |
+
"slevomat/coding-standard": "^6.0",
|
| 25 |
+
"vimeo/psalm": "^3.0"
|
| 26 |
+
},
|
| 27 |
+
"autoload": {
|
| 28 |
+
"psr-4": {
|
| 29 |
+
"Dhii\\Collection\\": "src"
|
| 30 |
+
}
|
| 31 |
+
},
|
| 32 |
+
"autoload-dev": {
|
| 33 |
+
"psr-4": {
|
| 34 |
+
"Dhii\\Collection\\UnitTest\\": "test/unit"
|
| 35 |
+
}
|
| 36 |
+
},
|
| 37 |
+
"extra": {
|
| 38 |
+
"branch-alias": {
|
| 39 |
+
"dev-develop": "0.3.x-dev"
|
| 40 |
+
}
|
| 41 |
+
}
|
| 42 |
+
}
|
vendor/dhii/{module-interface → collections-interface}/docker-compose.yml
RENAMED
|
@@ -1,8 +1,13 @@
|
|
| 1 |
-
version: '3.
|
| 2 |
services:
|
| 3 |
php:
|
|
|
|
| 4 |
build:
|
| 5 |
context: docker
|
| 6 |
dockerfile: Dockerfile_php
|
| 7 |
volumes:
|
| 8 |
- ${BASE_PATH}:/srv/
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version: '3.2'
|
| 2 |
services:
|
| 3 |
php:
|
| 4 |
+
container_name: "${PROJECT_NAME}_php"
|
| 5 |
build:
|
| 6 |
context: docker
|
| 7 |
dockerfile: Dockerfile_php
|
| 8 |
volumes:
|
| 9 |
- ${BASE_PATH}:/srv/
|
| 10 |
+
- psalm_cache:/var/tmp/psalm
|
| 11 |
+
|
| 12 |
+
volumes:
|
| 13 |
+
psalm_cache:
|
vendor/dhii/{module-interface → collections-interface}/docker/Dockerfile_php
RENAMED
|
@@ -3,4 +3,4 @@ FROM dockette/php:7.1
|
|
| 3 |
RUN apt-get update \
|
| 4 |
&& apt-get -y install software-properties-common dirmngr apt-transport-https lsb-release ca-certificates \
|
| 5 |
&& add-apt-repository -y ppa:ondrej/php \
|
| 6 |
-
&& apt-get install -y php7.1-xdebug
|
| 3 |
RUN apt-get update \
|
| 4 |
&& apt-get -y install software-properties-common dirmngr apt-transport-https lsb-release ca-certificates \
|
| 5 |
&& add-apt-repository -y ppa:ondrej/php \
|
| 6 |
+
&& apt-get install -y php7.1-xdebug
|
vendor/dhii/collections-interface/phpcs.xml.dist
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<ruleset name="dhii/collection-interface"
|
| 3 |
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
| 4 |
+
xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/squizlabs/PHP_CodeSniffer/master/phpcs.xsd">
|
| 5 |
+
|
| 6 |
+
<file>./src</file>
|
| 7 |
+
|
| 8 |
+
|
| 9 |
+
<config name="installed_paths" value="../../slevomat/coding-standard"/>
|
| 10 |
+
|
| 11 |
+
<rule ref="PSR12"/>
|
| 12 |
+
<rule ref="SlevomatCodingStandard.TypeHints.ParameterTypeHint"/>
|
| 13 |
+
<rule ref="SlevomatCodingStandard.TypeHints.PropertyTypeHint"/>
|
| 14 |
+
<rule ref="SlevomatCodingStandard.TypeHints.ReturnTypeHint"/>
|
| 15 |
+
<rule ref="SlevomatCodingStandard.TypeHints.UselessConstantTypeHint"/>
|
| 16 |
+
<rule ref="SlevomatCodingStandard.TypeHints.DeclareStrictTypes">
|
| 17 |
+
<properties>
|
| 18 |
+
<property name="newlinesCountBetweenOpenTagAndDeclare" value="2"/>
|
| 19 |
+
<property name="newlinesCountAfterDeclare" value="2"/>
|
| 20 |
+
<property name="spacesCountAroundEqualsSign" value="0"/>
|
| 21 |
+
</properties>
|
| 22 |
+
</rule>
|
| 23 |
+
<rule ref="SlevomatCodingStandard.Classes.ClassStructure">
|
| 24 |
+
<properties>
|
| 25 |
+
<property name="groups" type="array">
|
| 26 |
+
<element value="uses"/>
|
| 27 |
+
|
| 28 |
+
<!-- Public constants are first but you don't care about the order of protected or private constants -->
|
| 29 |
+
<element value="public constants"/>
|
| 30 |
+
<element value="constants"/>
|
| 31 |
+
|
| 32 |
+
<!-- You don't care about the order among the properties. The same can be done with "properties" shortcut -->
|
| 33 |
+
<element value="public properties, protected properties, private properties, properties"/>
|
| 34 |
+
|
| 35 |
+
<!-- Constructor is first, then all public methods, then protected/private methods and magic methods are last -->
|
| 36 |
+
<element value="constructor"/>
|
| 37 |
+
<element value="all public methods"/>
|
| 38 |
+
<element value="methods"/>
|
| 39 |
+
<element value="magic methods"/>
|
| 40 |
+
</property>
|
| 41 |
+
</properties>
|
| 42 |
+
</rule>
|
| 43 |
+
<rule ref="SlevomatCodingStandard.ControlStructures.DisallowContinueWithoutIntegerOperandInSwitch"/>
|
| 44 |
+
<rule ref="SlevomatCodingStandard.ControlStructures.RequireNullCoalesceOperator"/>
|
| 45 |
+
<rule ref="SlevomatCodingStandard.PHP.DisallowDirectMagicInvokeCall"/>
|
| 46 |
+
<rule ref="SlevomatCodingStandard.Operators.DisallowEqualOperators"/>
|
| 47 |
+
<rule ref="SlevomatCodingStandard.Operators.RequireCombinedAssignmentOperator"/>
|
| 48 |
+
</ruleset>
|
vendor/dhii/collections-interface/phpunit.xml.dist
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
+
<phpunit
|
| 3 |
+
colors="true"
|
| 4 |
+
bootstrap="test/bootstrap.php"
|
| 5 |
+
>
|
| 6 |
+
<php>
|
| 7 |
+
<ini name="display_errors" value="1" />
|
| 8 |
+
<ini name="display_startup_errors" value="1" />
|
| 9 |
+
</php>
|
| 10 |
+
<testsuites>
|
| 11 |
+
<testsuite name="unit">
|
| 12 |
+
<directory>./test/unit/</directory>
|
| 13 |
+
</testsuite>
|
| 14 |
+
<testsuite name="functional">
|
| 15 |
+
<directory>./test/functional/</directory>
|
| 16 |
+
</testsuite>
|
| 17 |
+
</testsuites>
|
| 18 |
+
<filter>
|
| 19 |
+
<whitelist processUncoveredFilesFromWhitelist="true">
|
| 20 |
+
<directory suffix=".php">src</directory>
|
| 21 |
+
</whitelist>
|
| 22 |
+
</filter>
|
| 23 |
+
</phpunit>
|
vendor/dhii/collections-interface/psalm.xml.dist
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<psalm
|
| 3 |
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
| 4 |
+
xmlns="https://getpsalm.org/schema/config"
|
| 5 |
+
useDocblockTypes="true"
|
| 6 |
+
errorLevel="1"
|
| 7 |
+
strictBinaryOperands="false"
|
| 8 |
+
rememberPropertyAssignmentsAfterCall="true"
|
| 9 |
+
checkForThrowsDocblock="false"
|
| 10 |
+
throwExceptionOnError="0"
|
| 11 |
+
findUnusedCode="true"
|
| 12 |
+
ensureArrayStringOffsetsExist="true"
|
| 13 |
+
ensureArrayIntOffsetsExist="false"
|
| 14 |
+
xsi:noNamespaceSchemaLocation="https://getpsalm.org/schema/config"
|
| 15 |
+
cacheDirectory="/var/tmp/psalm"
|
| 16 |
+
>
|
| 17 |
+
<projectFiles>
|
| 18 |
+
<directory name="src"/>
|
| 19 |
+
</projectFiles>
|
| 20 |
+
|
| 21 |
+
<issueHandlers>
|
| 22 |
+
<InvalidThrow errorLevel="suppress"></InvalidThrow>
|
| 23 |
+
<UnusedClass errorLevel="suppress"></UnusedClass>
|
| 24 |
+
</issueHandlers>
|
| 25 |
+
</psalm>
|
vendor/dhii/collections-interface/src/ClearableContainerInterface.php
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
declare(strict_types=1);
|
| 4 |
+
|
| 5 |
+
namespace Dhii\Collection;
|
| 6 |
+
|
| 7 |
+
use Psr\Container\ContainerExceptionInterface;
|
| 8 |
+
use Psr\Container\ContainerInterface as PsrContainerInterface;
|
| 9 |
+
|
| 10 |
+
interface ClearableContainerInterface extends PsrContainerInterface
|
| 11 |
+
{
|
| 12 |
+
/**
|
| 13 |
+
* Removes all members from this container.
|
| 14 |
+
*
|
| 15 |
+
* @throws ContainerExceptionInterface If problem removing.
|
| 16 |
+
*/
|
| 17 |
+
public function clear(): void;
|
| 18 |
+
}
|
vendor/dhii/collections-interface/src/ContainerFactoryInterface.php
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
declare(strict_types=1);
|
| 4 |
+
|
| 5 |
+
namespace Dhii\Collection;
|
| 6 |
+
|
| 7 |
+
use Exception;
|
| 8 |
+
use Psr\Container\ContainerInterface;
|
| 9 |
+
|
| 10 |
+
/**
|
| 11 |
+
* Creates containers based on data maps.
|
| 12 |
+
*/
|
| 13 |
+
interface ContainerFactoryInterface
|
| 14 |
+
{
|
| 15 |
+
/**
|
| 16 |
+
* Creates a container based on data.
|
| 17 |
+
*
|
| 18 |
+
* @param array<string, mixed> $data The data for the container.
|
| 19 |
+
*
|
| 20 |
+
* @return ContainerInterface The new container.
|
| 21 |
+
*
|
| 22 |
+
* @throws Exception If problem creating.
|
| 23 |
+
*
|
| 24 |
+
* @psalm-suppress PossiblyUnusedMethod
|
| 25 |
+
*/
|
| 26 |
+
public function createContainerFromArray(array $data): ContainerInterface;
|
| 27 |
+
}
|
vendor/dhii/collections-interface/src/ContainerInterface.php
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
declare(strict_types=1);
|
| 4 |
+
|
| 5 |
+
namespace Dhii\Collection;
|
| 6 |
+
|
| 7 |
+
use Psr\Container\ContainerInterface as BaseContainerInterface;
|
| 8 |
+
|
| 9 |
+
/**
|
| 10 |
+
* Something that can retrieve and determine the existence of a value by key.
|
| 11 |
+
*/
|
| 12 |
+
interface ContainerInterface extends
|
| 13 |
+
BaseContainerInterface,
|
| 14 |
+
HasCapableInterface
|
| 15 |
+
{
|
| 16 |
+
}
|
vendor/dhii/collections-interface/src/CountableListInterface.php
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
declare(strict_types=1);
|
| 4 |
+
|
| 5 |
+
namespace Dhii\Collection;
|
| 6 |
+
|
| 7 |
+
use Traversable;
|
| 8 |
+
use Countable;
|
| 9 |
+
|
| 10 |
+
/**
|
| 11 |
+
* A list that can be counted.
|
| 12 |
+
*
|
| 13 |
+
* @since 0.2
|
| 14 |
+
*/
|
| 15 |
+
interface CountableListInterface extends
|
| 16 |
+
/* @since 0.2 */
|
| 17 |
+
Traversable,
|
| 18 |
+
/* @since 0.2 */
|
| 19 |
+
Countable
|
| 20 |
+
{
|
| 21 |
+
}
|
vendor/dhii/collections-interface/src/CountableMapInterface.php
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
declare(strict_types=1);
|
| 4 |
+
|
| 5 |
+
namespace Dhii\Collection;
|
| 6 |
+
|
| 7 |
+
/**
|
| 8 |
+
* A countable map.
|
| 9 |
+
*
|
| 10 |
+
* @since 0.2
|
| 11 |
+
*
|
| 12 |
+
* @psalm-suppress UnusedClass
|
| 13 |
+
*/
|
| 14 |
+
interface CountableMapInterface extends
|
| 15 |
+
/* @since 0.2 */
|
| 16 |
+
CountableListInterface,
|
| 17 |
+
/* @since 0.2 */
|
| 18 |
+
MapInterface
|
| 19 |
+
{
|
| 20 |
+
|
| 21 |
+
}
|
vendor/dhii/collections-interface/src/CountableSetInterface.php
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
declare(strict_types=1);
|
| 4 |
+
|
| 5 |
+
namespace Dhii\Collection;
|
| 6 |
+
|
| 7 |
+
/**
|
| 8 |
+
* A countable list that can be checked for a key.
|
| 9 |
+
*
|
| 10 |
+
* @since 0.2
|
| 11 |
+
*
|
| 12 |
+
* @psalm-suppress UnusedClass
|
| 13 |
+
*/
|
| 14 |
+
interface CountableSetInterface extends
|
| 15 |
+
/* @since 0.2 */
|
| 16 |
+
CountableListInterface,
|
| 17 |
+
/* @since 0.2 */
|
| 18 |
+
SetInterface
|
| 19 |
+
{
|
| 20 |
+
|
| 21 |
+
}
|
vendor/dhii/collections-interface/src/HasCapableInterface.php
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
declare(strict_types=1);
|
| 4 |
+
|
| 5 |
+
namespace Dhii\Collection;
|
| 6 |
+
|
| 7 |
+
use Psr\Container\ContainerExceptionInterface;
|
| 8 |
+
|
| 9 |
+
/**
|
| 10 |
+
* Something that can determine the existence of a key.
|
| 11 |
+
*/
|
| 12 |
+
interface HasCapableInterface
|
| 13 |
+
{
|
| 14 |
+
/**
|
| 15 |
+
* Determines whether this instance has the specified key.
|
| 16 |
+
*
|
| 17 |
+
* @param string $key The key to check for.
|
| 18 |
+
*
|
| 19 |
+
* @return bool True if the key exists; false otherwise.
|
| 20 |
+
*
|
| 21 |
+
* @throws ContainerExceptionInterface If problem determining.
|
| 22 |
+
*
|
| 23 |
+
* @psalm-suppress PossiblyUnusedMethod
|
| 24 |
+
* @psalm-suppress InvalidThrow
|
| 25 |
+
* @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
|
| 26 |
+
* @phpcsSuppress SlevomatCodingStandard.TypeHints.ReturnTypeHint.MissingNativeTypeHint
|
| 27 |
+
*/
|
| 28 |
+
public function has($key);
|
| 29 |
+
}
|
vendor/dhii/collections-interface/src/HasItemCapableInterface.php
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
declare(strict_types=1);
|
| 4 |
+
|
| 5 |
+
namespace Dhii\Collection;
|
| 6 |
+
|
| 7 |
+
use RuntimeException;
|
| 8 |
+
|
| 9 |
+
/**
|
| 10 |
+
* Something that can check for the existence of an item.
|
| 11 |
+
*
|
| 12 |
+
* @since 0.2
|
| 13 |
+
*/
|
| 14 |
+
interface HasItemCapableInterface
|
| 15 |
+
{
|
| 16 |
+
/**
|
| 17 |
+
* Checks whether this instance has the given item.
|
| 18 |
+
*
|
| 19 |
+
* @since 0.2
|
| 20 |
+
*
|
| 21 |
+
* @param mixed $item The item to check for.
|
| 22 |
+
*
|
| 23 |
+
* @return bool True if the item exists; false otherwise.
|
| 24 |
+
*
|
| 25 |
+
* @throws RuntimeException If the existence of the item could not be verified.
|
| 26 |
+
*
|
| 27 |
+
* @psalm-suppress PossiblyUnusedMethod
|
| 28 |
+
*/
|
| 29 |
+
public function hasItem($item): bool;
|
| 30 |
+
}
|
vendor/dhii/collections-interface/src/MapFactoryInterface.php
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
declare(strict_types=1);
|
| 4 |
+
|
| 5 |
+
namespace Dhii\Collection;
|
| 6 |
+
|
| 7 |
+
use Exception;
|
| 8 |
+
use Psr\Container\ContainerInterface as BaseContainerInterface;
|
| 9 |
+
|
| 10 |
+
/**
|
| 11 |
+
* A factory that can create maps.
|
| 12 |
+
*
|
| 13 |
+
* @since 0.2
|
| 14 |
+
*/
|
| 15 |
+
interface MapFactoryInterface extends ContainerFactoryInterface
|
| 16 |
+
{
|
| 17 |
+
/**
|
| 18 |
+
* Creates a map based on data in an array.
|
| 19 |
+
*
|
| 20 |
+
* @param array<string, mixed> $data The data to base the map on.
|
| 21 |
+
*
|
| 22 |
+
* @return MapInterface The new map.
|
| 23 |
+
*
|
| 24 |
+
* @throws Exception If problem creating.
|
| 25 |
+
*/
|
| 26 |
+
public function createContainerFromArray(array $data): BaseContainerInterface;
|
| 27 |
+
}
|
vendor/dhii/collections-interface/src/MapInterface.php
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
declare(strict_types=1);
|
| 4 |
+
|
| 5 |
+
namespace Dhii\Collection;
|
| 6 |
+
|
| 7 |
+
use Traversable;
|
| 8 |
+
|
| 9 |
+
/**
|
| 10 |
+
* A traversable container.
|
| 11 |
+
*
|
| 12 |
+
* @since 0.2
|
| 13 |
+
*/
|
| 14 |
+
interface MapInterface extends
|
| 15 |
+
/* @since 0.2 */
|
| 16 |
+
Traversable,
|
| 17 |
+
/* @since 0.2 */
|
| 18 |
+
ContainerInterface
|
| 19 |
+
{
|
| 20 |
+
|
| 21 |
+
}
|
vendor/dhii/collections-interface/src/MutableContainerInterface.php
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
declare(strict_types=1);
|
| 4 |
+
|
| 5 |
+
namespace Dhii\Collection;
|
| 6 |
+
|
| 7 |
+
use Psr\Container\ContainerExceptionInterface;
|
| 8 |
+
use Psr\Container\NotFoundExceptionInterface;
|
| 9 |
+
|
| 10 |
+
/**
|
| 11 |
+
* A container that can have mappings added and removed.
|
| 12 |
+
*
|
| 13 |
+
* @psalm-suppress UnusedClass
|
| 14 |
+
*/
|
| 15 |
+
interface MutableContainerInterface extends ContainerInterface
|
| 16 |
+
{
|
| 17 |
+
/**
|
| 18 |
+
* Maps the given value to the specified key.
|
| 19 |
+
*
|
| 20 |
+
* @since [*next-version*]
|
| 21 |
+
*
|
| 22 |
+
* @param string $key The key to map the value to.
|
| 23 |
+
* @param mixed $value The value to map to the key.
|
| 24 |
+
*
|
| 25 |
+
* @throws ContainerExceptionInterface If problem mapping.
|
| 26 |
+
* @psalm-suppress InvalidThrow
|
| 27 |
+
*/
|
| 28 |
+
public function set(string $key, $value): void;
|
| 29 |
+
|
| 30 |
+
/**
|
| 31 |
+
* Unmaps the value from the specified key.
|
| 32 |
+
*
|
| 33 |
+
* @since [*next-version*]
|
| 34 |
+
*
|
| 35 |
+
* @param string $key The key to unmap the value from.
|
| 36 |
+
*
|
| 37 |
+
* @throws NotFoundExceptionInterface If key not found.
|
| 38 |
+
* @throws ContainerExceptionInterface If problem unmapping.
|
| 39 |
+
* @psalm-suppress InvalidThrow
|
| 40 |
+
*/
|
| 41 |
+
public function unset(string $key): void;
|
| 42 |
+
}
|
vendor/dhii/collections-interface/src/SetFactoryInterface.php
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
declare(strict_types=1);
|
| 4 |
+
|
| 5 |
+
namespace Dhii\Collection;
|
| 6 |
+
|
| 7 |
+
use Exception;
|
| 8 |
+
|
| 9 |
+
/**
|
| 10 |
+
* A factory that can create sets.
|
| 11 |
+
*
|
| 12 |
+
* @since [*next-version*]
|
| 13 |
+
*/
|
| 14 |
+
interface SetFactoryInterface
|
| 15 |
+
{
|
| 16 |
+
/**
|
| 17 |
+
* Creates a set based on data in a list.
|
| 18 |
+
*
|
| 19 |
+
* @since [*next-version*]
|
| 20 |
+
*
|
| 21 |
+
* @param array<mixed> $list The list to base the set on.
|
| 22 |
+
*
|
| 23 |
+
* @return SetInterface The new set.
|
| 24 |
+
*
|
| 25 |
+
* @throws Exception If problem creating.
|
| 26 |
+
*
|
| 27 |
+
* @psalm-suppress PossiblyUnusedMethod
|
| 28 |
+
*/
|
| 29 |
+
public function createSetFromList(array $list): SetInterface;
|
| 30 |
+
}
|
vendor/dhii/collections-interface/src/SetInterface.php
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
declare(strict_types=1);
|
| 4 |
+
|
| 5 |
+
namespace Dhii\Collection;
|
| 6 |
+
|
| 7 |
+
use Traversable;
|
| 8 |
+
|
| 9 |
+
/**
|
| 10 |
+
* A list that can be checked for a key.
|
| 11 |
+
*
|
| 12 |
+
* @since 0.2
|
| 13 |
+
*/
|
| 14 |
+
interface SetInterface extends
|
| 15 |
+
/* @since 0.2 */
|
| 16 |
+
Traversable,
|
| 17 |
+
/* @since 0.2 */
|
| 18 |
+
HasItemCapableInterface
|
| 19 |
+
{
|
| 20 |
+
|
| 21 |
+
}
|
vendor/dhii/collections-interface/src/WritableContainerFactoryInterface.php
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
declare(strict_types=1);
|
| 4 |
+
|
| 5 |
+
namespace Dhii\Collection;
|
| 6 |
+
|
| 7 |
+
use Psr\Container\ContainerInterface;
|
| 8 |
+
|
| 9 |
+
/**
|
| 10 |
+
* A map that can create a writable container.
|
| 11 |
+
*/
|
| 12 |
+
interface WritableContainerFactoryInterface extends ContainerFactoryInterface
|
| 13 |
+
{
|
| 14 |
+
/**
|
| 15 |
+
* @inheritDoc
|
| 16 |
+
*
|
| 17 |
+
* @return WritableContainerInterface The new container.
|
| 18 |
+
*/
|
| 19 |
+
public function createContainerFromArray(array $data): ContainerInterface;
|
| 20 |
+
}
|
vendor/dhii/collections-interface/src/WritableContainerInterface.php
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
declare(strict_types=1);
|
| 4 |
+
|
| 5 |
+
namespace Dhii\Collection;
|
| 6 |
+
|
| 7 |
+
use Exception;
|
| 8 |
+
|
| 9 |
+
/**
|
| 10 |
+
* A container that can be written to.
|
| 11 |
+
*/
|
| 12 |
+
interface WritableContainerInterface extends ContainerInterface
|
| 13 |
+
{
|
| 14 |
+
/**
|
| 15 |
+
* Creates a new instance with the specified mappings.
|
| 16 |
+
*
|
| 17 |
+
* @since [*next-version*]
|
| 18 |
+
*
|
| 19 |
+
* @param array<string, mixed> $mappings A map of keys to values.
|
| 20 |
+
*
|
| 21 |
+
* @return static A new instance of this class with only the specified key-value mappings.
|
| 22 |
+
*
|
| 23 |
+
* @throws Exception If problem creating.
|
| 24 |
+
*
|
| 25 |
+
* @psalm-suppress PossiblyUnusedMethod
|
| 26 |
+
*/
|
| 27 |
+
public function withMappings(array $mappings): WritableContainerInterface;
|
| 28 |
+
|
| 29 |
+
/**
|
| 30 |
+
* Creates a new instance with the specified mappings added to existing ones.
|
| 31 |
+
*
|
| 32 |
+
* @since [*next-version*]
|
| 33 |
+
*
|
| 34 |
+
* @param array<string, mixed> $mappings A map of keys to values.
|
| 35 |
+
*
|
| 36 |
+
* @return static A new instance of this class with the specified key-value mappings added to existing ones.
|
| 37 |
+
*
|
| 38 |
+
* @throws Exception If problem creating.
|
| 39 |
+
*
|
| 40 |
+
* @psalm-suppress PossiblyUnusedMethod
|
| 41 |
+
*/
|
| 42 |
+
public function withAddedMappings(array $mappings): WritableContainerInterface;
|
| 43 |
+
|
| 44 |
+
/**
|
| 45 |
+
* Creates a new instance with the specified keys not present.
|
| 46 |
+
*
|
| 47 |
+
* @since [*next-version*]
|
| 48 |
+
*
|
| 49 |
+
* @param array<string> $keys The keys to exclude.
|
| 50 |
+
*
|
| 51 |
+
* @return static A new instance of this class which does not contain the specified keys.
|
| 52 |
+
*
|
| 53 |
+
* @throws Exception If problem instantiating.
|
| 54 |
+
*
|
| 55 |
+
* @psalm-suppress PossiblyUnusedMethod
|
| 56 |
+
*/
|
| 57 |
+
public function withoutKeys(array $keys): WritableContainerInterface;
|
| 58 |
+
}
|
vendor/dhii/collections-interface/src/WritableMapFactoryInterface.php
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
declare(strict_types=1);
|
| 4 |
+
|
| 5 |
+
namespace Dhii\Collection;
|
| 6 |
+
|
| 7 |
+
use Psr\Container\ContainerInterface as BaseContainerInterface;
|
| 8 |
+
|
| 9 |
+
/**
|
| 10 |
+
* Creates writable maps.
|
| 11 |
+
*
|
| 12 |
+
* @psalm-suppress UnusedClass
|
| 13 |
+
*/
|
| 14 |
+
interface WritableMapFactoryInterface extends WritableContainerFactoryInterface, MapFactoryInterface
|
| 15 |
+
{
|
| 16 |
+
/**
|
| 17 |
+
* @inheritDoc
|
| 18 |
+
*
|
| 19 |
+
* @return WritableMapInterface The new map.
|
| 20 |
+
*/
|
| 21 |
+
public function createContainerFromArray(array $data): BaseContainerInterface;
|
| 22 |
+
}
|
vendor/dhii/collections-interface/src/WritableMapInterface.php
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
declare(strict_types=1);
|
| 4 |
+
|
| 5 |
+
namespace Dhii\Collection;
|
| 6 |
+
|
| 7 |
+
/**
|
| 8 |
+
* A map that can have a value set for a key.
|
| 9 |
+
*
|
| 10 |
+
* @since [*next-version*]
|
| 11 |
+
*/
|
| 12 |
+
interface WritableMapInterface extends MapInterface, WritableContainerInterface
|
| 13 |
+
{
|
| 14 |
+
|
| 15 |
+
}
|
vendor/dhii/collections-interface/src/WritableSetFactoryInterface.php
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
declare(strict_types=1);
|
| 4 |
+
|
| 5 |
+
namespace Dhii\Collection;
|
| 6 |
+
|
| 7 |
+
/**
|
| 8 |
+
* Creates writable sets.
|
| 9 |
+
*
|
| 10 |
+
* @psalm-suppress UnusedClass
|
| 11 |
+
*/
|
| 12 |
+
interface WritableSetFactoryInterface extends SetFactoryInterface
|
| 13 |
+
{
|
| 14 |
+
/**
|
| 15 |
+
* @inheritDoc
|
| 16 |
+
*
|
| 17 |
+
* @return WritableSetInterface The new writable set.
|
| 18 |
+
*/
|
| 19 |
+
public function createSetFromList(array $list): SetInterface;
|
| 20 |
+
}
|
vendor/dhii/collections-interface/src/WritableSetInterface.php
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
declare(strict_types=1);
|
| 4 |
+
|
| 5 |
+
namespace Dhii\Collection;
|
| 6 |
+
|
| 7 |
+
use Exception;
|
| 8 |
+
|
| 9 |
+
/**
|
| 10 |
+
* A set that can have items added.
|
| 11 |
+
*
|
| 12 |
+
* @psalm-suppress UnusedClass
|
| 13 |
+
*/
|
| 14 |
+
interface WritableSetInterface extends SetInterface
|
| 15 |
+
{
|
| 16 |
+
/**
|
| 17 |
+
* Creates a new instance with the given items only.
|
| 18 |
+
*
|
| 19 |
+
* @param array|mixed[] $items A list of items for the set.
|
| 20 |
+
*
|
| 21 |
+
* @return static A new instance of this class with only the given items.
|
| 22 |
+
*
|
| 23 |
+
* @throws Exception If problem creating.
|
| 24 |
+
*
|
| 25 |
+
* @psalm-suppress PossiblyUnusedMethod
|
| 26 |
+
*/
|
| 27 |
+
public function withItems(array $items);
|
| 28 |
+
|
| 29 |
+
/**
|
| 30 |
+
* Creates a new instance with the given items added to existing ones.
|
| 31 |
+
*
|
| 32 |
+
* @param array|mixed[] $items A list of items to add.
|
| 33 |
+
*
|
| 34 |
+
* @return static A new instance of this class with the given items added to existing ones.
|
| 35 |
+
*
|
| 36 |
+
* @throws Exception If problem creating.
|
| 37 |
+
*
|
| 38 |
+
* @psalm-suppress PossiblyUnusedMethod
|
| 39 |
+
*/
|
| 40 |
+
public function withAddedItems(array $items): WritableSetInterface;
|
| 41 |
+
|
| 42 |
+
/**
|
| 43 |
+
* Creates a new instance with the given items not present.
|
| 44 |
+
*
|
| 45 |
+
* @param array|mixed[] $items A list of items to exclude.
|
| 46 |
+
*
|
| 47 |
+
* @return static An instance of this class without the given items.
|
| 48 |
+
*
|
| 49 |
+
* @throws Exception If problem creating.
|
| 50 |
+
*
|
| 51 |
+
* @psalm-suppress PossiblyUnusedMethod
|
| 52 |
+
*/
|
| 53 |
+
public function withoutItems(array $items): WritableSetInterface;
|
| 54 |
+
}
|
vendor/dhii/containers/.codeclimate.yml
DELETED
|
@@ -1,21 +0,0 @@
|
|
| 1 |
-
---
|
| 2 |
-
engines:
|
| 3 |
-
duplication:
|
| 4 |
-
enabled: true
|
| 5 |
-
config:
|
| 6 |
-
languages:
|
| 7 |
-
- php
|
| 8 |
-
fixme:
|
| 9 |
-
enabled: true
|
| 10 |
-
phpmd:
|
| 11 |
-
enabled: true
|
| 12 |
-
config:
|
| 13 |
-
file_extensions:
|
| 14 |
-
- php
|
| 15 |
-
rulesets: "phpmd.xml"
|
| 16 |
-
ratings:
|
| 17 |
-
paths:
|
| 18 |
-
- "**.inc"
|
| 19 |
-
- "**.php"
|
| 20 |
-
exclude_paths:
|
| 21 |
-
- test/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/dhii/containers/.php_cs
DELETED
|
@@ -1,27 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
|
| 3 |
-
require_once __DIR__.DIRECTORY_SEPARATOR.'vendor/autoload.php';
|
| 4 |
-
$config = Dhii\Configuration\PHPCSFixer\Config::create();
|
| 5 |
-
$fixers = $config->getFixers();
|
| 6 |
-
|
| 7 |
-
$toRemove = array();
|
| 8 |
-
foreach ($toRemove as $_fixer) {
|
| 9 |
-
if (($removeIndex = array_search($_fixer, $fixers)) === false) {
|
| 10 |
-
continue;
|
| 11 |
-
}
|
| 12 |
-
|
| 13 |
-
unset($fixers[$removeIndex]);
|
| 14 |
-
}
|
| 15 |
-
|
| 16 |
-
$toAdd = array();
|
| 17 |
-
foreach ($toAdd as $_fixer) {
|
| 18 |
-
if (($removeIndex = array_search($_fixer, $fixers)) !== false) {
|
| 19 |
-
continue;
|
| 20 |
-
}
|
| 21 |
-
|
| 22 |
-
$fixers[] = $_fixer;
|
| 23 |
-
}
|
| 24 |
-
|
| 25 |
-
$config->fixers($fixers);
|
| 26 |
-
$config->getFinder()->in(__DIR__.DIRECTORY_SEPARATOR.'src');
|
| 27 |
-
return $config;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/dhii/containers/CHANGELOG.md
CHANGED
|
@@ -5,3 +5,6 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
|
| 5 |
and this project adheres to [Semantic Versioning](http://semver.org/).
|
| 6 |
|
| 7 |
## [[*next-version*]] - YYYY-MM-DD
|
|
|
|
|
|
|
|
|
| 5 |
and this project adheres to [Semantic Versioning](http://semver.org/).
|
| 6 |
|
| 7 |
## [[*next-version*]] - YYYY-MM-DD
|
| 8 |
+
|
| 9 |
+
## [0.1.0-alpha1] - 2020-09-14
|
| 10 |
+
Initial release.
|
vendor/dhii/containers/composer.json
CHANGED
|
@@ -16,13 +16,13 @@
|
|
| 16 |
"minimum-stability": "dev",
|
| 17 |
"prefer-stable": true,
|
| 18 |
"require": {
|
| 19 |
-
"php": "^7.
|
| 20 |
-
"dhii/
|
| 21 |
"container-interop/service-provider": "^0.4"
|
| 22 |
},
|
| 23 |
"require-dev": {
|
| 24 |
"slevomat/coding-standard": "~4.0",
|
| 25 |
-
"phpunit/phpunit": "^
|
| 26 |
"gmazzap/andrew": "^1.1",
|
| 27 |
"psr/container": "^1.0"
|
| 28 |
},
|
| 16 |
"minimum-stability": "dev",
|
| 17 |
"prefer-stable": true,
|
| 18 |
"require": {
|
| 19 |
+
"php": "^7.1 | ^8.0",
|
| 20 |
+
"dhii/collections-interface": "^0.3.0-alpha1",
|
| 21 |
"container-interop/service-provider": "^0.4"
|
| 22 |
},
|
| 23 |
"require-dev": {
|
| 24 |
"slevomat/coding-standard": "~4.0",
|
| 25 |
+
"phpunit/phpunit": "^7.0",
|
| 26 |
"gmazzap/andrew": "^1.1",
|
| 27 |
"psr/container": "^1.0"
|
| 28 |
},
|
vendor/dhii/containers/docker/Dockerfile_php
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
-
FROM dockette/php:7.
|
| 2 |
|
| 3 |
RUN apt-get update \
|
| 4 |
&& apt-get -y install software-properties-common dirmngr apt-transport-https lsb-release ca-certificates \
|
| 5 |
&& add-apt-repository -y ppa:ondrej/php \
|
| 6 |
-
&& apt-get install -y php7.
|
| 1 |
+
FROM dockette/php:7.1
|
| 2 |
|
| 3 |
RUN apt-get update \
|
| 4 |
&& apt-get -y install software-properties-common dirmngr apt-transport-https lsb-release ca-certificates \
|
| 5 |
&& add-apt-repository -y ppa:ondrej/php \
|
| 6 |
+
&& apt-get install -y php7.1-xdebug
|
vendor/dhii/containers/phpunit.xml
DELETED
|
@@ -1,35 +0,0 @@
|
|
| 1 |
-
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
-
<phpunit
|
| 3 |
-
colors="true"
|
| 4 |
-
bootstrap="test/bootstrap.php"
|
| 5 |
-
>
|
| 6 |
-
<php>
|
| 7 |
-
<ini name="display_errors" value="1" />
|
| 8 |
-
<ini name="display_startup_errors" value="1" />
|
| 9 |
-
</php>
|
| 10 |
-
<testsuites>
|
| 11 |
-
<testsuite name="unit">
|
| 12 |
-
<directory>./test/unit/</directory>
|
| 13 |
-
</testsuite>
|
| 14 |
-
<testsuite name="functional">
|
| 15 |
-
<directory>./test/functional/</directory>
|
| 16 |
-
</testsuite>
|
| 17 |
-
</testsuites>
|
| 18 |
-
<filter>
|
| 19 |
-
<whitelist processUncoveredFilesFromWhitelist="true">
|
| 20 |
-
<directory suffix=".php">src</directory>
|
| 21 |
-
</whitelist>
|
| 22 |
-
</filter>
|
| 23 |
-
<logging>
|
| 24 |
-
<log type="coverage-html" target="./test/coverage/html" lowUpperBound="35"
|
| 25 |
-
highLowerBound="80"/>
|
| 26 |
-
<log type="coverage-clover" target="./test/coverage/clover.xml"/>
|
| 27 |
-
<log type="coverage-php" target="./test/coverage/serialized"/>
|
| 28 |
-
<log type="coverage-text" target="php://stdout" showUncoveredFiles="false"/>
|
| 29 |
-
<log type="json" target="./test/log/logfile.json"/>
|
| 30 |
-
<log type="tap" target="./test/log/logfile.tap"/>
|
| 31 |
-
<log type="junit" target="./test/log/logfile.xml"/>
|
| 32 |
-
<log type="testdox-html" target="./test/log/testdox.html"/>
|
| 33 |
-
<log type="testdox-text" target="./test/log/testdox.txt"/>
|
| 34 |
-
</logging>
|
| 35 |
-
</phpunit>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/dhii/containers/src/AliasingContainer.php
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
namespace Dhii\Container;
|
| 4 |
+
|
| 5 |
+
use Dhii\Collection\ContainerInterface;
|
| 6 |
+
use Dhii\Container\Util\StringTranslatingTrait;
|
| 7 |
+
use Psr\Container\ContainerInterface as PsrContainerInterface;
|
| 8 |
+
use function array_key_exists;
|
| 9 |
+
|
| 10 |
+
/**
|
| 11 |
+
* A container implementation that wraps around an inner container to alias its keys, so consumers can use the aliases
|
| 12 |
+
* to fetch data from the inner container.
|
| 13 |
+
*/
|
| 14 |
+
class AliasingContainer implements ContainerInterface
|
| 15 |
+
{
|
| 16 |
+
/* @since [*next-version*] */
|
| 17 |
+
use StringTranslatingTrait;
|
| 18 |
+
|
| 19 |
+
/**
|
| 20 |
+
* @since [*next-version*]
|
| 21 |
+
*
|
| 22 |
+
* @var PsrContainerInterface
|
| 23 |
+
*/
|
| 24 |
+
protected $inner;
|
| 25 |
+
|
| 26 |
+
/**
|
| 27 |
+
* @since [*next-version*]
|
| 28 |
+
*
|
| 29 |
+
* @var array
|
| 30 |
+
*/
|
| 31 |
+
protected $aliases;
|
| 32 |
+
|
| 33 |
+
/**
|
| 34 |
+
* Constructor.
|
| 35 |
+
*
|
| 36 |
+
* @since [*next-version*]
|
| 37 |
+
*
|
| 38 |
+
* @param PsrContainerInterface $inner The container whose keys to alias.
|
| 39 |
+
* @param array $aliases A mapping of aliases to their original container key counterparts.
|
| 40 |
+
*/
|
| 41 |
+
public function __construct(PsrContainerInterface $inner, array $aliases)
|
| 42 |
+
{
|
| 43 |
+
$this->inner = $inner;
|
| 44 |
+
$this->aliases = $aliases;
|
| 45 |
+
}
|
| 46 |
+
|
| 47 |
+
/**
|
| 48 |
+
* @inheritdoc
|
| 49 |
+
*
|
| 50 |
+
* @since [*next-version*]
|
| 51 |
+
*/
|
| 52 |
+
public function get($key)
|
| 53 |
+
{
|
| 54 |
+
return $this->inner->get($this->getInnerKey($key));
|
| 55 |
+
}
|
| 56 |
+
|
| 57 |
+
/**
|
| 58 |
+
* @inheritdoc
|
| 59 |
+
*
|
| 60 |
+
* @since [*next-version*]
|
| 61 |
+
*/
|
| 62 |
+
public function has($key)
|
| 63 |
+
{
|
| 64 |
+
return $this->inner->has($this->getInnerKey($key));
|
| 65 |
+
}
|
| 66 |
+
|
| 67 |
+
/**
|
| 68 |
+
* Retrieves the key to use for the inner container.
|
| 69 |
+
*
|
| 70 |
+
* @since [*next-version*]
|
| 71 |
+
*
|
| 72 |
+
* @param string $key The outer key.
|
| 73 |
+
*
|
| 74 |
+
* @return string The inner key.
|
| 75 |
+
*/
|
| 76 |
+
protected function getInnerKey($key)
|
| 77 |
+
{
|
| 78 |
+
if (array_key_exists($key, $this->aliases)) {
|
| 79 |
+
return $this->aliases[$key];
|
| 80 |
+
}
|
| 81 |
+
|
| 82 |
+
return $key;
|
| 83 |
+
}
|
| 84 |
+
}
|
vendor/dhii/containers/src/CachingContainer.php
CHANGED
|
@@ -2,12 +2,12 @@
|
|
| 2 |
|
| 3 |
namespace Dhii\Container;
|
| 4 |
|
|
|
|
| 5 |
use Dhii\Container\Exception\ContainerException;
|
| 6 |
use Dhii\Container\Exception\NotFoundException;
|
| 7 |
use Dhii\Container\Util\StringTranslatingTrait;
|
| 8 |
-
use Dhii\Data\Container\ContainerInterface;
|
| 9 |
use Exception;
|
| 10 |
-
use Psr\Container\ContainerInterface as
|
| 11 |
use Psr\Container\NotFoundExceptionInterface;
|
| 12 |
|
| 13 |
/**
|
|
@@ -24,14 +24,14 @@ class CachingContainer implements ContainerInterface
|
|
| 24 |
*/
|
| 25 |
protected $cache;
|
| 26 |
/**
|
| 27 |
-
* @var
|
| 28 |
*/
|
| 29 |
protected $container;
|
| 30 |
|
| 31 |
/**
|
| 32 |
-
* @param
|
| 33 |
*/
|
| 34 |
-
public function __construct(
|
| 35 |
{
|
| 36 |
$this->container = $container;
|
| 37 |
$this->cache = [];
|
|
@@ -52,16 +52,13 @@ class CachingContainer implements ContainerInterface
|
|
| 52 |
throw new NotFoundException(
|
| 53 |
$this->__('Key "%1$s" not found in inner container', [$key]),
|
| 54 |
0,
|
| 55 |
-
$e
|
| 56 |
-
$this,
|
| 57 |
-
$key
|
| 58 |
);
|
| 59 |
} catch (Exception $e) {
|
| 60 |
throw new ContainerException(
|
| 61 |
$this->__('Could not retrieve value for key "%1$s from inner container', [$key]),
|
| 62 |
0,
|
| 63 |
-
$e
|
| 64 |
-
$this
|
| 65 |
);
|
| 66 |
}
|
| 67 |
|
|
@@ -83,8 +80,7 @@ class CachingContainer implements ContainerInterface
|
|
| 83 |
throw new ContainerException(
|
| 84 |
$this->__('Could not check cache for key "%1$s"', [$key]),
|
| 85 |
0,
|
| 86 |
-
$e
|
| 87 |
-
$this
|
| 88 |
);
|
| 89 |
}
|
| 90 |
|
|
@@ -96,8 +92,7 @@ class CachingContainer implements ContainerInterface
|
|
| 96 |
throw new ContainerException(
|
| 97 |
$this->__('Could not check inner container for key "%1$s"', [$key]),
|
| 98 |
0,
|
| 99 |
-
$e
|
| 100 |
-
$this
|
| 101 |
);
|
| 102 |
}
|
| 103 |
|
|
@@ -153,4 +148,4 @@ class CachingContainer implements ContainerInterface
|
|
| 153 |
|
| 154 |
return $result;
|
| 155 |
}
|
| 156 |
-
}
|
| 2 |
|
| 3 |
namespace Dhii\Container;
|
| 4 |
|
| 5 |
+
use Dhii\Collection\ContainerInterface;
|
| 6 |
use Dhii\Container\Exception\ContainerException;
|
| 7 |
use Dhii\Container\Exception\NotFoundException;
|
| 8 |
use Dhii\Container\Util\StringTranslatingTrait;
|
|
|
|
| 9 |
use Exception;
|
| 10 |
+
use Psr\Container\ContainerInterface as PsrContainerInterface;
|
| 11 |
use Psr\Container\NotFoundExceptionInterface;
|
| 12 |
|
| 13 |
/**
|
| 24 |
*/
|
| 25 |
protected $cache;
|
| 26 |
/**
|
| 27 |
+
* @var PsrContainerInterface
|
| 28 |
*/
|
| 29 |
protected $container;
|
| 30 |
|
| 31 |
/**
|
| 32 |
+
* @param PsrContainerInterface $container The container to cache entries from.
|
| 33 |
*/
|
| 34 |
+
public function __construct(PsrContainerInterface $container)
|
| 35 |
{
|
| 36 |
$this->container = $container;
|
| 37 |
$this->cache = [];
|
| 52 |
throw new NotFoundException(
|
| 53 |
$this->__('Key "%1$s" not found in inner container', [$key]),
|
| 54 |
0,
|
| 55 |
+
$e
|
|
|
|
|
|
|
| 56 |
);
|
| 57 |
} catch (Exception $e) {
|
| 58 |
throw new ContainerException(
|
| 59 |
$this->__('Could not retrieve value for key "%1$s from inner container', [$key]),
|
| 60 |
0,
|
| 61 |
+
$e
|
|
|
|
| 62 |
);
|
| 63 |
}
|
| 64 |
|
| 80 |
throw new ContainerException(
|
| 81 |
$this->__('Could not check cache for key "%1$s"', [$key]),
|
| 82 |
0,
|
| 83 |
+
$e
|
|
|
|
| 84 |
);
|
| 85 |
}
|
| 86 |
|
| 92 |
throw new ContainerException(
|
| 93 |
$this->__('Could not check inner container for key "%1$s"', [$key]),
|
| 94 |
0,
|
| 95 |
+
$e
|
|
|
|
| 96 |
);
|
| 97 |
}
|
| 98 |
|
| 148 |
|
| 149 |
return $result;
|
| 150 |
}
|
| 151 |
+
}
|
vendor/dhii/containers/src/CompositeCachingServiceProvider.php
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
namespace Dhii\Container;
|
| 4 |
|
| 5 |
use Interop\Container\ServiceProviderInterface;
|
| 6 |
-
use Psr\Container\ContainerInterface;
|
| 7 |
|
| 8 |
/**
|
| 9 |
* A service provider that aggregates service definitions from other providers.
|
|
@@ -108,7 +108,7 @@ class CompositeCachingServiceProvider implements ServiceProviderInterface
|
|
| 108 |
|
| 109 |
if (isset($defaults[$key])) {
|
| 110 |
$default = $defaults[$key];
|
| 111 |
-
$merged[$key] = function (
|
| 112 |
assert(is_callable($default));
|
| 113 |
|
| 114 |
$result = $default($c, $previous);
|
|
@@ -127,4 +127,4 @@ class CompositeCachingServiceProvider implements ServiceProviderInterface
|
|
| 127 |
|
| 128 |
return $merged;
|
| 129 |
}
|
| 130 |
-
}
|
| 3 |
namespace Dhii\Container;
|
| 4 |
|
| 5 |
use Interop\Container\ServiceProviderInterface;
|
| 6 |
+
use Psr\Container\ContainerInterface as PsrContainerInterface;
|
| 7 |
|
| 8 |
/**
|
| 9 |
* A service provider that aggregates service definitions from other providers.
|
| 108 |
|
| 109 |
if (isset($defaults[$key])) {
|
| 110 |
$default = $defaults[$key];
|
| 111 |
+
$merged[$key] = function (PsrContainerInterface $c, $previous = null) use ($default, $extension) {
|
| 112 |
assert(is_callable($default));
|
| 113 |
|
| 114 |
$result = $default($c, $previous);
|
| 127 |
|
| 128 |
return $merged;
|
| 129 |
}
|
| 130 |
+
}
|
vendor/dhii/containers/src/CompositeContainer.php
CHANGED
|
@@ -2,13 +2,13 @@
|
|
| 2 |
|
| 3 |
namespace Dhii\Container;
|
| 4 |
|
|
|
|
| 5 |
use Dhii\Container\Exception\ContainerException;
|
| 6 |
use Dhii\Container\Exception\NotFoundException;
|
| 7 |
use Dhii\Container\Util\StringTranslatingTrait;
|
| 8 |
-
use Dhii\Data\Container\ContainerInterface;
|
| 9 |
-
use Dhii\Data\Container\Exception\NotFoundExceptionInterface;
|
| 10 |
use Exception;
|
| 11 |
-
use Psr\Container\ContainerInterface as
|
|
|
|
| 12 |
use Traversable;
|
| 13 |
use UnexpectedValueException;
|
| 14 |
|
|
@@ -17,12 +17,12 @@ class CompositeContainer implements ContainerInterface
|
|
| 17 |
use StringTranslatingTrait;
|
| 18 |
|
| 19 |
/**
|
| 20 |
-
* @var array|
|
| 21 |
*/
|
| 22 |
protected $containers;
|
| 23 |
|
| 24 |
/**
|
| 25 |
-
* @param
|
| 26 |
*/
|
| 27 |
public function __construct($containers)
|
| 28 |
{
|
|
@@ -50,16 +50,13 @@ class CompositeContainer implements ContainerInterface
|
|
| 50 |
throw new NotFoundException(
|
| 51 |
$this->__('Failed to retrieve value for key "%1$s" from container at index "%2$s"', [$key, $index]),
|
| 52 |
0,
|
| 53 |
-
$e
|
| 54 |
-
$this,
|
| 55 |
-
$key
|
| 56 |
);
|
| 57 |
} catch (Exception $e) {
|
| 58 |
throw new ContainerException(
|
| 59 |
$this->__('Failed check for key "%1$s" on container at index "%2$s"', [$key, $index]),
|
| 60 |
0,
|
| 61 |
-
$e
|
| 62 |
-
$this
|
| 63 |
);
|
| 64 |
}
|
| 65 |
}
|
|
@@ -67,9 +64,7 @@ class CompositeContainer implements ContainerInterface
|
|
| 67 |
throw new NotFoundException(
|
| 68 |
$this->__('Key "%1$s" not found in any of the containers', [$key]),
|
| 69 |
0,
|
| 70 |
-
null
|
| 71 |
-
$this,
|
| 72 |
-
$key
|
| 73 |
);
|
| 74 |
}
|
| 75 |
|
|
@@ -89,12 +84,11 @@ class CompositeContainer implements ContainerInterface
|
|
| 89 |
throw new ContainerException(
|
| 90 |
$this->__('Failed check for key "%1$s" on container at index "%2$s"', [$key, $index]),
|
| 91 |
0,
|
| 92 |
-
$e
|
| 93 |
-
$this
|
| 94 |
);
|
| 95 |
}
|
| 96 |
}
|
| 97 |
|
| 98 |
return false;
|
| 99 |
}
|
| 100 |
-
}
|
| 2 |
|
| 3 |
namespace Dhii\Container;
|
| 4 |
|
| 5 |
+
use Dhii\Collection\ContainerInterface;
|
| 6 |
use Dhii\Container\Exception\ContainerException;
|
| 7 |
use Dhii\Container\Exception\NotFoundException;
|
| 8 |
use Dhii\Container\Util\StringTranslatingTrait;
|
|
|
|
|
|
|
| 9 |
use Exception;
|
| 10 |
+
use Psr\Container\ContainerInterface as PsrContainerInterface;
|
| 11 |
+
use Psr\Container\NotFoundExceptionInterface;
|
| 12 |
use Traversable;
|
| 13 |
use UnexpectedValueException;
|
| 14 |
|
| 17 |
use StringTranslatingTrait;
|
| 18 |
|
| 19 |
/**
|
| 20 |
+
* @var array|PsrContainerInterface[]|Traversable
|
| 21 |
*/
|
| 22 |
protected $containers;
|
| 23 |
|
| 24 |
/**
|
| 25 |
+
* @param PsrContainerInterface[]|Traversable $containers The list of containers.
|
| 26 |
*/
|
| 27 |
public function __construct($containers)
|
| 28 |
{
|
| 50 |
throw new NotFoundException(
|
| 51 |
$this->__('Failed to retrieve value for key "%1$s" from container at index "%2$s"', [$key, $index]),
|
| 52 |
0,
|
| 53 |
+
$e
|
|
|
|
|
|
|
| 54 |
);
|
| 55 |
} catch (Exception $e) {
|
| 56 |
throw new ContainerException(
|
| 57 |
$this->__('Failed check for key "%1$s" on container at index "%2$s"', [$key, $index]),
|
| 58 |
0,
|
| 59 |
+
$e
|
|
|
|
| 60 |
);
|
| 61 |
}
|
| 62 |
}
|
| 64 |
throw new NotFoundException(
|
| 65 |
$this->__('Key "%1$s" not found in any of the containers', [$key]),
|
| 66 |
0,
|
| 67 |
+
null
|
|
|
|
|
|
|
| 68 |
);
|
| 69 |
}
|
| 70 |
|
| 84 |
throw new ContainerException(
|
| 85 |
$this->__('Failed check for key "%1$s" on container at index "%2$s"', [$key, $index]),
|
| 86 |
0,
|
| 87 |
+
$e
|
|
|
|
| 88 |
);
|
| 89 |
}
|
| 90 |
}
|
| 91 |
|
| 92 |
return false;
|
| 93 |
}
|
| 94 |
+
}
|
vendor/dhii/containers/src/DataStructureBasedFactory.php
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
declare(strict_types=1);
|
| 3 |
+
|
| 4 |
+
namespace Dhii\Container;
|
| 5 |
+
|
| 6 |
+
use Dhii\Collection\WritableMapFactoryInterface;
|
| 7 |
+
use Psr\Container\ContainerInterface;
|
| 8 |
+
|
| 9 |
+
/**
|
| 10 |
+
* @inheritDoc
|
| 11 |
+
*/
|
| 12 |
+
class DataStructureBasedFactory implements DataStructureBasedFactoryInterface
|
| 13 |
+
{
|
| 14 |
+
/**
|
| 15 |
+
* @var WritableMapFactoryInterface
|
| 16 |
+
*/
|
| 17 |
+
protected $containerFactory;
|
| 18 |
+
|
| 19 |
+
public function __construct(
|
| 20 |
+
WritableMapFactoryInterface $containerFactory
|
| 21 |
+
) {
|
| 22 |
+
$this->containerFactory = $containerFactory;
|
| 23 |
+
}
|
| 24 |
+
|
| 25 |
+
/**
|
| 26 |
+
* @inheritDoc
|
| 27 |
+
*/
|
| 28 |
+
public function createContainerFromArray(array $structure): ContainerInterface
|
| 29 |
+
{
|
| 30 |
+
$map = [];
|
| 31 |
+
foreach ($structure as $key => $value) {
|
| 32 |
+
if (is_array($value) || is_object($value)) {
|
| 33 |
+
$value = $this->createContainerFromArray($value);
|
| 34 |
+
}
|
| 35 |
+
|
| 36 |
+
$map[$key] = $value;
|
| 37 |
+
}
|
| 38 |
+
|
| 39 |
+
$container = $this->containerFactory->createContainerFromArray($map);
|
| 40 |
+
|
| 41 |
+
return $container;
|
| 42 |
+
}
|
| 43 |
+
}
|
vendor/dhii/containers/src/DataStructureBasedFactoryInterface.php
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
declare(strict_types=1);
|
| 3 |
+
|
| 4 |
+
namespace Dhii\Container;
|
| 5 |
+
|
| 6 |
+
use Dhii\Collection\WritableMapFactoryInterface;
|
| 7 |
+
use Dhii\Collection\WritableMapInterface;
|
| 8 |
+
use Exception;
|
| 9 |
+
use Psr\Container\ContainerInterface as BaseContainerInterface;
|
| 10 |
+
|
| 11 |
+
/**
|
| 12 |
+
* Creates a container hierarchy based on a traditional data structure.
|
| 13 |
+
*/
|
| 14 |
+
interface DataStructureBasedFactoryInterface extends WritableMapFactoryInterface
|
| 15 |
+
{
|
| 16 |
+
/**
|
| 17 |
+
* Based on a traditional data structure, creates a container hierarchy.
|
| 18 |
+
*
|
| 19 |
+
* @param array $structure The traditional data structure representation.
|
| 20 |
+
*
|
| 21 |
+
* @return WritableMapInterface A hierarchy of writable maps that reflects the data structure.
|
| 22 |
+
*
|
| 23 |
+
* @throws Exception If problem creating.
|
| 24 |
+
*/
|
| 25 |
+
public function createContainerFromArray(array $structure): BaseContainerInterface;
|
| 26 |
+
}
|
vendor/dhii/containers/src/DelegatingContainer.php
CHANGED
|
@@ -2,12 +2,12 @@
|
|
| 2 |
|
| 3 |
namespace Dhii\Container;
|
| 4 |
|
|
|
|
| 5 |
use Dhii\Container\Exception\ContainerException;
|
| 6 |
use Dhii\Container\Exception\NotFoundException;
|
| 7 |
use Dhii\Container\Util\StringTranslatingTrait;
|
| 8 |
use Interop\Container\ServiceProviderInterface;
|
| 9 |
-
use
|
| 10 |
-
use Psr\Container\ContainerInterface as BaseContainerInterface;
|
| 11 |
use UnexpectedValueException;
|
| 12 |
|
| 13 |
class DelegatingContainer implements ContainerInterface
|
|
@@ -18,16 +18,17 @@ class DelegatingContainer implements ContainerInterface
|
|
| 18 |
* @var ServiceProviderInterface
|
| 19 |
*/
|
| 20 |
protected $provider;
|
|
|
|
| 21 |
/**
|
| 22 |
-
* @var
|
| 23 |
*/
|
| 24 |
protected $parent;
|
| 25 |
|
| 26 |
/**
|
| 27 |
-
* @param ServiceProviderInterface
|
| 28 |
-
* @param
|
| 29 |
*/
|
| 30 |
-
public function __construct(ServiceProviderInterface $provider,
|
| 31 |
{
|
| 32 |
$this->provider = $provider;
|
| 33 |
$this->parent = $parent;
|
|
@@ -45,9 +46,7 @@ class DelegatingContainer implements ContainerInterface
|
|
| 45 |
throw new NotFoundException(
|
| 46 |
$this->__('Service not found for key "%1$s"', [$id]),
|
| 47 |
0,
|
| 48 |
-
null
|
| 49 |
-
$this,
|
| 50 |
-
$id
|
| 51 |
);
|
| 52 |
}
|
| 53 |
|
|
@@ -59,8 +58,7 @@ class DelegatingContainer implements ContainerInterface
|
|
| 59 |
throw new ContainerException(
|
| 60 |
$this->__('Could not create service "%1$s"', [$id]),
|
| 61 |
0,
|
| 62 |
-
$e
|
| 63 |
-
$this
|
| 64 |
);
|
| 65 |
}
|
| 66 |
|
|
@@ -78,8 +76,7 @@ class DelegatingContainer implements ContainerInterface
|
|
| 78 |
throw new ContainerException(
|
| 79 |
$this->__('Could not extend service "%1$s"', [$id]),
|
| 80 |
0,
|
| 81 |
-
$e
|
| 82 |
-
$this
|
| 83 |
);
|
| 84 |
}
|
| 85 |
|
|
@@ -150,13 +147,12 @@ class DelegatingContainer implements ContainerInterface
|
|
| 150 |
/**
|
| 151 |
* Retrieves the container to be used for definitions and extensions.
|
| 152 |
*
|
| 153 |
-
* @return
|
| 154 |
-
* Otherwise, this instance.
|
| 155 |
*/
|
| 156 |
-
protected function _getBaseContainer():
|
| 157 |
{
|
| 158 |
-
return $this->parent instanceof
|
| 159 |
? $this->parent
|
| 160 |
: $this;
|
| 161 |
}
|
| 162 |
-
}
|
| 2 |
|
| 3 |
namespace Dhii\Container;
|
| 4 |
|
| 5 |
+
use Dhii\Collection\ContainerInterface;
|
| 6 |
use Dhii\Container\Exception\ContainerException;
|
| 7 |
use Dhii\Container\Exception\NotFoundException;
|
| 8 |
use Dhii\Container\Util\StringTranslatingTrait;
|
| 9 |
use Interop\Container\ServiceProviderInterface;
|
| 10 |
+
use Psr\Container\ContainerInterface as PsrContainerInterface;
|
|
|
|
| 11 |
use UnexpectedValueException;
|
| 12 |
|
| 13 |
class DelegatingContainer implements ContainerInterface
|
| 18 |
* @var ServiceProviderInterface
|
| 19 |
*/
|
| 20 |
protected $provider;
|
| 21 |
+
|
| 22 |
/**
|
| 23 |
+
* @var PsrContainerInterface|null
|
| 24 |
*/
|
| 25 |
protected $parent;
|
| 26 |
|
| 27 |
/**
|
| 28 |
+
* @param ServiceProviderInterface $provider
|
| 29 |
+
* @param PsrContainerInterface|null $parent
|
| 30 |
*/
|
| 31 |
+
public function __construct(ServiceProviderInterface $provider, PsrContainerInterface $parent = null)
|
| 32 |
{
|
| 33 |
$this->provider = $provider;
|
| 34 |
$this->parent = $parent;
|
| 46 |
throw new NotFoundException(
|
| 47 |
$this->__('Service not found for key "%1$s"', [$id]),
|
| 48 |
0,
|
| 49 |
+
null
|
|
|
|
|
|
|
| 50 |
);
|
| 51 |
}
|
| 52 |
|
| 58 |
throw new ContainerException(
|
| 59 |
$this->__('Could not create service "%1$s"', [$id]),
|
| 60 |
0,
|
| 61 |
+
$e
|
|
|
|
| 62 |
);
|
| 63 |
}
|
| 64 |
|
| 76 |
throw new ContainerException(
|
| 77 |
$this->__('Could not extend service "%1$s"', [$id]),
|
| 78 |
0,
|
| 79 |
+
$e
|
|
|
|
| 80 |
);
|
| 81 |
}
|
| 82 |
|
| 147 |
/**
|
| 148 |
* Retrieves the container to be used for definitions and extensions.
|
| 149 |
*
|
| 150 |
+
* @return PsrContainerInterface The parent container, if set. Otherwise, this instance.
|
|
|
|
| 151 |
*/
|
| 152 |
+
protected function _getBaseContainer() : PsrContainerInterface
|
| 153 |
{
|
| 154 |
+
return $this->parent instanceof PsrContainerInterface
|
| 155 |
? $this->parent
|
| 156 |
: $this;
|
| 157 |
}
|
| 158 |
+
}
|
vendor/dhii/containers/src/DeprefixingContainer.php
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
namespace Dhii\Container;
|
| 4 |
+
|
| 5 |
+
use Dhii\Collection\ContainerInterface;
|
| 6 |
+
use Psr\Container\ContainerInterface as PsrContainerInterface;
|
| 7 |
+
use Psr\Container\NotFoundExceptionInterface;
|
| 8 |
+
|
| 9 |
+
/**
|
| 10 |
+
* A container implementation that wraps around an inner container to automatically add prefixes to keys during
|
| 11 |
+
* fetching and look up, allowing consumers to omit them.
|
| 12 |
+
*
|
| 13 |
+
* @since [*next-version*]
|
| 14 |
+
*/
|
| 15 |
+
class DeprefixingContainer implements ContainerInterface
|
| 16 |
+
{
|
| 17 |
+
/**
|
| 18 |
+
* @since [*next-version*]
|
| 19 |
+
*
|
| 20 |
+
* @var PsrContainerInterface
|
| 21 |
+
*/
|
| 22 |
+
protected $inner;
|
| 23 |
+
|
| 24 |
+
/**
|
| 25 |
+
* @since [*next-version*]
|
| 26 |
+
*
|
| 27 |
+
* @var string
|
| 28 |
+
*/
|
| 29 |
+
protected $prefix;
|
| 30 |
+
|
| 31 |
+
/**
|
| 32 |
+
* @since [*next-version*]
|
| 33 |
+
*
|
| 34 |
+
* @var bool
|
| 35 |
+
*/
|
| 36 |
+
protected $strict;
|
| 37 |
+
|
| 38 |
+
/**
|
| 39 |
+
* Constructor.
|
| 40 |
+
*
|
| 41 |
+
* @since [*next-version*]
|
| 42 |
+
*
|
| 43 |
+
* @param PsrContainerInterface $container The container whose keys to deprefix.
|
| 44 |
+
* @param string $prefix The prefix to remove from the container's keys.
|
| 45 |
+
* @param bool $strict Whether or not to fallback to prefixed keys if an un-prefixed key does
|
| 46 |
+
* not exist in the inner container.
|
| 47 |
+
*/
|
| 48 |
+
public function __construct(PsrContainerInterface $container, string $prefix, bool $strict = true)
|
| 49 |
+
{
|
| 50 |
+
$this->inner = $container;
|
| 51 |
+
$this->prefix = $prefix;
|
| 52 |
+
$this->strict = $strict;
|
| 53 |
+
}
|
| 54 |
+
|
| 55 |
+
/**
|
| 56 |
+
* @inheritdoc
|
| 57 |
+
*
|
| 58 |
+
* @since [*next-version*]
|
| 59 |
+
*/
|
| 60 |
+
public function get($key)
|
| 61 |
+
{
|
| 62 |
+
try {
|
| 63 |
+
return $this->inner->get($this->getInnerKey($key));
|
| 64 |
+
} catch (NotFoundExceptionInterface $nfException) {
|
| 65 |
+
if ($this->strict || !$this->inner->has($key)) {
|
| 66 |
+
throw $nfException;
|
| 67 |
+
}
|
| 68 |
+
}
|
| 69 |
+
|
| 70 |
+
return $this->inner->get($key);
|
| 71 |
+
}
|
| 72 |
+
|
| 73 |
+
/**
|
| 74 |
+
* @inheritdoc
|
| 75 |
+
*
|
| 76 |
+
* @since [*next-version*]
|
| 77 |
+
*/
|
| 78 |
+
public function has($key)
|
| 79 |
+
{
|
| 80 |
+
return $this->inner->has($this->getInnerKey($key)) || (!$this->strict && $this->inner->has($key));
|
| 81 |
+
}
|
| 82 |
+
|
| 83 |
+
/**
|
| 84 |
+
* Retrieves the key to use for the inner container.
|
| 85 |
+
*
|
| 86 |
+
* @since [*next-version*]
|
| 87 |
+
*
|
| 88 |
+
* @param string $key The outer key.
|
| 89 |
+
*
|
| 90 |
+
* @return string The inner key.
|
| 91 |
+
*/
|
| 92 |
+
protected function getInnerKey($key)
|
| 93 |
+
{
|
| 94 |
+
return $this->prefix . $key;
|
| 95 |
+
}
|
| 96 |
+
}
|
vendor/dhii/containers/src/Dictionary.php
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
namespace Dhii\Container;
|
| 4 |
+
|
| 5 |
+
use ArrayIterator;
|
| 6 |
+
use Dhii\Collection\WritableContainerInterface;
|
| 7 |
+
use Dhii\Collection\WritableMapInterface;
|
| 8 |
+
use Dhii\Container\Exception\NotFoundException;
|
| 9 |
+
use Dhii\Container\Util\StringTranslatingTrait;
|
| 10 |
+
use IteratorAggregate;
|
| 11 |
+
use RangeException;
|
| 12 |
+
|
| 13 |
+
/**
|
| 14 |
+
* A simple mutable dictionary, i.e. an enumerable key-value map.
|
| 15 |
+
*/
|
| 16 |
+
class Dictionary implements
|
| 17 |
+
IteratorAggregate,
|
| 18 |
+
WritableMapInterface
|
| 19 |
+
{
|
| 20 |
+
use StringTranslatingTrait;
|
| 21 |
+
|
| 22 |
+
/** @var array */
|
| 23 |
+
protected $data;
|
| 24 |
+
|
| 25 |
+
/**
|
| 26 |
+
* @param array $data The key-value map of data.
|
| 27 |
+
*/
|
| 28 |
+
public function __construct(array $data)
|
| 29 |
+
{
|
| 30 |
+
$this->data = $data;
|
| 31 |
+
}
|
| 32 |
+
|
| 33 |
+
/**
|
| 34 |
+
* {@inheritDoc}
|
| 35 |
+
*/
|
| 36 |
+
public function get($key)
|
| 37 |
+
{
|
| 38 |
+
if (!array_key_exists($key, $this->data)) {
|
| 39 |
+
throw new NotFoundException(
|
| 40 |
+
$this->__('Dictionary does not have key "%1$s"', [$key]),
|
| 41 |
+
0,
|
| 42 |
+
null
|
| 43 |
+
);
|
| 44 |
+
}
|
| 45 |
+
|
| 46 |
+
return $this->data[$key];
|
| 47 |
+
}
|
| 48 |
+
|
| 49 |
+
/**
|
| 50 |
+
* {@inheritDoc}
|
| 51 |
+
*/
|
| 52 |
+
public function has($key)
|
| 53 |
+
{
|
| 54 |
+
$isHas = array_key_exists($key, $this->data);
|
| 55 |
+
|
| 56 |
+
return $isHas;
|
| 57 |
+
}
|
| 58 |
+
|
| 59 |
+
/**
|
| 60 |
+
* {@inheritDoc}
|
| 61 |
+
*/
|
| 62 |
+
public function getIterator()
|
| 63 |
+
{
|
| 64 |
+
return new ArrayIterator($this->data);
|
| 65 |
+
}
|
| 66 |
+
|
| 67 |
+
/**
|
| 68 |
+
* @inheritDoc
|
| 69 |
+
*/
|
| 70 |
+
public function withMappings(array $mappings): WritableContainerInterface
|
| 71 |
+
{
|
| 72 |
+
$dictionary = $this->cloneMe();
|
| 73 |
+
$dictionary->data = $mappings;
|
| 74 |
+
|
| 75 |
+
return $dictionary;
|
| 76 |
+
}
|
| 77 |
+
|
| 78 |
+
/**
|
| 79 |
+
* @inheritDoc
|
| 80 |
+
*/
|
| 81 |
+
public function withAddedMappings(array $mappings): WritableContainerInterface
|
| 82 |
+
{
|
| 83 |
+
$dictionary = $this->cloneMe();
|
| 84 |
+
$dictionary->data = $mappings + $this->data;
|
| 85 |
+
|
| 86 |
+
return $dictionary;
|
| 87 |
+
}
|
| 88 |
+
|
| 89 |
+
/**
|
| 90 |
+
* @inheritDoc
|
| 91 |
+
*/
|
| 92 |
+
public function withoutKeys(array $keys): WritableContainerInterface
|
| 93 |
+
{
|
| 94 |
+
$dictionary = $this->cloneMe();
|
| 95 |
+
|
| 96 |
+
foreach ($keys as $i => $key) {
|
| 97 |
+
if (!is_string($key)) {
|
| 98 |
+
throw new RangeException($this->__('Key at index %1$d is not a string', [$i]));
|
| 99 |
+
}
|
| 100 |
+
unset($dictionary->data[$key]);
|
| 101 |
+
}
|
| 102 |
+
|
| 103 |
+
return $dictionary;
|
| 104 |
+
}
|
| 105 |
+
|
| 106 |
+
/**
|
| 107 |
+
* Creates a copy of this instance
|
| 108 |
+
*
|
| 109 |
+
* @return Dictionary The new instance
|
| 110 |
+
*/
|
| 111 |
+
protected function cloneMe(): Dictionary
|
| 112 |
+
{
|
| 113 |
+
return clone $this;
|
| 114 |
+
}
|
| 115 |
+
}
|
vendor/dhii/containers/src/DictionaryFactory.php
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
declare(strict_types=1);
|
| 3 |
+
|
| 4 |
+
namespace Dhii\Container;
|
| 5 |
+
|
| 6 |
+
use Dhii\Collection\WritableMapFactoryInterface;
|
| 7 |
+
use Psr\Container\ContainerInterface;
|
| 8 |
+
|
| 9 |
+
/**
|
| 10 |
+
* @inheritDoc
|
| 11 |
+
*/
|
| 12 |
+
class DictionaryFactory implements WritableMapFactoryInterface
|
| 13 |
+
{
|
| 14 |
+
/**
|
| 15 |
+
* @inheritDoc
|
| 16 |
+
*/
|
| 17 |
+
public function createContainerFromArray(array $data): ContainerInterface
|
| 18 |
+
{
|
| 19 |
+
return new Dictionary($data);
|
| 20 |
+
}
|
| 21 |
+
}
|
vendor/dhii/containers/src/Exception/ContainerException.php
CHANGED
|
@@ -2,8 +2,8 @@
|
|
| 2 |
|
| 3 |
namespace Dhii\Container\Exception;
|
| 4 |
|
| 5 |
-
use Dhii\Data\Container\Exception\ContainerExceptionInterface;
|
| 6 |
use Exception;
|
|
|
|
| 7 |
use Psr\Container\ContainerInterface;
|
| 8 |
use Throwable;
|
| 9 |
|
|
@@ -14,7 +14,6 @@ use Throwable;
|
|
| 14 |
*/
|
| 15 |
class ContainerException extends Exception implements ContainerExceptionInterface
|
| 16 |
{
|
| 17 |
-
|
| 18 |
/**
|
| 19 |
* @var ContainerInterface|null
|
| 20 |
*/
|
|
@@ -23,25 +22,13 @@ class ContainerException extends Exception implements ContainerExceptionInterfac
|
|
| 23 |
/**
|
| 24 |
* @param string $message The exception message.
|
| 25 |
* @param int $code The exception code.
|
| 26 |
-
* @param Throwable|null $previous The inner exception, if any
|
| 27 |
-
* @param ContainerInterface|null $container The container that caused the exception, if any,
|
| 28 |
*/
|
| 29 |
public function __construct(
|
| 30 |
string $message = "",
|
| 31 |
int $code = 0,
|
| 32 |
-
Throwable $previous = null
|
| 33 |
-
ContainerInterface $container = null
|
| 34 |
) {
|
| 35 |
parent::__construct($message, $code, $previous);
|
| 36 |
-
$this->container = $container;
|
| 37 |
-
}
|
| 38 |
-
|
| 39 |
-
/**
|
| 40 |
-
* {@inheritDoc}
|
| 41 |
-
*/
|
| 42 |
-
public function getContainer()
|
| 43 |
-
{
|
| 44 |
-
return $this->container;
|
| 45 |
}
|
| 46 |
-
|
| 47 |
}
|
| 2 |
|
| 3 |
namespace Dhii\Container\Exception;
|
| 4 |
|
|
|
|
| 5 |
use Exception;
|
| 6 |
+
use Psr\Container\ContainerExceptionInterface;
|
| 7 |
use Psr\Container\ContainerInterface;
|
| 8 |
use Throwable;
|
| 9 |
|
| 14 |
*/
|
| 15 |
class ContainerException extends Exception implements ContainerExceptionInterface
|
| 16 |
{
|
|
|
|
| 17 |
/**
|
| 18 |
* @var ContainerInterface|null
|
| 19 |
*/
|
| 22 |
/**
|
| 23 |
* @param string $message The exception message.
|
| 24 |
* @param int $code The exception code.
|
| 25 |
+
* @param Throwable|null $previous The inner exception, if any.
|
|
|
|
| 26 |
*/
|
| 27 |
public function __construct(
|
| 28 |
string $message = "",
|
| 29 |
int $code = 0,
|
| 30 |
+
Throwable $previous = null
|
|
|
|
| 31 |
) {
|
| 32 |
parent::__construct($message, $code, $previous);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
}
|
|
|
|
| 34 |
}
|
vendor/dhii/containers/src/Exception/NotFoundException.php
CHANGED
|
@@ -2,8 +2,7 @@
|
|
| 2 |
|
| 3 |
namespace Dhii\Container\Exception;
|
| 4 |
|
| 5 |
-
use
|
| 6 |
-
use Psr\Container\ContainerInterface;
|
| 7 |
use Throwable;
|
| 8 |
|
| 9 |
class NotFoundException extends ContainerException implements NotFoundExceptionInterface
|
|
@@ -16,20 +15,8 @@ class NotFoundException extends ContainerException implements NotFoundExceptionI
|
|
| 16 |
public function __construct(
|
| 17 |
$message = '',
|
| 18 |
$code = 0,
|
| 19 |
-
Throwable $previous = null
|
| 20 |
-
ContainerInterface $container = null,
|
| 21 |
-
string $dataKey = null
|
| 22 |
) {
|
| 23 |
-
parent::__construct($message, $code, $previous
|
| 24 |
-
$this->dataKey = $dataKey;
|
| 25 |
}
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
/**
|
| 29 |
-
* {@inheritdoc
|
| 30 |
-
*/
|
| 31 |
-
public function getDataKey()
|
| 32 |
-
{
|
| 33 |
-
return $this->dataKey;
|
| 34 |
-
}
|
| 35 |
-
}
|
| 2 |
|
| 3 |
namespace Dhii\Container\Exception;
|
| 4 |
|
| 5 |
+
use Psr\Container\NotFoundExceptionInterface;
|
|
|
|
| 6 |
use Throwable;
|
| 7 |
|
| 8 |
class NotFoundException extends ContainerException implements NotFoundExceptionInterface
|
| 15 |
public function __construct(
|
| 16 |
$message = '',
|
| 17 |
$code = 0,
|
| 18 |
+
Throwable $previous = null
|
|
|
|
|
|
|
| 19 |
) {
|
| 20 |
+
parent::__construct($message, $code, $previous);
|
|
|
|
| 21 |
}
|
| 22 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/dhii/containers/src/HierarchyContainer.php
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
namespace Dhii\Container;
|
| 4 |
+
|
| 5 |
+
use Dhii\Collection\ContainerInterface;
|
| 6 |
+
use Dhii\Container\Exception\NotFoundException;
|
| 7 |
+
use stdClass;
|
| 8 |
+
|
| 9 |
+
/**
|
| 10 |
+
* A container implementation that provides access to hierarchical data in the form a container tree.
|
| 11 |
+
*
|
| 12 |
+
* This implementation dynamically transforms hierarchical data into a tree of containers, on-demand. The transformation
|
| 13 |
+
* is performed "in-place", converting internal array and object values into containers without producing a copy or
|
| 14 |
+
* internal cache, making this implementation very memory-friendly.
|
| 15 |
+
*
|
| 16 |
+
* **Example usage:**
|
| 17 |
+
*
|
| 18 |
+
* ```php
|
| 19 |
+
* $data = [
|
| 20 |
+
* 'config' => [
|
| 21 |
+
* 'db' => [
|
| 22 |
+
* 'host' => 'localhost',
|
| 23 |
+
* 'port' => 3306,
|
| 24 |
+
* ],
|
| 25 |
+
* ]
|
| 26 |
+
* ];
|
| 27 |
+
*
|
| 28 |
+
* $container = new HierarchicalContainer($data);
|
| 29 |
+
* $container->get('config')->get('db')->get('host'); // "localhost"
|
| 30 |
+
* ```
|
| 31 |
+
*
|
| 32 |
+
* @since [*next-version*]
|
| 33 |
+
* @see PathContainer For an implementation that compliments this one by allowing container trees to be accessed using
|
| 34 |
+
* path-like keys.
|
| 35 |
+
* @see SegmentingContainer For an implementation that achieves a similar effect but for flat hierarchies.
|
| 36 |
+
*/
|
| 37 |
+
class HierarchyContainer implements ContainerInterface
|
| 38 |
+
{
|
| 39 |
+
/**
|
| 40 |
+
* @since [*next-version*]
|
| 41 |
+
*
|
| 42 |
+
* @var array
|
| 43 |
+
*/
|
| 44 |
+
protected $data;
|
| 45 |
+
|
| 46 |
+
/**
|
| 47 |
+
* Constructor.
|
| 48 |
+
*
|
| 49 |
+
* @since [*next-version*]
|
| 50 |
+
*
|
| 51 |
+
* @param array $data The hierarchical data for which to create the container tree.
|
| 52 |
+
*/
|
| 53 |
+
public function __construct(array $data)
|
| 54 |
+
{
|
| 55 |
+
$this->data = $data;
|
| 56 |
+
}
|
| 57 |
+
|
| 58 |
+
/**
|
| 59 |
+
* @inheritDoc
|
| 60 |
+
*
|
| 61 |
+
* @since [*next-version*]
|
| 62 |
+
*/
|
| 63 |
+
public function get($key)
|
| 64 |
+
{
|
| 65 |
+
if (!array_key_exists($key, $this->data)) {
|
| 66 |
+
throw new NotFoundException("Key '{$key}' does not exist", 0, null, $this, $key);
|
| 67 |
+
}
|
| 68 |
+
|
| 69 |
+
$value = $this->data[$key];
|
| 70 |
+
|
| 71 |
+
if (is_array($value) || $value instanceof stdClass) {
|
| 72 |
+
$value = $this->data[$key] = new HierarchyContainer($value);
|
| 73 |
+
}
|
| 74 |
+
|
| 75 |
+
return $value;
|
| 76 |
+
}
|
| 77 |
+
|
| 78 |
+
/**
|
| 79 |
+
* @inheritDoc
|
| 80 |
+
*
|
| 81 |
+
* @since [*next-version*]
|
| 82 |
+
*/
|
| 83 |
+
public function has($key)
|
| 84 |
+
{
|
| 85 |
+
return array_key_exists($key, $this->data);
|
| 86 |
+
}
|
| 87 |
+
}
|
vendor/dhii/containers/src/MappingContainer.php
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
namespace Dhii\Container;
|
| 4 |
+
|
| 5 |
+
use Dhii\Collection\ContainerInterface;
|
| 6 |
+
use Dhii\Container\Util\StringTranslatingTrait;
|
| 7 |
+
use Psr\Container\ContainerInterface as PsrContainerInterface;
|
| 8 |
+
|
| 9 |
+
/**
|
| 10 |
+
* A container implementation that can map results from another container using a callback.
|
| 11 |
+
*
|
| 12 |
+
* **Example usage**:
|
| 13 |
+
*
|
| 14 |
+
* ```php
|
| 15 |
+
* $container = new Container([
|
| 16 |
+
* 'first' => 'Paul',
|
| 17 |
+
* 'second' => 'JC',
|
| 18 |
+
* 'third' => 'Alex',
|
| 19 |
+
* ]);
|
| 20 |
+
*
|
| 21 |
+
* $mContainer = new MappingContainer($container, function ($name) {
|
| 22 |
+
* return $name . ' Denton';
|
| 23 |
+
* });
|
| 24 |
+
*
|
| 25 |
+
* $mContainer->get('first'); // "Paul Denton"
|
| 26 |
+
* $mContainer->get('second'); // "JC Denton"
|
| 27 |
+
*
|
| 28 |
+
* // We don't talk about Alex
|
| 29 |
+
* ```
|
| 30 |
+
*
|
| 31 |
+
* @since [*next-version*]
|
| 32 |
+
*/
|
| 33 |
+
class MappingContainer implements ContainerInterface
|
| 34 |
+
{
|
| 35 |
+
/* @since [*next-version*] */
|
| 36 |
+
use StringTranslatingTrait;
|
| 37 |
+
|
| 38 |
+
/**
|
| 39 |
+
* @since [*next-version*]
|
| 40 |
+
*
|
| 41 |
+
* @var callable
|
| 42 |
+
*/
|
| 43 |
+
protected $callback;
|
| 44 |
+
|
| 45 |
+
/**
|
| 46 |
+
* @since [*next-version*]
|
| 47 |
+
*
|
| 48 |
+
* @var PsrContainerInterface
|
| 49 |
+
*/
|
| 50 |
+
protected $inner;
|
| 51 |
+
|
| 52 |
+
/**
|
| 53 |
+
* Constructor.
|
| 54 |
+
*
|
| 55 |
+
* @since [*next-version*]
|
| 56 |
+
*
|
| 57 |
+
* @param PsrContainerInterface|null $inner The container instance to decorate.
|
| 58 |
+
* @param callable $callback The callback to invoke on get. It will be passed 3 parameters:
|
| 59 |
+
* * The inner container's value for the key being fetched.
|
| 60 |
+
* * The key being fetched.
|
| 61 |
+
* * A reference to this container instance.
|
| 62 |
+
*/
|
| 63 |
+
public function __construct(PsrContainerInterface $inner, callable $callback)
|
| 64 |
+
{
|
| 65 |
+
$this->callback = $callback;
|
| 66 |
+
$this->inner = $inner;
|
| 67 |
+
}
|
| 68 |
+
|
| 69 |
+
/**
|
| 70 |
+
* @inheritdoc
|
| 71 |
+
*
|
| 72 |
+
* @since [*next-version*]
|
| 73 |
+
*/
|
| 74 |
+
public function get($key)
|
| 75 |
+
{
|
| 76 |
+
return ($this->callback)($this->inner->get($key), $key, $this);
|
| 77 |
+
}
|
| 78 |
+
|
| 79 |
+
/**
|
| 80 |
+
* @inheritdoc
|
| 81 |
+
*
|
| 82 |
+
* @since [*next-version*]
|
| 83 |
+
*/
|
| 84 |
+
public function has($key)
|
| 85 |
+
{
|
| 86 |
+
return $this->inner->has($key);
|
| 87 |
+
}
|
| 88 |
+
}
|
vendor/dhii/containers/src/MaskingContainer.php
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
namespace Dhii\Container;
|
| 4 |
+
|
| 5 |
+
use Dhii\Collection\ContainerInterface;
|
| 6 |
+
use Dhii\Container\Exception\NotFoundException;
|
| 7 |
+
use Dhii\Container\Util\StringTranslatingTrait;
|
| 8 |
+
use Psr\Container\ContainerInterface as PsrContainerInterface;
|
| 9 |
+
use function array_key_exists;
|
| 10 |
+
|
| 11 |
+
/**
|
| 12 |
+
* An implementation of a container that wraps around another to selectively expose or mask certain keys.
|
| 13 |
+
*
|
| 14 |
+
* @since [*next-version*]
|
| 15 |
+
*/
|
| 16 |
+
class MaskingContainer implements ContainerInterface
|
| 17 |
+
{
|
| 18 |
+
/* @since [*next-version*] */
|
| 19 |
+
use StringTranslatingTrait;
|
| 20 |
+
|
| 21 |
+
/**
|
| 22 |
+
* @var PsrContainerInterface
|
| 23 |
+
*/
|
| 24 |
+
protected $inner;
|
| 25 |
+
|
| 26 |
+
/**
|
| 27 |
+
* @var bool[]
|
| 28 |
+
*/
|
| 29 |
+
protected $mask;
|
| 30 |
+
|
| 31 |
+
/**
|
| 32 |
+
* @var bool
|
| 33 |
+
*/
|
| 34 |
+
protected $defMask;
|
| 35 |
+
|
| 36 |
+
/**
|
| 37 |
+
* Constructor.
|
| 38 |
+
*
|
| 39 |
+
* @since [*next-version*]
|
| 40 |
+
*
|
| 41 |
+
* @param PsrContainerInterface $inner The container whose entries to mask.
|
| 42 |
+
* @param bool $defaultMask The default mask. If true, all inner keys are exposed. If false, all
|
| 43 |
+
* inner keys are hidden. Any keys specified in the $mask parameter will
|
| 44 |
+
* naturally override this setting.
|
| 45 |
+
* @param bool[] $mask A mapping of keys to booleans, such that `true` exposes the mapped key
|
| 46 |
+
* and `false` hides the mapped key.
|
| 47 |
+
*/
|
| 48 |
+
public function __construct(PsrContainerInterface $inner, $defaultMask, array $mask)
|
| 49 |
+
{
|
| 50 |
+
$this->inner = $inner;
|
| 51 |
+
$this->defMask = $defaultMask;
|
| 52 |
+
$this->mask = $mask;
|
| 53 |
+
}
|
| 54 |
+
|
| 55 |
+
/**
|
| 56 |
+
* @inheritdoc
|
| 57 |
+
*
|
| 58 |
+
* @since [*next-version*]
|
| 59 |
+
*/
|
| 60 |
+
public function get($key)
|
| 61 |
+
{
|
| 62 |
+
if (!$this->isExposed($key)) {
|
| 63 |
+
throw new NotFoundException(
|
| 64 |
+
$this->__('Inner key "%1$s" is not exposed', [$key]),
|
| 65 |
+
0,
|
| 66 |
+
null,
|
| 67 |
+
$this,
|
| 68 |
+
$key
|
| 69 |
+
);
|
| 70 |
+
}
|
| 71 |
+
|
| 72 |
+
return $this->inner->get($key);
|
| 73 |
+
}
|
| 74 |
+
|
| 75 |
+
/**
|
| 76 |
+
* @inheritdoc
|
| 77 |
+
*
|
| 78 |
+
* @since [*next-version*]
|
| 79 |
+
*/
|
| 80 |
+
public function has($key)
|
| 81 |
+
{
|
| 82 |
+
return $this->isExposed($key) && $this->inner->has($key);
|
| 83 |
+
}
|
| 84 |
+
|
| 85 |
+
/**
|
| 86 |
+
* Checks if a key is exposed through the mask.
|
| 87 |
+
*
|
| 88 |
+
* @since [*next-version*]
|
| 89 |
+
*
|
| 90 |
+
* @param string $key The key to check.
|
| 91 |
+
*
|
| 92 |
+
* @return bool True if the key is exposed, false if the key is hidden.
|
| 93 |
+
*/
|
| 94 |
+
protected function isExposed($key)
|
| 95 |
+
{
|
| 96 |
+
return array_key_exists($key, $this->mask)
|
| 97 |
+
? $this->mask[$key] !== false
|
| 98 |
+
: $this->defMask;
|
| 99 |
+
}
|
| 100 |
+
}
|
vendor/dhii/containers/src/PathContainer.php
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
namespace Dhii\Container;
|
| 4 |
+
|
| 5 |
+
use Dhii\Collection\ContainerInterface;
|
| 6 |
+
use Dhii\Container\Exception\NotFoundException;
|
| 7 |
+
use Psr\Container\ContainerInterface as PsrContainerInterface;
|
| 8 |
+
use Psr\Container\NotFoundExceptionInterface;
|
| 9 |
+
|
| 10 |
+
/**
|
| 11 |
+
* A container implementation that decorates a hierarchy of {@link ContainerInterface} instances to allow path-like
|
| 12 |
+
* access to deep containers or data.
|
| 13 |
+
*
|
| 14 |
+
* **Example usage**
|
| 15 |
+
*
|
| 16 |
+
* Consider the below hierarchy of containers:
|
| 17 |
+
*
|
| 18 |
+
* ```php
|
| 19 |
+
* $container = new Container([
|
| 20 |
+
* 'config' => new Container([
|
| 21 |
+
* 'db' => new Container([
|
| 22 |
+
* 'host' => 'localhost',
|
| 23 |
+
* 'port' => 3306
|
| 24 |
+
* ])
|
| 25 |
+
* ])
|
| 26 |
+
* ]);
|
| 27 |
+
* ```
|
| 28 |
+
*
|
| 29 |
+
* A {@link PathContainer} can decorate the `$container` to substitute this:
|
| 30 |
+
*
|
| 31 |
+
* ```php
|
| 32 |
+
* $host = $container->get('config')->get('db')->get('port');
|
| 33 |
+
* ```
|
| 34 |
+
*
|
| 35 |
+
* With this:
|
| 36 |
+
*
|
| 37 |
+
* ```php
|
| 38 |
+
* $pContainer = new PathContainer($container, '.');
|
| 39 |
+
* $pContainer->get('config.db.port');
|
| 40 |
+
* ```
|
| 41 |
+
*
|
| 42 |
+
* Note that this implementation DOES NOT create containers for hierarchical _values_. Each segment in a given path
|
| 43 |
+
* must correspond to a child {@link ContainerInterface} instance.
|
| 44 |
+
*
|
| 45 |
+
* @since [*next-version*]
|
| 46 |
+
* @see SegmentingContainer For an implementation that achieves the opposite effect.
|
| 47 |
+
*/
|
| 48 |
+
class PathContainer implements ContainerInterface
|
| 49 |
+
{
|
| 50 |
+
/**
|
| 51 |
+
* @since [*next-version*]
|
| 52 |
+
*
|
| 53 |
+
* @var PsrContainerInterface
|
| 54 |
+
*/
|
| 55 |
+
protected $inner;
|
| 56 |
+
|
| 57 |
+
/**
|
| 58 |
+
* @since [*next-version*]
|
| 59 |
+
*
|
| 60 |
+
* @var string
|
| 61 |
+
*/
|
| 62 |
+
protected $delimiter;
|
| 63 |
+
|
| 64 |
+
/**
|
| 65 |
+
* Constructor.
|
| 66 |
+
*
|
| 67 |
+
* @since [*next-version*]
|
| 68 |
+
*
|
| 69 |
+
* @param PsrContainerInterface $inner The container instance to decorate.
|
| 70 |
+
* @param string $delimiter The path delimiter to use.
|
| 71 |
+
*/
|
| 72 |
+
public function __construct(PsrContainerInterface $inner, string $delimiter = '/')
|
| 73 |
+
{
|
| 74 |
+
$this->inner = $inner;
|
| 75 |
+
$this->delimiter = $delimiter;
|
| 76 |
+
}
|
| 77 |
+
|
| 78 |
+
/**
|
| 79 |
+
* @inheritDoc
|
| 80 |
+
*
|
| 81 |
+
* @since [*next-version*]
|
| 82 |
+
*/
|
| 83 |
+
public function get($key)
|
| 84 |
+
{
|
| 85 |
+
$tKey = (strpos($key, $this->delimiter) === 0)
|
| 86 |
+
? substr($key, strlen($this->delimiter))
|
| 87 |
+
: $key;
|
| 88 |
+
$path = array_filter(explode($this->delimiter, $tKey));
|
| 89 |
+
|
| 90 |
+
if (empty($path)) {
|
| 91 |
+
throw new NotFoundException("The path is empty");
|
| 92 |
+
}
|
| 93 |
+
|
| 94 |
+
$current = $this->inner;
|
| 95 |
+
$head = $path[0];
|
| 96 |
+
|
| 97 |
+
while (!empty($path)) {
|
| 98 |
+
if (!($current instanceof PsrContainerInterface)) {
|
| 99 |
+
$tail = implode($this->delimiter, $path);
|
| 100 |
+
throw new NotFoundException("Key '{$head}' does not exist at path '{$tail}'", 0, null, $this, $head);
|
| 101 |
+
}
|
| 102 |
+
|
| 103 |
+
$head = array_shift($path);
|
| 104 |
+
$current = $current->get($head);
|
| 105 |
+
}
|
| 106 |
+
|
| 107 |
+
return $current;
|
| 108 |
+
}
|
| 109 |
+
|
| 110 |
+
/**
|
| 111 |
+
* @inheritDoc
|
| 112 |
+
*
|
| 113 |
+
* @since [*next-version*]
|
| 114 |
+
*/
|
| 115 |
+
public function has($key)
|
| 116 |
+
{
|
| 117 |
+
try {
|
| 118 |
+
$this->get($key);
|
| 119 |
+
|
| 120 |
+
return true;
|
| 121 |
+
} catch (NotFoundExceptionInterface $exception) {
|
| 122 |
+
return false;
|
| 123 |
+
}
|
| 124 |
+
}
|
| 125 |
+
}
|
vendor/dhii/containers/src/PrefixingContainer.php
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
namespace Dhii\Container;
|
| 4 |
+
|
| 5 |
+
use Dhii\Collection\ContainerInterface;
|
| 6 |
+
use Dhii\Container\Exception\NotFoundException;
|
| 7 |
+
use Psr\Container\ContainerInterface as PsrContainerInterface;
|
| 8 |
+
use Psr\Container\NotFoundExceptionInterface;
|
| 9 |
+
|
| 10 |
+
/**
|
| 11 |
+
* A container implementation that wraps around an inner container and prefixes its keys, requiring consumers to
|
| 12 |
+
* include them when fetching or looking up data.
|
| 13 |
+
*
|
| 14 |
+
* @since [*next-version*]
|
| 15 |
+
*/
|
| 16 |
+
class PrefixingContainer implements ContainerInterface
|
| 17 |
+
{
|
| 18 |
+
/**
|
| 19 |
+
* @since [*next-version*]
|
| 20 |
+
*
|
| 21 |
+
* @var PsrContainerInterface
|
| 22 |
+
*/
|
| 23 |
+
protected $inner;
|
| 24 |
+
|
| 25 |
+
/**
|
| 26 |
+
* @since [*next-version*]
|
| 27 |
+
*
|
| 28 |
+
* @var string
|
| 29 |
+
*/
|
| 30 |
+
protected $prefix;
|
| 31 |
+
|
| 32 |
+
/**
|
| 33 |
+
* @since [*next-version*]
|
| 34 |
+
*
|
| 35 |
+
* @var bool
|
| 36 |
+
*/
|
| 37 |
+
protected $strict;
|
| 38 |
+
|
| 39 |
+
/**
|
| 40 |
+
* Constructor.
|
| 41 |
+
*
|
| 42 |
+
* @since [*next-version*]
|
| 43 |
+
*
|
| 44 |
+
* @param PsrContainerInterface $container The container whose keys to prefix.
|
| 45 |
+
* @param string $prefix The prefix to apply to the container's keys.
|
| 46 |
+
* @param bool $strict Whether or not to fallback to un-prefixed keys if a prefixed key does not
|
| 47 |
+
* exist in the inner container.
|
| 48 |
+
*/
|
| 49 |
+
public function __construct(PsrContainerInterface $container, string $prefix, bool $strict = true)
|
| 50 |
+
{
|
| 51 |
+
$this->inner = $container;
|
| 52 |
+
$this->prefix = $prefix;
|
| 53 |
+
$this->strict = $strict;
|
| 54 |
+
}
|
| 55 |
+
|
| 56 |
+
/**
|
| 57 |
+
* @inheritdoc
|
| 58 |
+
*
|
| 59 |
+
* @since [*next-version*]
|
| 60 |
+
*/
|
| 61 |
+
public function get($key)
|
| 62 |
+
{
|
| 63 |
+
if (!$this->isPrefixed($key) && $this->strict) {
|
| 64 |
+
throw new NotFoundException(sprintf('Key "%s" does not exist', $key), 0, null, $this, $key);
|
| 65 |
+
}
|
| 66 |
+
|
| 67 |
+
try {
|
| 68 |
+
return $this->inner->get($this->unprefix($key));
|
| 69 |
+
} catch (NotFoundExceptionInterface $nfException) {
|
| 70 |
+
if ($this->strict) {
|
| 71 |
+
throw $nfException;
|
| 72 |
+
}
|
| 73 |
+
}
|
| 74 |
+
|
| 75 |
+
return $this->inner->get($key);
|
| 76 |
+
}
|
| 77 |
+
|
| 78 |
+
/**
|
| 79 |
+
* @inheritdoc
|
| 80 |
+
*
|
| 81 |
+
* @since [*next-version*]
|
| 82 |
+
*/
|
| 83 |
+
public function has($key)
|
| 84 |
+
{
|
| 85 |
+
if (!$this->isPrefixed($key) && $this->strict) {
|
| 86 |
+
return false;
|
| 87 |
+
}
|
| 88 |
+
|
| 89 |
+
return $this->inner->has($this->unprefix($key)) || (!$this->strict && $this->inner->has($key));
|
| 90 |
+
}
|
| 91 |
+
|
| 92 |
+
/**
|
| 93 |
+
* Retrieves the key to use for the inner container.
|
| 94 |
+
*
|
| 95 |
+
* @since [*next-version*]
|
| 96 |
+
*
|
| 97 |
+
* @param string $key The outer key.
|
| 98 |
+
*
|
| 99 |
+
* @return string The inner key.
|
| 100 |
+
*/
|
| 101 |
+
protected function unprefix($key)
|
| 102 |
+
{
|
| 103 |
+
return $this->isPrefixed($key)
|
| 104 |
+
? substr($key, strlen($this->prefix))
|
| 105 |
+
: $key;
|
| 106 |
+
}
|
| 107 |
+
|
| 108 |
+
/**
|
| 109 |
+
* Checks if the key is prefixed.
|
| 110 |
+
*
|
| 111 |
+
* @since [*next-version*]
|
| 112 |
+
*
|
| 113 |
+
* @param string $key The key to check.
|
| 114 |
+
*
|
| 115 |
+
* @return bool True if the key is prefixed, false if not.
|
| 116 |
+
*/
|
| 117 |
+
protected function isPrefixed($key)
|
| 118 |
+
{
|
| 119 |
+
return strlen($this->prefix) > 0 && strpos($key, $this->prefix) === 0;
|
| 120 |
+
}
|
| 121 |
+
}
|
vendor/dhii/containers/src/SegmentingContainer.php
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
namespace Dhii\Container;
|
| 4 |
+
|
| 5 |
+
use Dhii\Collection\ContainerInterface;
|
| 6 |
+
use Psr\Container\ContainerInterface as PsrContainerInterface;
|
| 7 |
+
use function array_filter;
|
| 8 |
+
use function ltrim;
|
| 9 |
+
|
| 10 |
+
/**
|
| 11 |
+
* This container implementation decorates another to provide nested container access even when the decorated
|
| 12 |
+
* container's internal data is flat.
|
| 13 |
+
*
|
| 14 |
+
* Segmenting containers are intended to be used with keys that contain segments, i.e. keys that use a delimiter to
|
| 15 |
+
* indicate hierarchy. For example: "some/test/key" or "some.deep.config.value". The delimiter can be configured during
|
| 16 |
+
* construction of a segmenting container.
|
| 17 |
+
*
|
| 18 |
+
* A segmenting container can yield 2 different kinds of results when {@link SegmentingContainer::get()} is called:
|
| 19 |
+
*
|
| 20 |
+
* **Values**
|
| 21 |
+
*
|
| 22 |
+
* If the inner container has a value for the given key, that value is returned.
|
| 23 |
+
*
|
| 24 |
+
* **Segments**
|
| 25 |
+
*
|
| 26 |
+
* If the inner container has no value for the given key, a new {@link SegmentingContainer} instance is returned. This
|
| 27 |
+
* segmenting container will be aware of the key that resulted in its creation, and will automatically prepend that key
|
| 28 |
+
* to parameter keys given in `get()`.
|
| 29 |
+
*
|
| 30 |
+
* **Example usage:**
|
| 31 |
+
*
|
| 32 |
+
* Consider the below data and a regular `$container` that provides access to it:
|
| 33 |
+
*
|
| 34 |
+
* ```php
|
| 35 |
+
* $data = [
|
| 36 |
+
* 'config.db.host' => 'localhost',
|
| 37 |
+
* 'config.db.post' => '3306',
|
| 38 |
+
* ];
|
| 39 |
+
* ```
|
| 40 |
+
*
|
| 41 |
+
* A segmenting container can be created that provides access to the "host" and "port":
|
| 42 |
+
*
|
| 43 |
+
* ```php
|
| 44 |
+
* $segmented = new SegmentingContainer($container, '.');
|
| 45 |
+
* $dbConfig = $config->get('config')->get('db');
|
| 46 |
+
* $dbConfig->get("host"); // "localhost"
|
| 47 |
+
* $dbConfig->get("port"); // 3306
|
| 48 |
+
* ```
|
| 49 |
+
*
|
| 50 |
+
* @since [*next-version*]
|
| 51 |
+
* @see PathContainer For an implementation that achieves the opposite effect.
|
| 52 |
+
*/
|
| 53 |
+
class SegmentingContainer implements ContainerInterface
|
| 54 |
+
{
|
| 55 |
+
/**
|
| 56 |
+
* @var PsrContainerInterface
|
| 57 |
+
*/
|
| 58 |
+
protected $inner;
|
| 59 |
+
|
| 60 |
+
/**
|
| 61 |
+
* @var string
|
| 62 |
+
*/
|
| 63 |
+
protected $root;
|
| 64 |
+
|
| 65 |
+
/**
|
| 66 |
+
* @var string
|
| 67 |
+
*/
|
| 68 |
+
protected $delimiter;
|
| 69 |
+
|
| 70 |
+
/**
|
| 71 |
+
* Constructor.
|
| 72 |
+
*
|
| 73 |
+
* @since [*next-version*]
|
| 74 |
+
*
|
| 75 |
+
* @param PsrContainerInterface $inner The container to decorate.
|
| 76 |
+
* @param string $delimiter The path delimiter.
|
| 77 |
+
*/
|
| 78 |
+
public function __construct($inner, $delimiter = '/')
|
| 79 |
+
{
|
| 80 |
+
$this->inner = $inner;
|
| 81 |
+
$this->root = '';
|
| 82 |
+
$this->delimiter = $delimiter;
|
| 83 |
+
}
|
| 84 |
+
|
| 85 |
+
/**
|
| 86 |
+
* @inheritdoc
|
| 87 |
+
*
|
| 88 |
+
* @since [*next-version*]
|
| 89 |
+
*/
|
| 90 |
+
public function get($key)
|
| 91 |
+
{
|
| 92 |
+
$tKey = ltrim($key, $this->delimiter);
|
| 93 |
+
$tRoot = rtrim($this->root, $this->delimiter);
|
| 94 |
+
// Implode to glue together the key and root, and array_filter to ignore them if they're empty
|
| 95 |
+
$fullKey = implode($this->delimiter, array_filter([$tRoot, $tKey]));
|
| 96 |
+
|
| 97 |
+
if ($this->inner->has($fullKey)) {
|
| 98 |
+
return $this->inner->get($fullKey);
|
| 99 |
+
}
|
| 100 |
+
|
| 101 |
+
$instance = clone $this;
|
| 102 |
+
$instance->root = $fullKey;
|
| 103 |
+
|
| 104 |
+
return $instance;
|
| 105 |
+
}
|
| 106 |
+
|
| 107 |
+
/**
|
| 108 |
+
* @inheritdoc
|
| 109 |
+
*
|
| 110 |
+
* @since [*next-version*]
|
| 111 |
+
*/
|
| 112 |
+
public function has($key)
|
| 113 |
+
{
|
| 114 |
+
return $this->inner->has($key);
|
| 115 |
+
}
|
| 116 |
+
}
|
vendor/dhii/containers/test/functional/CompositeCachingServiceProviderTest.php
DELETED
|
@@ -1,119 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
|
| 3 |
-
namespace Dhii\Container\FuncTest;
|
| 4 |
-
|
| 5 |
-
use Dhii\Container\CompositeCachingServiceProvider as TestSubject;
|
| 6 |
-
use Dhii\Container\TestHelpers\ComponentMockeryTrait;
|
| 7 |
-
use Exception;
|
| 8 |
-
use Interop\Container\ServiceProviderInterface;
|
| 9 |
-
use PHPUnit\Framework\TestCase;
|
| 10 |
-
|
| 11 |
-
class CompositeCachingServiceProviderTest extends TestCase
|
| 12 |
-
{
|
| 13 |
-
use ComponentMockeryTrait;
|
| 14 |
-
|
| 15 |
-
/**
|
| 16 |
-
* @param ServiceProviderInterface[] $providers
|
| 17 |
-
*
|
| 18 |
-
* @return TestSubject
|
| 19 |
-
*/
|
| 20 |
-
public function createSubject(array $providers)
|
| 21 |
-
{
|
| 22 |
-
return new TestSubject($providers);
|
| 23 |
-
}
|
| 24 |
-
|
| 25 |
-
/**
|
| 26 |
-
* Tests that `getFactories()` returns factories correctly overridden.
|
| 27 |
-
*
|
| 28 |
-
* @throws Exception If problem testing.
|
| 29 |
-
*/
|
| 30 |
-
public function testGetFactories()
|
| 31 |
-
{
|
| 32 |
-
{
|
| 33 |
-
$srv1 = uniqid('srv1');
|
| 34 |
-
$f1 = function () use ($srv1) { return $srv1; };
|
| 35 |
-
$srv2 = uniqid('srv2');
|
| 36 |
-
$f2 = function () use ($srv2) { return $srv2; };
|
| 37 |
-
$srv3 = uniqid('srv3');
|
| 38 |
-
$f3 = function () use ($srv3) { return $srv3; };
|
| 39 |
-
$srv4 = uniqid('srv4');
|
| 40 |
-
$f4 = function () use ($srv4) { return $srv4; };
|
| 41 |
-
|
| 42 |
-
$provider1 = $this->createServiceProvider([
|
| 43 |
-
'one' => $f1,
|
| 44 |
-
'two' => $f2,
|
| 45 |
-
],[]);
|
| 46 |
-
$provider2 = $this->createServiceProvider([
|
| 47 |
-
'two' => $f3,
|
| 48 |
-
'three' => $f4,
|
| 49 |
-
],[]);
|
| 50 |
-
|
| 51 |
-
$subject = $this->createSubject([$provider1, $provider2]);
|
| 52 |
-
}
|
| 53 |
-
|
| 54 |
-
{
|
| 55 |
-
$result = $subject->getFactories();
|
| 56 |
-
}
|
| 57 |
-
|
| 58 |
-
{
|
| 59 |
-
$this->assertCount(3, $result, 'Wrong number of factories');
|
| 60 |
-
$this->assertArrayHasKey('one', $result, 'Factory missing');
|
| 61 |
-
$this->assertArrayHasKey('two', $result, 'Factory missing');
|
| 62 |
-
$this->assertArrayHasKey('three', $result, 'Factory missing');
|
| 63 |
-
|
| 64 |
-
$this->assertEquals($srv1, $result['one'](), 'Wrong factory');
|
| 65 |
-
$this->assertEquals($srv3, $result['two'](), 'Wrong factory');
|
| 66 |
-
$this->assertEquals($srv4, $result['three'](), 'Wrong factory');
|
| 67 |
-
}
|
| 68 |
-
}
|
| 69 |
-
|
| 70 |
-
/**
|
| 71 |
-
* Tests that `getExtensions()` returns extensions correctly nested.
|
| 72 |
-
*
|
| 73 |
-
* @throws Exception If problem testing.
|
| 74 |
-
*/
|
| 75 |
-
public function testGetExtensions()
|
| 76 |
-
{
|
| 77 |
-
{
|
| 78 |
-
$combination = function (string $a, string $b) {
|
| 79 |
-
return sprintf('%1$s-%2$s', $a, $b);
|
| 80 |
-
};
|
| 81 |
-
$srv1 = uniqid('srv1');
|
| 82 |
-
$f1 = function () use ($srv1) { return $srv1; };
|
| 83 |
-
$srv2 = uniqid('srv2');
|
| 84 |
-
$f2 = function () use ($srv2) { return $srv2; };
|
| 85 |
-
$srv3 = uniqid('srv3');
|
| 86 |
-
$f3 = function ($container, $previous) use ($srv3, $combination) { return $combination($previous, $srv3); };
|
| 87 |
-
$srv4 = uniqid('srv4');
|
| 88 |
-
$f4 = function () use ($srv4) { return $srv4; };
|
| 89 |
-
|
| 90 |
-
$provider1 = $this->createServiceProvider([], [
|
| 91 |
-
'one' => $f1,
|
| 92 |
-
'two' => $f2,
|
| 93 |
-
]);
|
| 94 |
-
$provider2 = $this->createServiceProvider([], [
|
| 95 |
-
'two' => $f3,
|
| 96 |
-
'three' => $f4,
|
| 97 |
-
]);
|
| 98 |
-
|
| 99 |
-
$container = $this->createContainer([]);
|
| 100 |
-
|
| 101 |
-
$subject = $this->createSubject([$provider1, $provider2]);
|
| 102 |
-
}
|
| 103 |
-
|
| 104 |
-
{
|
| 105 |
-
$result = $subject->getExtensions();
|
| 106 |
-
}
|
| 107 |
-
|
| 108 |
-
{
|
| 109 |
-
$this->assertCount(3, $result, 'Wrong number of factories');
|
| 110 |
-
$this->assertArrayHasKey('one', $result, 'Factory missing');
|
| 111 |
-
$this->assertArrayHasKey('two', $result, 'Factory missing');
|
| 112 |
-
$this->assertArrayHasKey('three', $result, 'Factory missing');
|
| 113 |
-
|
| 114 |
-
$this->assertEquals($srv1, $result['one']($container, $srv1), 'Wrong factory');
|
| 115 |
-
$this->assertEquals($combination($srv2, $srv3), $result['two']($container, $srv2), 'Wrong factory');
|
| 116 |
-
$this->assertEquals($srv4, $result['three']($container, $srv4), 'Wrong factory');
|
| 117 |
-
}
|
| 118 |
-
}
|
| 119 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/dhii/containers/test/functional/DelegatingContainerTest.php
DELETED
|
@@ -1,109 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
|
| 3 |
-
namespace Dhii\Container\FuncTest;
|
| 4 |
-
|
| 5 |
-
use Dhii\Container\DelegatingContainer as TestSubject;
|
| 6 |
-
use Dhii\Container\TestHelpers\ComponentMockeryTrait;
|
| 7 |
-
use Exception;
|
| 8 |
-
use PHPUnit\Framework\MockObject\MockObject;
|
| 9 |
-
use PHPUnit\Framework\TestCase;
|
| 10 |
-
use Psr\Container\ContainerInterface;
|
| 11 |
-
|
| 12 |
-
class DelegatingContainerTest extends TestCase
|
| 13 |
-
{
|
| 14 |
-
use ComponentMockeryTrait;
|
| 15 |
-
|
| 16 |
-
/**
|
| 17 |
-
* Creates a new instance of the test subject.
|
| 18 |
-
*
|
| 19 |
-
* @param array $dependencies A list of constructor args.
|
| 20 |
-
* @param array|null $methods The names of methods to mock in the subject.
|
| 21 |
-
* @return MockObject|TestSubject The new instance.
|
| 22 |
-
* @throws Exception If problem creating.
|
| 23 |
-
*/
|
| 24 |
-
protected function createSubject(array $dependencies = [], array $methods = null)
|
| 25 |
-
{
|
| 26 |
-
return $this->createMockBuilder(TestSubject::class, $methods, $dependencies)
|
| 27 |
-
->getMock();
|
| 28 |
-
}
|
| 29 |
-
|
| 30 |
-
/**
|
| 31 |
-
* Tests that the subject is able to retrieve an extended service.
|
| 32 |
-
*
|
| 33 |
-
* The service definition and extension must both receive the parent container.
|
| 34 |
-
*
|
| 35 |
-
* @throws Exception If problem testing.
|
| 36 |
-
*/
|
| 37 |
-
public function testGet()
|
| 38 |
-
{
|
| 39 |
-
{
|
| 40 |
-
$serviceName = uniqid('service');
|
| 41 |
-
$parent = $this->createContainer([]);
|
| 42 |
-
$service = 1;
|
| 43 |
-
$definition = $this->createCallable(function (ContainerInterface $container) use ($service) {
|
| 44 |
-
return $service;
|
| 45 |
-
});
|
| 46 |
-
$extension = $this->createCallable(function (ContainerInterface $container, $previous) {
|
| 47 |
-
return $previous + 1;
|
| 48 |
-
});
|
| 49 |
-
$provider = $this->createServiceProvider([
|
| 50 |
-
$serviceName => $definition,
|
| 51 |
-
], [
|
| 52 |
-
$serviceName => $extension,
|
| 53 |
-
]);
|
| 54 |
-
$subject = $this->createSubject([$provider, $parent]);
|
| 55 |
-
|
| 56 |
-
$definition->expects($this->exactly(1))
|
| 57 |
-
->method('__invoke')
|
| 58 |
-
->with($parent);
|
| 59 |
-
$extension->expects($this->exactly(1))
|
| 60 |
-
->method('__invoke')
|
| 61 |
-
->with($parent, $service);
|
| 62 |
-
}
|
| 63 |
-
|
| 64 |
-
{
|
| 65 |
-
$result = $subject->get($serviceName);
|
| 66 |
-
}
|
| 67 |
-
|
| 68 |
-
{
|
| 69 |
-
$this->assertEquals(2, $result, 'Wrong result retrieved');
|
| 70 |
-
}
|
| 71 |
-
}
|
| 72 |
-
|
| 73 |
-
public function testHasTrue()
|
| 74 |
-
{
|
| 75 |
-
{
|
| 76 |
-
$serviceName = uniqid('service');
|
| 77 |
-
$provider = $this->createServiceProvider([
|
| 78 |
-
$serviceName => function (ContainerInterface $container) {
|
| 79 |
-
return 1;
|
| 80 |
-
}
|
| 81 |
-
], []);
|
| 82 |
-
$subject = $this->createSubject([$provider]);
|
| 83 |
-
}
|
| 84 |
-
|
| 85 |
-
{
|
| 86 |
-
$result = $subject->has($serviceName);
|
| 87 |
-
}
|
| 88 |
-
|
| 89 |
-
{
|
| 90 |
-
$this->assertTrue($result, 'Wrongly determined having');
|
| 91 |
-
}
|
| 92 |
-
}
|
| 93 |
-
|
| 94 |
-
public function testHasFalse()
|
| 95 |
-
{
|
| 96 |
-
{
|
| 97 |
-
$provider = $this->createServiceProvider([], []);
|
| 98 |
-
$subject = $this->createSubject([$provider]);
|
| 99 |
-
}
|
| 100 |
-
|
| 101 |
-
{
|
| 102 |
-
$result = $subject->has(uniqid('service'));
|
| 103 |
-
}
|
| 104 |
-
|
| 105 |
-
{
|
| 106 |
-
$this->assertFalse($result, 'Wrongly determined not having');
|
| 107 |
-
}
|
| 108 |
-
}
|
| 109 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/dhii/containers/test/functional/Dhii/Container/FuncTest/CachingContainerTest.php
DELETED
|
@@ -1,88 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
|
| 3 |
-
namespace Dhii\Container\FuncTest;
|
| 4 |
-
|
| 5 |
-
use Dhii\Container\CachingContainer as TestSubject;
|
| 6 |
-
use Dhii\Container\TestHelpers\ComponentMockeryTrait;
|
| 7 |
-
use Exception;
|
| 8 |
-
use PHPUnit\Framework\MockObject\MockObject;
|
| 9 |
-
use PHPUnit\Framework\TestCase;
|
| 10 |
-
|
| 11 |
-
class CachingContainerTest extends TestCase
|
| 12 |
-
{
|
| 13 |
-
use ComponentMockeryTrait;
|
| 14 |
-
|
| 15 |
-
/**
|
| 16 |
-
* Creates a new instance of the test subject.
|
| 17 |
-
*
|
| 18 |
-
* @param array $dependencies A list of constructor args.
|
| 19 |
-
* @param array|null $methods The names of methods to mock in the subject.
|
| 20 |
-
* @return MockObject|TestSubject The new instance.
|
| 21 |
-
* @throws Exception If problem creating.
|
| 22 |
-
*/
|
| 23 |
-
protected function createSubject(array $dependencies, array $methods = null)
|
| 24 |
-
{
|
| 25 |
-
return $this->createMockBuilder(TestSubject::class, $methods, $dependencies)
|
| 26 |
-
->getMock();
|
| 27 |
-
}
|
| 28 |
-
|
| 29 |
-
/**
|
| 30 |
-
* Tests that the subject can correctly retrieve a value from the inner container.
|
| 31 |
-
*
|
| 32 |
-
* The value must be the _same thing_ no matter how many times it is retrieved.
|
| 33 |
-
* The subject must only ask the inner container once for the value.
|
| 34 |
-
*
|
| 35 |
-
* @throws Exception If problem testing.
|
| 36 |
-
*/
|
| 37 |
-
public function testGet()
|
| 38 |
-
{
|
| 39 |
-
{
|
| 40 |
-
$key = uniqid('key');
|
| 41 |
-
$value = (object) [];
|
| 42 |
-
$container = $this->createContainer([
|
| 43 |
-
$key => $value,
|
| 44 |
-
]);
|
| 45 |
-
$subject = $this->createSubject([$container]);
|
| 46 |
-
|
| 47 |
-
$container->expects($this->exactly(1))
|
| 48 |
-
->method('get')
|
| 49 |
-
->with($key);
|
| 50 |
-
}
|
| 51 |
-
|
| 52 |
-
{
|
| 53 |
-
$operations = rand(2, 9);
|
| 54 |
-
$result = null;
|
| 55 |
-
|
| 56 |
-
for ($i = 0; $i < $operations; $i++) {
|
| 57 |
-
$result = $subject->get($key);
|
| 58 |
-
}
|
| 59 |
-
}
|
| 60 |
-
|
| 61 |
-
{
|
| 62 |
-
$this->assertSame($value, $result, 'Wrong value retrieved');
|
| 63 |
-
}
|
| 64 |
-
}
|
| 65 |
-
|
| 66 |
-
/**
|
| 67 |
-
* Tests that the subject correctly determines having keys.
|
| 68 |
-
*
|
| 69 |
-
* Subject must report having a key only if the inner container has that key.
|
| 70 |
-
*
|
| 71 |
-
* @depends testGet
|
| 72 |
-
*/
|
| 73 |
-
public function testHas()
|
| 74 |
-
{
|
| 75 |
-
{
|
| 76 |
-
$key = uniqid('key');
|
| 77 |
-
$container = $this->createContainer([
|
| 78 |
-
$key => uniqid('value'),
|
| 79 |
-
]);
|
| 80 |
-
$subject = $this->createSubject([$container]);
|
| 81 |
-
}
|
| 82 |
-
|
| 83 |
-
{
|
| 84 |
-
$this->assertTrue($subject->has($key), 'Wrong determined having');
|
| 85 |
-
$this->assertFalse($subject->has(uniqid('non-existing-key')), 'Wrong determined not having');
|
| 86 |
-
}
|
| 87 |
-
}
|
| 88 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/dhii/containers/test/functional/Dhii/Container/FuncTest/CompositeContainerTest.php
DELETED
|
@@ -1,130 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
|
| 3 |
-
namespace Dhii\Container\FuncTest;
|
| 4 |
-
|
| 5 |
-
use Dhii\Container\CompositeContainer as TestSubject;
|
| 6 |
-
use Dhii\Container\TestHelpers\ComponentMockeryTrait;
|
| 7 |
-
use Exception;
|
| 8 |
-
use PHPUnit\Framework\MockObject\MockObject;
|
| 9 |
-
use PHPUnit\Framework\TestCase;
|
| 10 |
-
|
| 11 |
-
class CompositeContainerTest extends TestCase
|
| 12 |
-
{
|
| 13 |
-
use ComponentMockeryTrait;
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
/**
|
| 17 |
-
* Creates a new instance of the test subject.
|
| 18 |
-
*
|
| 19 |
-
* @param array $dependencies A list of constructor args.
|
| 20 |
-
* @param array|null $methods The names of methods to mock in the subject.
|
| 21 |
-
* @return MockObject|TestSubject The new instance.
|
| 22 |
-
* @throws Exception If problem creating.
|
| 23 |
-
*/
|
| 24 |
-
protected function createSubject(array $dependencies, array $methods = null)
|
| 25 |
-
{
|
| 26 |
-
return $this->createMockBuilder(TestSubject::class, $methods, $dependencies)
|
| 27 |
-
->getMock();
|
| 28 |
-
}
|
| 29 |
-
|
| 30 |
-
/**
|
| 31 |
-
* Tests if subject can correctly retrieve a value by key from a list of containers.
|
| 32 |
-
*
|
| 33 |
-
* @throws Exception If problem testing.
|
| 34 |
-
*/
|
| 35 |
-
public function testGet()
|
| 36 |
-
{
|
| 37 |
-
{
|
| 38 |
-
$key = uniqid('key');
|
| 39 |
-
$value = uniqid('value');
|
| 40 |
-
$containers = [
|
| 41 |
-
$this->createContainer([
|
| 42 |
-
|
| 43 |
-
]),
|
| 44 |
-
$this->createContainer([
|
| 45 |
-
uniqid('service1') => uniqid('value'),
|
| 46 |
-
]),
|
| 47 |
-
$this->createContainer([
|
| 48 |
-
uniqid('service2') => uniqid('value'),
|
| 49 |
-
$key => $value,
|
| 50 |
-
uniqid('service3') => uniqid('value'),
|
| 51 |
-
]),
|
| 52 |
-
];
|
| 53 |
-
$subject = $this->createSubject([$containers]);
|
| 54 |
-
}
|
| 55 |
-
|
| 56 |
-
{
|
| 57 |
-
$result = $subject->get($key);
|
| 58 |
-
}
|
| 59 |
-
|
| 60 |
-
{
|
| 61 |
-
$this->assertEquals($value, $result, 'Wrong value retrieved');
|
| 62 |
-
}
|
| 63 |
-
}
|
| 64 |
-
|
| 65 |
-
/**
|
| 66 |
-
* Tests that the subject can correctly determine having an existing key.
|
| 67 |
-
*
|
| 68 |
-
* @throws Exception If problem testing.
|
| 69 |
-
*/
|
| 70 |
-
public function testHasTrue()
|
| 71 |
-
{
|
| 72 |
-
{
|
| 73 |
-
$key = uniqid('key');
|
| 74 |
-
$containers = [
|
| 75 |
-
$this->createContainer([
|
| 76 |
-
|
| 77 |
-
]),
|
| 78 |
-
$this->createContainer([
|
| 79 |
-
uniqid('service1') => uniqid('value'),
|
| 80 |
-
]),
|
| 81 |
-
$this->createContainer([
|
| 82 |
-
uniqid('service2') => uniqid('value'),
|
| 83 |
-
$key => uniqid('value'),
|
| 84 |
-
uniqid('service3') => uniqid('value'),
|
| 85 |
-
]),
|
| 86 |
-
];
|
| 87 |
-
$subject = $this->createSubject([$containers]);
|
| 88 |
-
}
|
| 89 |
-
|
| 90 |
-
{
|
| 91 |
-
$result = $subject->has($key);
|
| 92 |
-
}
|
| 93 |
-
|
| 94 |
-
{
|
| 95 |
-
$this->assertTrue($result, 'Incorrectly determined having');
|
| 96 |
-
}
|
| 97 |
-
}
|
| 98 |
-
|
| 99 |
-
/**
|
| 100 |
-
* Tests that the subject can correctly determine not having a non-existing key.
|
| 101 |
-
*
|
| 102 |
-
* @throws Exception If problem testing.
|
| 103 |
-
*/
|
| 104 |
-
public function testHasFalse()
|
| 105 |
-
{
|
| 106 |
-
{
|
| 107 |
-
$containers = [
|
| 108 |
-
$this->createContainer([
|
| 109 |
-
|
| 110 |
-
]),
|
| 111 |
-
$this->createContainer([
|
| 112 |
-
uniqid('service1') => uniqid('value'),
|
| 113 |
-
]),
|
| 114 |
-
$this->createContainer([
|
| 115 |
-
uniqid('service2') => uniqid('value'),
|
| 116 |
-
uniqid('service3') => uniqid('value'),
|
| 117 |
-
]),
|
| 118 |
-
];
|
| 119 |
-
$subject = $this->createSubject([$containers]);
|
| 120 |
-
}
|
| 121 |
-
|
| 122 |
-
{
|
| 123 |
-
$result = $subject->has(uniqid('non-existing-service'));
|
| 124 |
-
}
|
| 125 |
-
|
| 126 |
-
{
|
| 127 |
-
$this->assertFalse($result, 'Incorrectly determined not having');
|
| 128 |
-
}
|
| 129 |
-
}
|
| 130 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/dhii/containers/test/functional/Exception/ContainerExceptionTest.php
DELETED
|
@@ -1,63 +0,0 @@
|
|
| 1 |
-
<?php declare(strict_types = 1);
|
| 2 |
-
|
| 3 |
-
namespace Dhii\Di\FuncTest\Exception;
|
| 4 |
-
|
| 5 |
-
use Dhii\Container\Exception\ContainerException as TestSubject;
|
| 6 |
-
use Dhii\Container\TestHelpers\ComponentMockeryTrait;
|
| 7 |
-
use Exception;
|
| 8 |
-
use PHPUnit\Framework\MockObject\MockObject;
|
| 9 |
-
use PHPUnit\Framework\TestCase;
|
| 10 |
-
|
| 11 |
-
/**
|
| 12 |
-
* Tests {@see TestSubject}.
|
| 13 |
-
*
|
| 14 |
-
* @package Dhii\Wp\Containers
|
| 15 |
-
*/
|
| 16 |
-
class ContainerExceptionTest extends TestCase
|
| 17 |
-
{
|
| 18 |
-
|
| 19 |
-
use ComponentMockeryTrait;
|
| 20 |
-
|
| 21 |
-
/**
|
| 22 |
-
* Creates a new instance of the test subject.
|
| 23 |
-
*
|
| 24 |
-
* @param array $dependencies A list of constructor args.
|
| 25 |
-
* @param array|null $methods The names of methods to mock in the subject.
|
| 26 |
-
* @return MockObject|TestSubject The new instance.
|
| 27 |
-
* @throws Exception If problem creating.
|
| 28 |
-
*/
|
| 29 |
-
protected function createSubject(array $dependencies, $methods = null)
|
| 30 |
-
{
|
| 31 |
-
return $this->createMockBuilder(TestSubject::class, $methods, $dependencies)
|
| 32 |
-
->getMock();
|
| 33 |
-
}
|
| 34 |
-
|
| 35 |
-
/**
|
| 36 |
-
* Tests that the instance is created correctly, and getters work as expected.`
|
| 37 |
-
*
|
| 38 |
-
* @throws Exception If problem testing.
|
| 39 |
-
*/
|
| 40 |
-
public function testConstructorAndGetContainer()
|
| 41 |
-
{
|
| 42 |
-
{
|
| 43 |
-
$message = uniqid('message');
|
| 44 |
-
$code = rand(1, 99);
|
| 45 |
-
$prev = new Exception(uniqid('inner-message'));
|
| 46 |
-
$container = $this->createContainer([]);
|
| 47 |
-
|
| 48 |
-
$subject = $this->createSubject([$message, $code, $prev, $container], null);
|
| 49 |
-
}
|
| 50 |
-
|
| 51 |
-
{
|
| 52 |
-
try {
|
| 53 |
-
throw $subject;
|
| 54 |
-
} catch (TestSubject $e) {
|
| 55 |
-
$this->assertSame($message, $e->getMessage(), 'Wrong message');
|
| 56 |
-
$this->assertSame($code, $e->getCode(), 'Wrong code');
|
| 57 |
-
$this->assertSame($prev, $e->getPrevious(), 'Wrong previous exception');
|
| 58 |
-
$this->assertSame($container, $e->getContainer(), 'Wrong container');
|
| 59 |
-
}
|
| 60 |
-
}
|
| 61 |
-
}
|
| 62 |
-
|
| 63 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/dhii/containers/test/functional/Exception/NotFoundExceptionTest.php
DELETED
|
@@ -1,63 +0,0 @@
|
|
| 1 |
-
<?php declare(strict_types = 1);
|
| 2 |
-
|
| 3 |
-
namespace Dhii\Di\FuncTest\Exception;
|
| 4 |
-
|
| 5 |
-
use Dhii\Container\Exception\NotFoundException as TestSubject;
|
| 6 |
-
use Dhii\Container\TestHelpers\ComponentMockeryTrait;
|
| 7 |
-
use Exception;
|
| 8 |
-
use PHPUnit\Framework\TestCase;
|
| 9 |
-
|
| 10 |
-
/**
|
| 11 |
-
* Tests {@see TestSubject}.
|
| 12 |
-
*
|
| 13 |
-
* @package Dhii\Wp\Containers
|
| 14 |
-
*/
|
| 15 |
-
class NotFoundExceptionTest extends TestCase
|
| 16 |
-
{
|
| 17 |
-
|
| 18 |
-
use ComponentMockeryTrait;
|
| 19 |
-
|
| 20 |
-
/**
|
| 21 |
-
* Creates a new instance of the test subject.
|
| 22 |
-
*
|
| 23 |
-
* @param array $dependencies A list of constructor args.
|
| 24 |
-
* @return MockObject|TestSubject The new instance.
|
| 25 |
-
* @throws Exception If problem creating.
|
| 26 |
-
*/
|
| 27 |
-
protected function createSubject(array $dependencies, array $methods = null)
|
| 28 |
-
{
|
| 29 |
-
return $this->createMockBuilder(TestSubject::class, $methods, $dependencies)
|
| 30 |
-
->getMock();
|
| 31 |
-
}
|
| 32 |
-
|
| 33 |
-
/**
|
| 34 |
-
* Tests that the instance is created correctly, and getters work as expected.`
|
| 35 |
-
*
|
| 36 |
-
* @throws Exception If problem testing.
|
| 37 |
-
*/
|
| 38 |
-
public function testConstructorAndGetContainerAndDataKey()
|
| 39 |
-
{
|
| 40 |
-
{
|
| 41 |
-
$message = uniqid('message');
|
| 42 |
-
$code = rand(1, 99);
|
| 43 |
-
$prev = new Exception(uniqid('inner-message'));
|
| 44 |
-
$container = $this->createContainer([]);
|
| 45 |
-
$dataKey = uniqid('data-key');
|
| 46 |
-
|
| 47 |
-
$subject = $this->createSubject([$message, $code, $prev, $container, $dataKey], null);
|
| 48 |
-
}
|
| 49 |
-
|
| 50 |
-
{
|
| 51 |
-
try {
|
| 52 |
-
throw $subject;
|
| 53 |
-
} catch (TestSubject $e) {
|
| 54 |
-
$this->assertSame($message, $e->getMessage(), 'Wrong message');
|
| 55 |
-
$this->assertSame($code, $e->getCode(), 'Wrong code');
|
| 56 |
-
$this->assertSame($prev, $e->getPrevious(), 'Wrong previous exception');
|
| 57 |
-
$this->assertSame($container, $e->getContainer(), 'Wrong container');
|
| 58 |
-
$this->assertSame($dataKey, $e->getDataKey(), 'Wrong data key');
|
| 59 |
-
}
|
| 60 |
-
}
|
| 61 |
-
}
|
| 62 |
-
|
| 63 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/dhii/containers/test/functional/ServiceProviderTest.php
DELETED
|
@@ -1,78 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
|
| 3 |
-
namespace Dhii\Container\FuncTest;
|
| 4 |
-
|
| 5 |
-
use Dhii\Container\ServiceProvider as TestSubject;
|
| 6 |
-
use Dhii\Container\TestHelpers\ComponentMockeryTrait;
|
| 7 |
-
use Exception;
|
| 8 |
-
use PHPUnit\Framework\TestCase;
|
| 9 |
-
use ReflectionClass;
|
| 10 |
-
|
| 11 |
-
class ServiceProviderTest extends TestCase
|
| 12 |
-
{
|
| 13 |
-
use ComponentMockeryTrait;
|
| 14 |
-
|
| 15 |
-
/**
|
| 16 |
-
* Creates a new instance of the test subject.
|
| 17 |
-
*
|
| 18 |
-
* @param array $dependencies
|
| 19 |
-
*
|
| 20 |
-
* @return TestSubject The new instance.
|
| 21 |
-
*
|
| 22 |
-
* @throws Exception If problem creating.
|
| 23 |
-
*/
|
| 24 |
-
protected function createSubject(array $dependencies)
|
| 25 |
-
{
|
| 26 |
-
$reflection = new ReflectionClass(TestSubject::class);
|
| 27 |
-
$subject = $reflection->newInstanceArgs($dependencies);
|
| 28 |
-
/* @var $subject TestSubject */
|
| 29 |
-
|
| 30 |
-
return $subject;
|
| 31 |
-
}
|
| 32 |
-
|
| 33 |
-
/**
|
| 34 |
-
* Tests that the extensions passed are correctly retrieved.
|
| 35 |
-
*
|
| 36 |
-
* @throws Exception If problem testing.
|
| 37 |
-
*/
|
| 38 |
-
public function testGetExtensions()
|
| 39 |
-
{
|
| 40 |
-
$extensions = [
|
| 41 |
-
'one' => function () {},
|
| 42 |
-
'two' => function () {},
|
| 43 |
-
];
|
| 44 |
-
$subject = $this->createSubject([[], $extensions]);
|
| 45 |
-
|
| 46 |
-
$this->assertEquals(
|
| 47 |
-
$extensions,
|
| 48 |
-
$subject->getExtensions(),
|
| 49 |
-
'Wrong extensions retrieved',
|
| 50 |
-
0.0,
|
| 51 |
-
10,
|
| 52 |
-
true
|
| 53 |
-
);
|
| 54 |
-
}
|
| 55 |
-
|
| 56 |
-
/**
|
| 57 |
-
* Tests that the factories passed are correctly retrieved.
|
| 58 |
-
*
|
| 59 |
-
* @throws Exception If problem testing.
|
| 60 |
-
*/
|
| 61 |
-
public function testGetFactories()
|
| 62 |
-
{
|
| 63 |
-
$factories = [
|
| 64 |
-
'three' => function () {},
|
| 65 |
-
'four' => function () {},
|
| 66 |
-
];
|
| 67 |
-
$subject = $this->createSubject([$factories, []]);
|
| 68 |
-
|
| 69 |
-
$this->assertEquals(
|
| 70 |
-
$factories,
|
| 71 |
-
$subject->getFactories(),
|
| 72 |
-
'Wrong factories retrieved',
|
| 73 |
-
0.0,
|
| 74 |
-
10,
|
| 75 |
-
true
|
| 76 |
-
);
|
| 77 |
-
}
|
| 78 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/dhii/containers/test/helpers/ComponentMockeryTrait.php
DELETED
|
@@ -1,267 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
namespace Dhii\Container\TestHelpers;
|
| 5 |
-
|
| 6 |
-
use Andrew\Proxy;
|
| 7 |
-
use Dhii\Data\Container\Exception\NotFoundExceptionInterface;
|
| 8 |
-
use Exception;
|
| 9 |
-
use Interop\Container\ServiceProviderInterface;
|
| 10 |
-
use PHPUnit\Framework\MockObject\MockBuilder;
|
| 11 |
-
use PHPUnit\Framework\MockObject\MockObject;
|
| 12 |
-
use Psr\Container\ContainerInterface;
|
| 13 |
-
use Throwable;
|
| 14 |
-
|
| 15 |
-
trait ComponentMockeryTrait
|
| 16 |
-
{
|
| 17 |
-
/**
|
| 18 |
-
* Creates a new instance of the test subject mock.
|
| 19 |
-
*
|
| 20 |
-
* @param string $className The name of the class to mock.
|
| 21 |
-
* @param array|null $methods The methods to mock.
|
| 22 |
-
* Use `null` to not mock anything. Use empty array to mock everything.
|
| 23 |
-
* @param array|null $dependencies The parameters for the subject constructor.
|
| 24 |
-
* Use `null` to disable the original constructor.
|
| 25 |
-
*
|
| 26 |
-
* @return MockBuilder The new builder.
|
| 27 |
-
*
|
| 28 |
-
* @throws Exception If problem creating.
|
| 29 |
-
*/
|
| 30 |
-
protected function createMockBuilder(string $className, $methods = [], $dependencies = null)
|
| 31 |
-
{
|
| 32 |
-
$builder = $this->getMockBuilder($className);
|
| 33 |
-
|
| 34 |
-
$builder->setMethods($methods);
|
| 35 |
-
|
| 36 |
-
if ($dependencies !== null) {
|
| 37 |
-
$builder->enableOriginalConstructor();
|
| 38 |
-
$builder->setConstructorArgs($dependencies);
|
| 39 |
-
} else {
|
| 40 |
-
$builder->disableOriginalConstructor();
|
| 41 |
-
}
|
| 42 |
-
|
| 43 |
-
return $builder;
|
| 44 |
-
}
|
| 45 |
-
|
| 46 |
-
/**
|
| 47 |
-
* Creates a new abstract class that extends the specified class while implementing the specified interfaces.
|
| 48 |
-
*
|
| 49 |
-
* @param string $className Name of the class to extend.
|
| 50 |
-
* @param array $interfaceNames List of interface names to implement.
|
| 51 |
-
*
|
| 52 |
-
* @return string The name of the new class.
|
| 53 |
-
*
|
| 54 |
-
* @throws Exception If problem creating.
|
| 55 |
-
* @throws Throwable If problem running.
|
| 56 |
-
*/
|
| 57 |
-
protected function createImplementingClass(
|
| 58 |
-
string $className,
|
| 59 |
-
array $interfaceNames = []
|
| 60 |
-
) {
|
| 61 |
-
$newClassName = uniqid(sprintf('%1$s_', $className));
|
| 62 |
-
$implements = count($interfaceNames)
|
| 63 |
-
? 'implements ' . implode(', ', $interfaceNames)
|
| 64 |
-
: '';
|
| 65 |
-
$class = <<<PHP
|
| 66 |
-
abstract class $newClassName extends $className $implements {}
|
| 67 |
-
PHP;
|
| 68 |
-
eval($class);
|
| 69 |
-
|
| 70 |
-
return $newClassName;
|
| 71 |
-
}
|
| 72 |
-
|
| 73 |
-
/**
|
| 74 |
-
* Creates a new Dhii Container - Not Found exception.
|
| 75 |
-
*
|
| 76 |
-
* @param string $message Error message.
|
| 77 |
-
* @param Throwable|null $previous Inner exception.
|
| 78 |
-
* @param ContainerInterface|null $container The container, if any.
|
| 79 |
-
* @param string|null $dataKey The data key, if any.
|
| 80 |
-
*
|
| 81 |
-
* @return MockObject|NotFoundExceptionInterface The new exception.
|
| 82 |
-
*
|
| 83 |
-
* @throws Exception If problem creating.
|
| 84 |
-
* @throws Throwable If problem running.
|
| 85 |
-
*/
|
| 86 |
-
protected function createNotFoundException(
|
| 87 |
-
string $message,
|
| 88 |
-
Throwable $previous = null,
|
| 89 |
-
ContainerInterface $container = null,
|
| 90 |
-
string $dataKey = null
|
| 91 |
-
) {
|
| 92 |
-
$eClass = $this->createImplementingClass('Exception', [NotFoundExceptionInterface::class]);
|
| 93 |
-
$e = $this->createMockBuilder(
|
| 94 |
-
$eClass,
|
| 95 |
-
['getContainer', 'getDataKey'],
|
| 96 |
-
[
|
| 97 |
-
$message,
|
| 98 |
-
0,
|
| 99 |
-
$previous,
|
| 100 |
-
]
|
| 101 |
-
)->getMock();
|
| 102 |
-
$e->method('getContainer')
|
| 103 |
-
->willReturn($container);
|
| 104 |
-
$e->method('getDataKey')
|
| 105 |
-
->willReturn($dataKey);
|
| 106 |
-
|
| 107 |
-
return $e;
|
| 108 |
-
}
|
| 109 |
-
|
| 110 |
-
/**
|
| 111 |
-
* @return callable|MockObject
|
| 112 |
-
*
|
| 113 |
-
* @throws Exception If problem creating.
|
| 114 |
-
*/
|
| 115 |
-
protected function createCallable(callable $callable): callable
|
| 116 |
-
{
|
| 117 |
-
static $className = null;
|
| 118 |
-
|
| 119 |
-
if (!$className) {
|
| 120 |
-
$className = uniqid('MockInvocable');
|
| 121 |
-
}
|
| 122 |
-
|
| 123 |
-
if (!interface_exists($className)) {
|
| 124 |
-
$class = <<<EOL
|
| 125 |
-
interface $className
|
| 126 |
-
{
|
| 127 |
-
public function __invoke();
|
| 128 |
-
}
|
| 129 |
-
EOL;
|
| 130 |
-
eval($class);
|
| 131 |
-
}
|
| 132 |
-
|
| 133 |
-
$mock = $this->getMockBuilder($className)
|
| 134 |
-
->setMethods(['__invoke'])
|
| 135 |
-
->getMock();
|
| 136 |
-
|
| 137 |
-
$mock->method('__invoke')
|
| 138 |
-
->willReturnCallback($callable);
|
| 139 |
-
|
| 140 |
-
assert(is_callable($mock));
|
| 141 |
-
|
| 142 |
-
return $mock;
|
| 143 |
-
}
|
| 144 |
-
|
| 145 |
-
/**
|
| 146 |
-
* Creates a new mock container.
|
| 147 |
-
*
|
| 148 |
-
* @param array $services The map of service name to service value.
|
| 149 |
-
*
|
| 150 |
-
* @return ContainerInterface|MockObject
|
| 151 |
-
*
|
| 152 |
-
* @throws Exception If problem creating.
|
| 153 |
-
*/
|
| 154 |
-
protected function createContainer(array $services = [])
|
| 155 |
-
{
|
| 156 |
-
$mock = $this->getMockBuilder(ContainerInterface::class)
|
| 157 |
-
->setMethods(['has', 'get'])
|
| 158 |
-
->getMock();
|
| 159 |
-
assert($mock instanceof ContainerInterface);
|
| 160 |
-
|
| 161 |
-
$mock->method('get')
|
| 162 |
-
->willReturnCallback(function ($key) use ($services, $mock) {
|
| 163 |
-
if (!isset($services[$key])) {
|
| 164 |
-
throw $this->createNotFoundException(
|
| 165 |
-
sprintf('No entry found for key "%1$s"', $key),
|
| 166 |
-
null,
|
| 167 |
-
$mock,
|
| 168 |
-
$key
|
| 169 |
-
);
|
| 170 |
-
|
| 171 |
-
throw $e;
|
| 172 |
-
}
|
| 173 |
-
|
| 174 |
-
return $services[$key];
|
| 175 |
-
});
|
| 176 |
-
|
| 177 |
-
$mock->method('has')
|
| 178 |
-
->willReturnCallback(function ($key) use ($services, $mock) {
|
| 179 |
-
if (!isset($services[$key])) {
|
| 180 |
-
return false;
|
| 181 |
-
}
|
| 182 |
-
|
| 183 |
-
return true;
|
| 184 |
-
});
|
| 185 |
-
|
| 186 |
-
return $mock;
|
| 187 |
-
}
|
| 188 |
-
|
| 189 |
-
protected function createServiceProvider(array $factories, array $extensions): ServiceProviderInterface
|
| 190 |
-
{
|
| 191 |
-
$provider = new class($factories, $extensions) implements ServiceProviderInterface {
|
| 192 |
-
/**
|
| 193 |
-
* @var array
|
| 194 |
-
*/
|
| 195 |
-
protected $factories;
|
| 196 |
-
/**
|
| 197 |
-
* @var array
|
| 198 |
-
*/
|
| 199 |
-
protected $extensions;
|
| 200 |
-
|
| 201 |
-
public function __construct(array $factories, array $extensions)
|
| 202 |
-
{
|
| 203 |
-
$this->factories = $factories;
|
| 204 |
-
$this->extensions = $extensions;
|
| 205 |
-
}
|
| 206 |
-
|
| 207 |
-
public function getFactories()
|
| 208 |
-
{
|
| 209 |
-
return $this->factories;
|
| 210 |
-
}
|
| 211 |
-
|
| 212 |
-
public function getExtensions()
|
| 213 |
-
{
|
| 214 |
-
return $this->extensions;
|
| 215 |
-
}
|
| 216 |
-
};
|
| 217 |
-
|
| 218 |
-
return $provider;
|
| 219 |
-
}
|
| 220 |
-
|
| 221 |
-
/**
|
| 222 |
-
* Creates an array.
|
| 223 |
-
*
|
| 224 |
-
* @param int $length The length of the array.
|
| 225 |
-
* @param callable $valueGenerator This generates the values. Called for each index.
|
| 226 |
-
* @param callable|null $keyGenerator This generates the keys. Called for each index.
|
| 227 |
-
* Default: a generator that returns the index. Useful for numeric arrays.
|
| 228 |
-
*
|
| 229 |
-
* @return array The array of specified length, with generated keys and values.
|
| 230 |
-
*/
|
| 231 |
-
public function createArray(int $length, callable $valueGenerator, callable $keyGenerator = null)
|
| 232 |
-
{
|
| 233 |
-
$result = [];
|
| 234 |
-
$keyGenerator = $keyGenerator ?? function (int $index) {
|
| 235 |
-
return $index;
|
| 236 |
-
};
|
| 237 |
-
|
| 238 |
-
for ($i=0; $i<$length-1; $i++) {
|
| 239 |
-
$key = $keyGenerator($i);
|
| 240 |
-
$value = $valueGenerator($i);
|
| 241 |
-
$result[$key] = $value;
|
| 242 |
-
}
|
| 243 |
-
|
| 244 |
-
return $result;
|
| 245 |
-
}
|
| 246 |
-
|
| 247 |
-
/**
|
| 248 |
-
* Creates a proxy that allows public access to the object's protected members.
|
| 249 |
-
*
|
| 250 |
-
* @param object $object The object to proxy.
|
| 251 |
-
*
|
| 252 |
-
* @return Proxy the new proxy.
|
| 253 |
-
*/
|
| 254 |
-
protected function proxy($object): Proxy
|
| 255 |
-
{
|
| 256 |
-
return new Proxy($object);
|
| 257 |
-
}
|
| 258 |
-
|
| 259 |
-
/**
|
| 260 |
-
* Requiring PHPUnit TestCase's method.
|
| 261 |
-
*
|
| 262 |
-
* @param string $className Name of the class to get a builder for.
|
| 263 |
-
*
|
| 264 |
-
* @return MockBuilder The mock builder.
|
| 265 |
-
*/
|
| 266 |
-
abstract function getMockBuilder($className);
|
| 267 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/dhii/containers/test/unit/CompositeCachingServiceProviderTest.php
DELETED
|
@@ -1,136 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
|
| 3 |
-
namespace Dhii\Container\UnitTest;
|
| 4 |
-
|
| 5 |
-
use Dhii\Container\TestHelpers\ComponentMockeryTrait;
|
| 6 |
-
use Dhii\Container\CompositeCachingServiceProvider as TestSubject;
|
| 7 |
-
use Exception;
|
| 8 |
-
use PHPUnit\Framework\MockObject\MockObject;
|
| 9 |
-
use PHPUnit\Framework\TestCase;
|
| 10 |
-
|
| 11 |
-
class CompositeCachingServiceProviderTest extends TestCase
|
| 12 |
-
{
|
| 13 |
-
use ComponentMockeryTrait;
|
| 14 |
-
|
| 15 |
-
/**
|
| 16 |
-
* Creates a new instance of the test subject mock.
|
| 17 |
-
*
|
| 18 |
-
* @param array|null $methods The methods to mock.
|
| 19 |
-
* Use `null` to not mock anything. Use empty array to mock everything.
|
| 20 |
-
* @param array|null $dependencies The parameters for the subject constructor.
|
| 21 |
-
* Use `null` to disable the original constructor.
|
| 22 |
-
*
|
| 23 |
-
* @return MockObject|TestSubject
|
| 24 |
-
*
|
| 25 |
-
* @throws Exception If problem creating.
|
| 26 |
-
*/
|
| 27 |
-
protected function createSubject($methods = [], $dependencies = null)
|
| 28 |
-
{
|
| 29 |
-
$mock = $this->createMockBuilder(TestSubject::class, $methods, $dependencies)
|
| 30 |
-
->getMock();
|
| 31 |
-
|
| 32 |
-
return $mock;
|
| 33 |
-
}
|
| 34 |
-
|
| 35 |
-
/**
|
| 36 |
-
* Tests whether extensions get correctly merged.
|
| 37 |
-
*
|
| 38 |
-
* Extensions are merged correctly if new extensions are added "inside" old
|
| 39 |
-
* extensions, without overriding them, such that both the old and the
|
| 40 |
-
* new extensions get run, in that order, passing down the result of the old
|
| 41 |
-
* extension to the new.
|
| 42 |
-
*
|
| 43 |
-
* @throws Exception If problem testing.
|
| 44 |
-
*/
|
| 45 |
-
public function testMergeExtensions()
|
| 46 |
-
{
|
| 47 |
-
{
|
| 48 |
-
$container = $this->createContainer([]);
|
| 49 |
-
$prev1 = uniqid('prev1');
|
| 50 |
-
$prev2 = uniqid('prev2');
|
| 51 |
-
$prev3 = uniqid('prev3');
|
| 52 |
-
$prev4 = uniqid('prev3');
|
| 53 |
-
$func1 = $this->createCallable(function () use ($prev1) {
|
| 54 |
-
return $prev1;
|
| 55 |
-
});
|
| 56 |
-
$func2 = $this->createCallable(function () use ($prev2) {
|
| 57 |
-
return $prev2;
|
| 58 |
-
});
|
| 59 |
-
$func3 = $this->createCallable(function () use ($prev3) {
|
| 60 |
-
return $prev3;
|
| 61 |
-
});
|
| 62 |
-
$func4 = $this->createCallable(function () use ($prev4) {
|
| 63 |
-
return $prev4;
|
| 64 |
-
});
|
| 65 |
-
|
| 66 |
-
$defaults = [
|
| 67 |
-
'one' => $func1,
|
| 68 |
-
'two' => $func2,
|
| 69 |
-
];
|
| 70 |
-
|
| 71 |
-
$extensions = [
|
| 72 |
-
'two' => $func3,
|
| 73 |
-
'three' => $func4,
|
| 74 |
-
];
|
| 75 |
-
|
| 76 |
-
$subject = $this->createSubject(['_mergeFactories']);
|
| 77 |
-
$_subject = $this->proxy($subject);
|
| 78 |
-
|
| 79 |
-
$subject->expects($this->exactly(1))
|
| 80 |
-
->method('_mergeFactories')
|
| 81 |
-
->willReturnCallback(function ($a, $b) {
|
| 82 |
-
return array_merge($a, $b);
|
| 83 |
-
});
|
| 84 |
-
|
| 85 |
-
$func1->expects($this->exactly(1))
|
| 86 |
-
->method('__invoke')
|
| 87 |
-
->with($container, $prev1);
|
| 88 |
-
$func2->expects($this->exactly(1))
|
| 89 |
-
->method('__invoke')
|
| 90 |
-
->with($container, $prev2);
|
| 91 |
-
$func3->expects($this->exactly(1))
|
| 92 |
-
->method('__invoke')
|
| 93 |
-
->with($container, $prev2);
|
| 94 |
-
$func4->expects($this->exactly(1))
|
| 95 |
-
->method('__invoke')
|
| 96 |
-
->with($container, $prev4);
|
| 97 |
-
|
| 98 |
-
}
|
| 99 |
-
|
| 100 |
-
{
|
| 101 |
-
$result = $_subject->_mergeExtensions($defaults, $extensions);
|
| 102 |
-
}
|
| 103 |
-
|
| 104 |
-
{
|
| 105 |
-
// Checking structure of result
|
| 106 |
-
$this->assertCount(3, $result);
|
| 107 |
-
$this->assertArrayHasKey('one', $result);
|
| 108 |
-
$this->assertArrayHasKey('two', $result);
|
| 109 |
-
$this->assertArrayHasKey('three', $result);
|
| 110 |
-
|
| 111 |
-
// Checking first (simple) extension
|
| 112 |
-
$this->assertInternalType('callable', $result['one']);
|
| 113 |
-
$this->assertEquals(
|
| 114 |
-
$prev1,
|
| 115 |
-
$result['one']($container, $prev1),
|
| 116 |
-
'Simple extension must return passed value'
|
| 117 |
-
);
|
| 118 |
-
|
| 119 |
-
// Checking second (compound) extension
|
| 120 |
-
$this->assertInternalType('callable', $result['two']);
|
| 121 |
-
$this->assertEquals(
|
| 122 |
-
$prev3,
|
| 123 |
-
$result['two']($container, $prev2),
|
| 124 |
-
'Compound extension must return inner-most value'
|
| 125 |
-
);
|
| 126 |
-
|
| 127 |
-
// Checking third (simple) extension
|
| 128 |
-
$this->assertInternalType('callable', $result['three']);
|
| 129 |
-
$this->assertEquals(
|
| 130 |
-
$prev4,
|
| 131 |
-
$result['three']($container, $prev4),
|
| 132 |
-
'Simple extension must return passed value'
|
| 133 |
-
);
|
| 134 |
-
}
|
| 135 |
-
}
|
| 136 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/dhii/containers/test/unit/ProxyContainerTest.php
DELETED
|
@@ -1,112 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
|
| 3 |
-
namespace Dhii\Container\UnitTest;
|
| 4 |
-
|
| 5 |
-
use Dhii\Container\ProxyContainer as TestSubject;
|
| 6 |
-
use Dhii\Container\TestHelpers\ComponentMockeryTrait;
|
| 7 |
-
use Dhii\Data\Container\ContainerInterface;
|
| 8 |
-
use PHPUnit\Framework\MockObject\MockObject;
|
| 9 |
-
use PHPUnit\Framework\TestCase;
|
| 10 |
-
use Psr\Container\ContainerExceptionInterface;
|
| 11 |
-
use Psr\Container\NotFoundExceptionInterface;
|
| 12 |
-
|
| 13 |
-
class ProxyContainerTest extends TestCase
|
| 14 |
-
{
|
| 15 |
-
use ComponentMockeryTrait;
|
| 16 |
-
|
| 17 |
-
/**
|
| 18 |
-
* @return TestSubject&MockObject
|
| 19 |
-
*/
|
| 20 |
-
protected function createInstance(): TestSubject
|
| 21 |
-
{
|
| 22 |
-
$mock = $this->getMockBuilder(TestSubject::class)
|
| 23 |
-
->setMethods(null)
|
| 24 |
-
->getMock();
|
| 25 |
-
|
| 26 |
-
return $mock;
|
| 27 |
-
}
|
| 28 |
-
|
| 29 |
-
/**
|
| 30 |
-
* @param array $services
|
| 31 |
-
*
|
| 32 |
-
* @return ContainerInterface
|
| 33 |
-
*/
|
| 34 |
-
// protected function createContainer(array $services): ContainerInterface
|
| 35 |
-
// {
|
| 36 |
-
// $mock = $this->getMockBuilder(ContainerInterface::class)
|
| 37 |
-
// ->setMethods(['get', 'has'])
|
| 38 |
-
// ->getMock();
|
| 39 |
-
//
|
| 40 |
-
// $mock->method('has')
|
| 41 |
-
// ->will($this->returnCallback(function ($key) use ($services) {
|
| 42 |
-
// return array_key_exists($key, $services);
|
| 43 |
-
// }));
|
| 44 |
-
// $mock->method('get')
|
| 45 |
-
// ->will($this->returnCallback(function ($key) use ($services) {
|
| 46 |
-
// if (!array_key_exists($key, $services)) {
|
| 47 |
-
// throw new NotFoundException();
|
| 48 |
-
// }
|
| 49 |
-
//
|
| 50 |
-
// return $services[$key];
|
| 51 |
-
// }));
|
| 52 |
-
//
|
| 53 |
-
// return $mock;
|
| 54 |
-
// }
|
| 55 |
-
|
| 56 |
-
/**
|
| 57 |
-
* Tests that calls and return values are being proxied correctly.
|
| 58 |
-
*/
|
| 59 |
-
public function testProxy()
|
| 60 |
-
{
|
| 61 |
-
{
|
| 62 |
-
$nonExistingKey = uniqid('not-here');
|
| 63 |
-
$key = uniqid('key');
|
| 64 |
-
$value = uniqid('value');
|
| 65 |
-
$services = [
|
| 66 |
-
$key => $value,
|
| 67 |
-
];
|
| 68 |
-
$container = $this->createContainer($services);
|
| 69 |
-
$subject = $this->createInstance();
|
| 70 |
-
}
|
| 71 |
-
|
| 72 |
-
{
|
| 73 |
-
$subject->setInnerContainer($container);
|
| 74 |
-
$this->assertTrue($subject->has($key));
|
| 75 |
-
$this->assertEquals($value, $subject->get($key));
|
| 76 |
-
|
| 77 |
-
$this->assertFalse($subject->has($nonExistingKey));
|
| 78 |
-
$this->expectException(NotFoundExceptionInterface::class);
|
| 79 |
-
$subject->get($nonExistingKey);
|
| 80 |
-
}
|
| 81 |
-
}
|
| 82 |
-
|
| 83 |
-
/**
|
| 84 |
-
* Tests that the subject reacts correctly when the inner container is missing.
|
| 85 |
-
*/
|
| 86 |
-
public function testHasMissingContainer()
|
| 87 |
-
{
|
| 88 |
-
{
|
| 89 |
-
$subject = $this->createInstance();
|
| 90 |
-
}
|
| 91 |
-
|
| 92 |
-
{
|
| 93 |
-
$this->expectException(ContainerExceptionInterface::class);
|
| 94 |
-
$subject->has(uniqid('not-there'));
|
| 95 |
-
}
|
| 96 |
-
}
|
| 97 |
-
|
| 98 |
-
/**
|
| 99 |
-
* Tests that the subject reacts correctly when the inner container is missing.
|
| 100 |
-
*/
|
| 101 |
-
public function testGetMissingContainer()
|
| 102 |
-
{
|
| 103 |
-
{
|
| 104 |
-
$subject = $this->createInstance();
|
| 105 |
-
}
|
| 106 |
-
|
| 107 |
-
{
|
| 108 |
-
$this->expectException(ContainerExceptionInterface::class);
|
| 109 |
-
$subject->get(uniqid('not-there'));
|
| 110 |
-
}
|
| 111 |
-
}
|
| 112 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/dhii/{module-interface → data-key-value-aware-interface}/.codeclimate.yml
RENAMED
|
@@ -9,10 +9,6 @@ engines:
|
|
| 9 |
enabled: true
|
| 10 |
phpmd:
|
| 11 |
enabled: true
|
| 12 |
-
config:
|
| 13 |
-
file_extensions:
|
| 14 |
-
- php
|
| 15 |
-
rulesets: "phpmd.xml"
|
| 16 |
ratings:
|
| 17 |
paths:
|
| 18 |
- "**.inc"
|
| 9 |
enabled: true
|
| 10 |
phpmd:
|
| 11 |
enabled: true
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
ratings:
|
| 13 |
paths:
|
| 14 |
- "**.inc"
|
vendor/dhii/{module-interface → data-key-value-aware-interface}/.php_cs
RENAMED
|
@@ -9,7 +9,7 @@ foreach ($toRemove as $_fixer) {
|
|
| 9 |
if (($removeIndex = array_search($_fixer, $fixers)) === false) {
|
| 10 |
continue;
|
| 11 |
}
|
| 12 |
-
|
| 13 |
unset($fixers[$removeIndex]);
|
| 14 |
}
|
| 15 |
|
|
@@ -18,7 +18,7 @@ foreach ($toAdd as $_fixer) {
|
|
| 18 |
if (($removeIndex = array_search($_fixer, $fixers)) !== false) {
|
| 19 |
continue;
|
| 20 |
}
|
| 21 |
-
|
| 22 |
$fixers[] = $_fixer;
|
| 23 |
}
|
| 24 |
|
| 9 |
if (($removeIndex = array_search($_fixer, $fixers)) === false) {
|
| 10 |
continue;
|
| 11 |
}
|
| 12 |
+
|
| 13 |
unset($fixers[$removeIndex]);
|
| 14 |
}
|
| 15 |
|
| 18 |
if (($removeIndex = array_search($_fixer, $fixers)) !== false) {
|
| 19 |
continue;
|
| 20 |
}
|
| 21 |
+
|
| 22 |
$fixers[] = $_fixer;
|
| 23 |
}
|
| 24 |
|
vendor/dhii/data-key-value-aware-interface/CHANGELOG.md
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Change log
|
| 2 |
+
All notable changes to this project will be documented in this file.
|
| 3 |
+
|
| 4 |
+
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
| 5 |
+
and this project adheres to [Semantic Versioning](http://semver.org/).
|
| 6 |
+
|
| 7 |
+
## [0.1] - 2017-01-21
|
| 8 |
+
Initial release, of the interop interfaces.
|
| 9 |
+
|
| 10 |
+
### Added
|
| 11 |
+
- Interop interfaces.
|
| 12 |
+
- Tests
|
vendor/dhii/data-key-value-aware-interface/README.md
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
## Key/Value Aware Interface ##
|
| 2 |
+
[](https://travis-ci.org/Dhii/data-key-value-aware-interface)
|
| 3 |
+
[](https://codeclimate.com/github/Dhii/data-key-value-aware-interface)
|
| 4 |
+
[](https://codeclimate.com/github/Dhii/data-key-value-aware-interface/coverage)
|
| 5 |
+
|
| 6 |
+
Increase interoperability of value objects by depending on this package.
|
vendor/dhii/data-key-value-aware-interface/composer.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "dhii/data-key-value-aware-interface",
|
| 3 |
+
"description": "Interfaces that aim to increase interoperability of value objects",
|
| 4 |
+
"type": "library",
|
| 5 |
+
"license": "MIT",
|
| 6 |
+
"authors": [
|
| 7 |
+
{
|
| 8 |
+
"name": "Dhii Team",
|
| 9 |
+
"email": "development@dhii.co"
|
| 10 |
+
}
|
| 11 |
+
],
|
| 12 |
+
"minimum-stability": "dev",
|
| 13 |
+
"require": {
|
| 14 |
+
"php": "^5.3 | ^7.0"
|
| 15 |
+
},
|
| 16 |
+
"require-dev": {
|
| 17 |
+
"dhii/php-cs-fixer-config": "dev-php-5.3",
|
| 18 |
+
"phpunit/phpunit": "4.*",
|
| 19 |
+
"codeclimate/php-test-reporter": "<=0.3.2",
|
| 20 |
+
"ptrofimov/xpmock": "^1.1"
|
| 21 |
+
},
|
| 22 |
+
"autoload": {
|
| 23 |
+
"psr-4": {
|
| 24 |
+
"Dhii\\Data\\": "src/"
|
| 25 |
+
}
|
| 26 |
+
}
|
| 27 |
+
}
|
vendor/dhii/{containers → data-key-value-aware-interface}/composer.lock
RENAMED
|
@@ -1,129 +1,50 @@
|
|
| 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#
|
| 5 |
"This file is @generated automatically"
|
| 6 |
],
|
| 7 |
-
"
|
| 8 |
-
"
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
"version": "v0.4.0",
|
| 12 |
-
"source": {
|
| 13 |
-
"type": "git",
|
| 14 |
-
"url": "https://github.com/container-interop/service-provider.git",
|
| 15 |
-
"reference": "4969b9e49460690b7430b3f1a87cab07be61418a"
|
| 16 |
-
},
|
| 17 |
-
"dist": {
|
| 18 |
-
"type": "zip",
|
| 19 |
-
"url": "https://api.github.com/repos/container-interop/service-provider/zipball/4969b9e49460690b7430b3f1a87cab07be61418a",
|
| 20 |
-
"reference": "4969b9e49460690b7430b3f1a87cab07be61418a",
|
| 21 |
-
"shasum": ""
|
| 22 |
-
},
|
| 23 |
-
"require": {
|
| 24 |
-
"psr/container": "^1.0"
|
| 25 |
-
},
|
| 26 |
-
"type": "library",
|
| 27 |
-
"autoload": {
|
| 28 |
-
"psr-4": {
|
| 29 |
-
"Interop\\Container\\": "src/"
|
| 30 |
-
}
|
| 31 |
-
},
|
| 32 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 33 |
-
"license": [
|
| 34 |
-
"MIT"
|
| 35 |
-
],
|
| 36 |
-
"description": "Promoting container interoperability through standard service providers",
|
| 37 |
-
"homepage": "https://github.com/container-interop/service-provider",
|
| 38 |
-
"time": "2017-09-20T14:13:36+00:00"
|
| 39 |
-
},
|
| 40 |
{
|
| 41 |
-
"name": "
|
| 42 |
-
"version": "v0.2
|
| 43 |
"source": {
|
| 44 |
"type": "git",
|
| 45 |
-
"url": "https://github.com/
|
| 46 |
-
"reference": "
|
| 47 |
},
|
| 48 |
"dist": {
|
| 49 |
"type": "zip",
|
| 50 |
-
"url": "https://api.github.com/repos/
|
| 51 |
-
"reference": "
|
| 52 |
"shasum": ""
|
| 53 |
},
|
| 54 |
"require": {
|
| 55 |
-
"
|
| 56 |
-
"
|
| 57 |
-
"php": "
|
| 58 |
-
"
|
| 59 |
},
|
| 60 |
"require-dev": {
|
| 61 |
-
"
|
| 62 |
-
"
|
| 63 |
-
"dhii/stringable-interface": "^0.1",
|
| 64 |
-
"phpunit/phpunit": "^4.8",
|
| 65 |
-
"ptrofimov/xpmock": "^1.1"
|
| 66 |
-
},
|
| 67 |
-
"suggest": {
|
| 68 |
-
"dhii/stringable-interface": "To be able to pass Stringables as keys"
|
| 69 |
-
},
|
| 70 |
-
"type": "library",
|
| 71 |
-
"extra": {
|
| 72 |
-
"branch-alias": {
|
| 73 |
-
"dev-develop": "0.2.x-dev"
|
| 74 |
-
}
|
| 75 |
-
},
|
| 76 |
-
"autoload": {
|
| 77 |
-
"psr-4": {
|
| 78 |
-
"Dhii\\Data\\Container\\": "src"
|
| 79 |
-
}
|
| 80 |
},
|
| 81 |
-
"
|
| 82 |
-
|
| 83 |
-
"MIT"
|
| 84 |
-
],
|
| 85 |
-
"authors": [
|
| 86 |
-
{
|
| 87 |
-
"name": "Dhii Team",
|
| 88 |
-
"email": "development@dhii.co"
|
| 89 |
-
}
|
| 90 |
],
|
| 91 |
-
"description": "Interfaces for working with data containers",
|
| 92 |
-
"time": "2018-04-26T09:50:30+00:00"
|
| 93 |
-
},
|
| 94 |
-
{
|
| 95 |
-
"name": "dhii/exception-interface",
|
| 96 |
-
"version": "v0.2",
|
| 97 |
-
"source": {
|
| 98 |
-
"type": "git",
|
| 99 |
-
"url": "https://github.com/Dhii/exception-interface.git",
|
| 100 |
-
"reference": "b69feebf7cb2879cd43977a03342e2393b73f7fb"
|
| 101 |
-
},
|
| 102 |
-
"dist": {
|
| 103 |
-
"type": "zip",
|
| 104 |
-
"url": "https://api.github.com/repos/Dhii/exception-interface/zipball/b69feebf7cb2879cd43977a03342e2393b73f7fb",
|
| 105 |
-
"reference": "b69feebf7cb2879cd43977a03342e2393b73f7fb",
|
| 106 |
-
"shasum": ""
|
| 107 |
-
},
|
| 108 |
-
"require": {
|
| 109 |
-
"dhii/stringable-interface": "^0.1",
|
| 110 |
-
"php": "^5.3 | ^7.0"
|
| 111 |
-
},
|
| 112 |
-
"require-dev": {
|
| 113 |
-
"codeclimate/php-test-reporter": "<=0.3.2",
|
| 114 |
-
"dhii/php-cs-fixer-config": "dev-php-5.3",
|
| 115 |
-
"phpunit/phpunit": "^4.8",
|
| 116 |
-
"ptrofimov/xpmock": "^1.1"
|
| 117 |
-
},
|
| 118 |
"type": "library",
|
| 119 |
"extra": {
|
| 120 |
"branch-alias": {
|
| 121 |
-
"dev-
|
| 122 |
}
|
| 123 |
},
|
| 124 |
"autoload": {
|
| 125 |
-
"psr-
|
| 126 |
-
"
|
|
|
|
| 127 |
}
|
| 128 |
},
|
| 129 |
"notification-url": "https://packagist.org/downloads/",
|
|
@@ -132,90 +53,44 @@
|
|
| 132 |
],
|
| 133 |
"authors": [
|
| 134 |
{
|
| 135 |
-
"name": "
|
| 136 |
-
"email": "
|
| 137 |
-
|
| 138 |
-
],
|
| 139 |
-
"description": "Interfaces for most common exceptions",
|
| 140 |
-
"time": "2018-08-29T10:42:04+00:00"
|
| 141 |
-
},
|
| 142 |
-
{
|
| 143 |
-
"name": "dhii/factory-interface",
|
| 144 |
-
"version": "v0.1",
|
| 145 |
-
"source": {
|
| 146 |
-
"type": "git",
|
| 147 |
-
"url": "https://github.com/Dhii/factory-interface.git",
|
| 148 |
-
"reference": "b8d217aec8838e64ccaa770cb03dc164bf6f0515"
|
| 149 |
-
},
|
| 150 |
-
"dist": {
|
| 151 |
-
"type": "zip",
|
| 152 |
-
"url": "https://api.github.com/repos/Dhii/factory-interface/zipball/b8d217aec8838e64ccaa770cb03dc164bf6f0515",
|
| 153 |
-
"reference": "b8d217aec8838e64ccaa770cb03dc164bf6f0515",
|
| 154 |
-
"shasum": ""
|
| 155 |
-
},
|
| 156 |
-
"require": {
|
| 157 |
-
"dhii/exception-interface": "^0.1|^0.2",
|
| 158 |
-
"php": "^5.3 | ^7.0"
|
| 159 |
-
},
|
| 160 |
-
"require-dev": {
|
| 161 |
-
"codeclimate/php-test-reporter": "<=0.3.2",
|
| 162 |
-
"dhii/php-cs-fixer-config": "dev-php-5.3",
|
| 163 |
-
"dhii/stringable-interface": "^0.1",
|
| 164 |
-
"phpunit/phpunit": "^4.8",
|
| 165 |
-
"psr/container": "^1.0",
|
| 166 |
-
"ptrofimov/xpmock": "^1.1"
|
| 167 |
-
},
|
| 168 |
-
"type": "library",
|
| 169 |
-
"extra": {
|
| 170 |
-
"branch-alias": {
|
| 171 |
-
"dev-develop": "0.1.x-dev"
|
| 172 |
}
|
| 173 |
-
},
|
| 174 |
-
"autoload": {
|
| 175 |
-
"psr-4": {
|
| 176 |
-
"Dhii\\Factory\\": "src"
|
| 177 |
-
}
|
| 178 |
-
},
|
| 179 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 180 |
-
"license": [
|
| 181 |
-
"MIT"
|
| 182 |
],
|
| 183 |
-
"
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
|
| 188 |
],
|
| 189 |
-
"
|
| 190 |
-
"time": "2018-08-29T11:15:09+00:00"
|
| 191 |
},
|
| 192 |
{
|
| 193 |
-
"name": "dhii/
|
| 194 |
-
"version": "
|
| 195 |
"source": {
|
| 196 |
"type": "git",
|
| 197 |
-
"url": "https://github.com/Dhii/
|
| 198 |
-
"reference": "
|
| 199 |
},
|
| 200 |
"dist": {
|
| 201 |
"type": "zip",
|
| 202 |
-
"url": "https://api.github.com/repos/Dhii/
|
| 203 |
-
"reference": "
|
| 204 |
"shasum": ""
|
| 205 |
},
|
| 206 |
"require": {
|
|
|
|
| 207 |
"php": "^5.3 | ^7.0"
|
| 208 |
},
|
| 209 |
"require-dev": {
|
| 210 |
-
"
|
| 211 |
-
"dhii/php-cs-fixer-config": "dev-php-5.3",
|
| 212 |
-
"phpunit/phpunit": "^4.8",
|
| 213 |
-
"ptrofimov/xpmock": "^1.1"
|
| 214 |
},
|
| 215 |
"type": "library",
|
| 216 |
"autoload": {
|
| 217 |
"psr-4": {
|
| 218 |
-
"Dhii\\
|
| 219 |
}
|
| 220 |
},
|
| 221 |
"notification-url": "https://packagist.org/downloads/",
|
|
@@ -228,72 +103,21 @@
|
|
| 228 |
"email": "development@dhii.co"
|
| 229 |
}
|
| 230 |
],
|
| 231 |
-
"description": "
|
| 232 |
-
"time": "
|
| 233 |
},
|
| 234 |
-
{
|
| 235 |
-
"name": "psr/container",
|
| 236 |
-
"version": "1.0.0",
|
| 237 |
-
"source": {
|
| 238 |
-
"type": "git",
|
| 239 |
-
"url": "https://github.com/php-fig/container.git",
|
| 240 |
-
"reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
|
| 241 |
-
},
|
| 242 |
-
"dist": {
|
| 243 |
-
"type": "zip",
|
| 244 |
-
"url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
|
| 245 |
-
"reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
|
| 246 |
-
"shasum": ""
|
| 247 |
-
},
|
| 248 |
-
"require": {
|
| 249 |
-
"php": ">=5.3.0"
|
| 250 |
-
},
|
| 251 |
-
"type": "library",
|
| 252 |
-
"extra": {
|
| 253 |
-
"branch-alias": {
|
| 254 |
-
"dev-master": "1.0.x-dev"
|
| 255 |
-
}
|
| 256 |
-
},
|
| 257 |
-
"autoload": {
|
| 258 |
-
"psr-4": {
|
| 259 |
-
"Psr\\Container\\": "src/"
|
| 260 |
-
}
|
| 261 |
-
},
|
| 262 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 263 |
-
"license": [
|
| 264 |
-
"MIT"
|
| 265 |
-
],
|
| 266 |
-
"authors": [
|
| 267 |
-
{
|
| 268 |
-
"name": "PHP-FIG",
|
| 269 |
-
"homepage": "http://www.php-fig.org/"
|
| 270 |
-
}
|
| 271 |
-
],
|
| 272 |
-
"description": "Common Container Interface (PHP FIG PSR-11)",
|
| 273 |
-
"homepage": "https://github.com/php-fig/container",
|
| 274 |
-
"keywords": [
|
| 275 |
-
"PSR-11",
|
| 276 |
-
"container",
|
| 277 |
-
"container-interface",
|
| 278 |
-
"container-interop",
|
| 279 |
-
"psr"
|
| 280 |
-
],
|
| 281 |
-
"time": "2017-02-14T16:28:37+00:00"
|
| 282 |
-
}
|
| 283 |
-
],
|
| 284 |
-
"packages-dev": [
|
| 285 |
{
|
| 286 |
"name": "doctrine/instantiator",
|
| 287 |
-
"version": "
|
| 288 |
"source": {
|
| 289 |
"type": "git",
|
| 290 |
"url": "https://github.com/doctrine/instantiator.git",
|
| 291 |
-
"reference": "
|
| 292 |
},
|
| 293 |
"dist": {
|
| 294 |
"type": "zip",
|
| 295 |
-
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/
|
| 296 |
-
"reference": "
|
| 297 |
"shasum": ""
|
| 298 |
},
|
| 299 |
"require": {
|
|
@@ -334,37 +158,47 @@
|
|
| 334 |
"constructor",
|
| 335 |
"instantiate"
|
| 336 |
],
|
| 337 |
-
"time": "
|
| 338 |
},
|
| 339 |
{
|
| 340 |
-
"name": "
|
| 341 |
-
"version": "
|
| 342 |
"source": {
|
| 343 |
"type": "git",
|
| 344 |
-
"url": "https://github.com/
|
| 345 |
-
"reference": "
|
| 346 |
},
|
| 347 |
"dist": {
|
| 348 |
"type": "zip",
|
| 349 |
-
"url": "https://api.github.com/repos/
|
| 350 |
-
"reference": "
|
| 351 |
"shasum": ""
|
| 352 |
},
|
| 353 |
"require": {
|
| 354 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 355 |
},
|
| 356 |
-
"
|
| 357 |
-
"
|
| 358 |
},
|
| 359 |
-
"
|
| 360 |
-
|
| 361 |
-
"
|
| 362 |
-
"dev-master": "1.x-dev"
|
| 363 |
-
}
|
| 364 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
| 365 |
"autoload": {
|
| 366 |
"psr-4": {
|
| 367 |
-
"
|
| 368 |
}
|
| 369 |
},
|
| 370 |
"notification-url": "https://packagist.org/downloads/",
|
|
@@ -373,179 +207,125 @@
|
|
| 373 |
],
|
| 374 |
"authors": [
|
| 375 |
{
|
| 376 |
-
"name": "
|
| 377 |
-
"email": "
|
| 378 |
-
|
| 379 |
-
|
|
|
|
|
|
|
| 380 |
}
|
| 381 |
],
|
| 382 |
-
"description": "
|
| 383 |
-
"
|
| 384 |
-
"keywords": [
|
| 385 |
-
"proxy objects",
|
| 386 |
-
"unit tests"
|
| 387 |
-
],
|
| 388 |
-
"time": "2016-09-15T17:29:10+00:00"
|
| 389 |
},
|
| 390 |
{
|
| 391 |
-
"name": "
|
| 392 |
-
"version": "
|
| 393 |
"source": {
|
| 394 |
"type": "git",
|
| 395 |
-
"url": "https://github.com/
|
| 396 |
-
"reference": "
|
| 397 |
},
|
| 398 |
"dist": {
|
| 399 |
"type": "zip",
|
| 400 |
-
"url": "https://api.github.com/repos/
|
| 401 |
-
"reference": "
|
| 402 |
"shasum": ""
|
| 403 |
},
|
| 404 |
"require": {
|
| 405 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 406 |
},
|
| 407 |
"require-dev": {
|
| 408 |
-
"doctrine/
|
| 409 |
-
"
|
| 410 |
-
"phpunit/phpunit": "
|
| 411 |
-
|
| 412 |
-
|
| 413 |
-
|
| 414 |
-
"
|
| 415 |
-
"DeepCopy\\": "src/DeepCopy/"
|
| 416 |
-
},
|
| 417 |
-
"files": [
|
| 418 |
-
"src/DeepCopy/deep_copy.php"
|
| 419 |
-
]
|
| 420 |
-
},
|
| 421 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 422 |
-
"license": [
|
| 423 |
-
"MIT"
|
| 424 |
-
],
|
| 425 |
-
"description": "Create deep copies (clones) of your objects",
|
| 426 |
-
"keywords": [
|
| 427 |
-
"clone",
|
| 428 |
-
"copy",
|
| 429 |
-
"duplicate",
|
| 430 |
-
"object",
|
| 431 |
-
"object graph"
|
| 432 |
-
],
|
| 433 |
-
"time": "2017-10-19T19:58:43+00:00"
|
| 434 |
-
},
|
| 435 |
-
{
|
| 436 |
-
"name": "phar-io/manifest",
|
| 437 |
-
"version": "1.0.1",
|
| 438 |
-
"source": {
|
| 439 |
-
"type": "git",
|
| 440 |
-
"url": "https://github.com/phar-io/manifest.git",
|
| 441 |
-
"reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0"
|
| 442 |
-
},
|
| 443 |
-
"dist": {
|
| 444 |
-
"type": "zip",
|
| 445 |
-
"url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0",
|
| 446 |
-
"reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0",
|
| 447 |
-
"shasum": ""
|
| 448 |
},
|
| 449 |
-
"
|
| 450 |
-
"
|
| 451 |
-
"ext-phar": "*",
|
| 452 |
-
"phar-io/version": "^1.0.1",
|
| 453 |
-
"php": "^5.6 || ^7.0"
|
| 454 |
},
|
| 455 |
"type": "library",
|
| 456 |
"extra": {
|
| 457 |
"branch-alias": {
|
| 458 |
-
"dev-master": "
|
| 459 |
}
|
| 460 |
},
|
| 461 |
"autoload": {
|
| 462 |
-
"
|
| 463 |
-
"src/"
|
| 464 |
-
|
| 465 |
-
},
|
| 466 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 467 |
-
"license": [
|
| 468 |
-
"BSD-3-Clause"
|
| 469 |
-
],
|
| 470 |
-
"authors": [
|
| 471 |
-
{
|
| 472 |
-
"name": "Arne Blankerts",
|
| 473 |
-
"email": "arne@blankerts.de",
|
| 474 |
-
"role": "Developer"
|
| 475 |
-
},
|
| 476 |
-
{
|
| 477 |
-
"name": "Sebastian Heuer",
|
| 478 |
-
"email": "sebastian@phpeople.de",
|
| 479 |
-
"role": "Developer"
|
| 480 |
-
},
|
| 481 |
-
{
|
| 482 |
-
"name": "Sebastian Bergmann",
|
| 483 |
-
"email": "sebastian@phpunit.de",
|
| 484 |
-
"role": "Developer"
|
| 485 |
}
|
| 486 |
-
],
|
| 487 |
-
"description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
|
| 488 |
-
"time": "2017-03-05T18:14:27+00:00"
|
| 489 |
-
},
|
| 490 |
-
{
|
| 491 |
-
"name": "phar-io/version",
|
| 492 |
-
"version": "1.0.1",
|
| 493 |
-
"source": {
|
| 494 |
-
"type": "git",
|
| 495 |
-
"url": "https://github.com/phar-io/version.git",
|
| 496 |
-
"reference": "a70c0ced4be299a63d32fa96d9281d03e94041df"
|
| 497 |
-
},
|
| 498 |
-
"dist": {
|
| 499 |
-
"type": "zip",
|
| 500 |
-
"url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df",
|
| 501 |
-
"reference": "a70c0ced4be299a63d32fa96d9281d03e94041df",
|
| 502 |
-
"shasum": ""
|
| 503 |
-
},
|
| 504 |
-
"require": {
|
| 505 |
-
"php": "^5.6 || ^7.0"
|
| 506 |
-
},
|
| 507 |
-
"type": "library",
|
| 508 |
-
"autoload": {
|
| 509 |
-
"classmap": [
|
| 510 |
-
"src/"
|
| 511 |
-
]
|
| 512 |
},
|
| 513 |
"notification-url": "https://packagist.org/downloads/",
|
| 514 |
"license": [
|
| 515 |
-
"
|
| 516 |
],
|
| 517 |
"authors": [
|
| 518 |
{
|
| 519 |
-
"name": "
|
| 520 |
-
"email": "
|
| 521 |
-
"
|
| 522 |
},
|
| 523 |
{
|
| 524 |
-
"name": "
|
| 525 |
-
"
|
| 526 |
-
"role": "Developer"
|
| 527 |
-
},
|
| 528 |
-
{
|
| 529 |
-
"name": "Sebastian Bergmann",
|
| 530 |
-
"email": "sebastian@phpunit.de",
|
| 531 |
-
"role": "Developer"
|
| 532 |
}
|
| 533 |
],
|
| 534 |
-
"description": "
|
| 535 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 536 |
},
|
| 537 |
{
|
| 538 |
"name": "phpdocumentor/reflection-common",
|
| 539 |
-
"version": "
|
| 540 |
"source": {
|
| 541 |
"type": "git",
|
| 542 |
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
|
| 543 |
-
"reference": "
|
| 544 |
},
|
| 545 |
"dist": {
|
| 546 |
"type": "zip",
|
| 547 |
-
"url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/
|
| 548 |
-
"reference": "
|
| 549 |
"shasum": ""
|
| 550 |
},
|
| 551 |
"require": {
|
|
@@ -586,39 +366,33 @@
|
|
| 586 |
"reflection",
|
| 587 |
"static analysis"
|
| 588 |
],
|
| 589 |
-
"time": "
|
| 590 |
},
|
| 591 |
{
|
| 592 |
"name": "phpdocumentor/reflection-docblock",
|
| 593 |
-
"version": "
|
| 594 |
"source": {
|
| 595 |
"type": "git",
|
| 596 |
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
|
| 597 |
-
"reference": "
|
| 598 |
},
|
| 599 |
"dist": {
|
| 600 |
"type": "zip",
|
| 601 |
-
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/
|
| 602 |
-
"reference": "
|
| 603 |
"shasum": ""
|
| 604 |
},
|
| 605 |
"require": {
|
| 606 |
-
"php": "
|
| 607 |
-
"phpdocumentor/reflection-common": "^1.0
|
| 608 |
-
"phpdocumentor/type-resolver": "^0.
|
| 609 |
"webmozart/assert": "^1.0"
|
| 610 |
},
|
| 611 |
"require-dev": {
|
| 612 |
-
"
|
| 613 |
-
"
|
| 614 |
-
"phpunit/phpunit": "^6.4"
|
| 615 |
},
|
| 616 |
"type": "library",
|
| 617 |
-
"extra": {
|
| 618 |
-
"branch-alias": {
|
| 619 |
-
"dev-master": "4.x-dev"
|
| 620 |
-
}
|
| 621 |
-
},
|
| 622 |
"autoload": {
|
| 623 |
"psr-4": {
|
| 624 |
"phpDocumentor\\Reflection\\": [
|
|
@@ -637,24 +411,24 @@
|
|
| 637 |
}
|
| 638 |
],
|
| 639 |
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
|
| 640 |
-
"time": "
|
| 641 |
},
|
| 642 |
{
|
| 643 |
"name": "phpdocumentor/type-resolver",
|
| 644 |
-
"version": "0.
|
| 645 |
"source": {
|
| 646 |
"type": "git",
|
| 647 |
"url": "https://github.com/phpDocumentor/TypeResolver.git",
|
| 648 |
-
"reference": "
|
| 649 |
},
|
| 650 |
"dist": {
|
| 651 |
"type": "zip",
|
| 652 |
-
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/
|
| 653 |
-
"reference": "
|
| 654 |
"shasum": ""
|
| 655 |
},
|
| 656 |
"require": {
|
| 657 |
-
"php": "
|
| 658 |
"phpdocumentor/reflection-common": "^1.0"
|
| 659 |
},
|
| 660 |
"require-dev": {
|
|
@@ -684,37 +458,37 @@
|
|
| 684 |
"email": "me@mikevanriel.com"
|
| 685 |
}
|
| 686 |
],
|
| 687 |
-
"time": "
|
| 688 |
},
|
| 689 |
{
|
| 690 |
"name": "phpspec/prophecy",
|
| 691 |
-
"version": "
|
| 692 |
"source": {
|
| 693 |
"type": "git",
|
| 694 |
"url": "https://github.com/phpspec/prophecy.git",
|
| 695 |
-
"reference": "
|
| 696 |
},
|
| 697 |
"dist": {
|
| 698 |
"type": "zip",
|
| 699 |
-
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/
|
| 700 |
-
"reference": "
|
| 701 |
"shasum": ""
|
| 702 |
},
|
| 703 |
"require": {
|
| 704 |
"doctrine/instantiator": "^1.0.2",
|
| 705 |
"php": "^5.3|^7.0",
|
| 706 |
-
"phpdocumentor/reflection-docblock": "^2.0|^3.0.2
|
| 707 |
-
"sebastian/comparator": "^1.1
|
| 708 |
-
"sebastian/recursion-context": "^1.0|^2.0
|
| 709 |
},
|
| 710 |
"require-dev": {
|
| 711 |
-
"phpspec/phpspec": "^2.
|
| 712 |
-
"phpunit/phpunit": "^4.8
|
| 713 |
},
|
| 714 |
"type": "library",
|
| 715 |
"extra": {
|
| 716 |
"branch-alias": {
|
| 717 |
-
"dev-master": "1.
|
| 718 |
}
|
| 719 |
},
|
| 720 |
"autoload": {
|
|
@@ -747,44 +521,43 @@
|
|
| 747 |
"spy",
|
| 748 |
"stub"
|
| 749 |
],
|
| 750 |
-
"time": "
|
| 751 |
},
|
| 752 |
{
|
| 753 |
"name": "phpunit/php-code-coverage",
|
| 754 |
-
"version": "
|
| 755 |
"source": {
|
| 756 |
"type": "git",
|
| 757 |
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
| 758 |
-
"reference": "
|
| 759 |
},
|
| 760 |
"dist": {
|
| 761 |
"type": "zip",
|
| 762 |
-
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/
|
| 763 |
-
"reference": "
|
| 764 |
"shasum": ""
|
| 765 |
},
|
| 766 |
"require": {
|
| 767 |
-
"
|
| 768 |
-
"
|
| 769 |
-
"php": "
|
| 770 |
-
"phpunit/php-
|
| 771 |
-
"
|
| 772 |
-
"
|
| 773 |
-
"sebastian/code-unit-reverse-lookup": "^1.0.1",
|
| 774 |
-
"sebastian/environment": "^3.0",
|
| 775 |
-
"sebastian/version": "^2.0.1",
|
| 776 |
-
"theseer/tokenizer": "^1.1"
|
| 777 |
},
|
| 778 |
"require-dev": {
|
| 779 |
-
"
|
|
|
|
| 780 |
},
|
| 781 |
"suggest": {
|
| 782 |
-
"ext-
|
|
|
|
|
|
|
| 783 |
},
|
| 784 |
"type": "library",
|
| 785 |
"extra": {
|
| 786 |
"branch-alias": {
|
| 787 |
-
"dev-master": "
|
| 788 |
}
|
| 789 |
},
|
| 790 |
"autoload": {
|
|
@@ -799,7 +572,7 @@
|
|
| 799 |
"authors": [
|
| 800 |
{
|
| 801 |
"name": "Sebastian Bergmann",
|
| 802 |
-
"email": "sebastian
|
| 803 |
"role": "lead"
|
| 804 |
}
|
| 805 |
],
|
|
@@ -810,20 +583,20 @@
|
|
| 810 |
"testing",
|
| 811 |
"xunit"
|
| 812 |
],
|
| 813 |
-
"time": "
|
| 814 |
},
|
| 815 |
{
|
| 816 |
"name": "phpunit/php-file-iterator",
|
| 817 |
-
"version": "
|
| 818 |
"source": {
|
| 819 |
"type": "git",
|
| 820 |
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
|
| 821 |
-
"reference": "
|
| 822 |
},
|
| 823 |
"dist": {
|
| 824 |
"type": "zip",
|
| 825 |
-
"url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/
|
| 826 |
-
"reference": "
|
| 827 |
"shasum": ""
|
| 828 |
},
|
| 829 |
"require": {
|
|
@@ -857,7 +630,7 @@
|
|
| 857 |
"filesystem",
|
| 858 |
"iterator"
|
| 859 |
],
|
| 860 |
-
"time": "
|
| 861 |
},
|
| 862 |
{
|
| 863 |
"name": "phpunit/php-text-template",
|
|
@@ -898,34 +671,29 @@
|
|
| 898 |
"keywords": [
|
| 899 |
"template"
|
| 900 |
],
|
| 901 |
-
"time": "2015-06-
|
| 902 |
},
|
| 903 |
{
|
| 904 |
"name": "phpunit/php-timer",
|
| 905 |
-
"version": "1.0.
|
| 906 |
"source": {
|
| 907 |
"type": "git",
|
| 908 |
"url": "https://github.com/sebastianbergmann/php-timer.git",
|
| 909 |
-
"reference": "
|
| 910 |
},
|
| 911 |
"dist": {
|
| 912 |
"type": "zip",
|
| 913 |
-
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/
|
| 914 |
-
"reference": "
|
| 915 |
"shasum": ""
|
| 916 |
},
|
| 917 |
"require": {
|
| 918 |
-
"php": "
|
| 919 |
},
|
| 920 |
"require-dev": {
|
| 921 |
-
"phpunit/phpunit": "
|
| 922 |
},
|
| 923 |
"type": "library",
|
| 924 |
-
"extra": {
|
| 925 |
-
"branch-alias": {
|
| 926 |
-
"dev-master": "1.0-dev"
|
| 927 |
-
}
|
| 928 |
-
},
|
| 929 |
"autoload": {
|
| 930 |
"classmap": [
|
| 931 |
"src/"
|
|
@@ -947,33 +715,33 @@
|
|
| 947 |
"keywords": [
|
| 948 |
"timer"
|
| 949 |
],
|
| 950 |
-
"time": "
|
| 951 |
},
|
| 952 |
{
|
| 953 |
"name": "phpunit/php-token-stream",
|
| 954 |
-
"version": "
|
| 955 |
"source": {
|
| 956 |
"type": "git",
|
| 957 |
"url": "https://github.com/sebastianbergmann/php-token-stream.git",
|
| 958 |
-
"reference": "
|
| 959 |
},
|
| 960 |
"dist": {
|
| 961 |
"type": "zip",
|
| 962 |
-
"url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/
|
| 963 |
-
"reference": "
|
| 964 |
"shasum": ""
|
| 965 |
},
|
| 966 |
"require": {
|
| 967 |
"ext-tokenizer": "*",
|
| 968 |
-
"php": "
|
| 969 |
},
|
| 970 |
"require-dev": {
|
| 971 |
-
"phpunit/phpunit": "
|
| 972 |
},
|
| 973 |
"type": "library",
|
| 974 |
"extra": {
|
| 975 |
"branch-alias": {
|
| 976 |
-
"dev-master": "
|
| 977 |
}
|
| 978 |
},
|
| 979 |
"autoload": {
|
|
@@ -996,57 +764,45 @@
|
|
| 996 |
"keywords": [
|
| 997 |
"tokenizer"
|
| 998 |
],
|
| 999 |
-
"time": "
|
| 1000 |
},
|
| 1001 |
{
|
| 1002 |
"name": "phpunit/phpunit",
|
| 1003 |
-
"version": "
|
| 1004 |
"source": {
|
| 1005 |
"type": "git",
|
| 1006 |
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
| 1007 |
-
"reference": "
|
| 1008 |
},
|
| 1009 |
"dist": {
|
| 1010 |
"type": "zip",
|
| 1011 |
-
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/
|
| 1012 |
-
"reference": "
|
| 1013 |
"shasum": ""
|
| 1014 |
},
|
| 1015 |
"require": {
|
| 1016 |
"ext-dom": "*",
|
| 1017 |
"ext-json": "*",
|
| 1018 |
-
"ext-
|
| 1019 |
-
"ext-
|
| 1020 |
-
"ext-
|
| 1021 |
-
"
|
| 1022 |
-
"
|
| 1023 |
-
"
|
| 1024 |
-
"php": "
|
| 1025 |
-
"
|
| 1026 |
-
"phpunit/php-
|
| 1027 |
-
"phpunit/
|
| 1028 |
-
"
|
| 1029 |
-
"
|
| 1030 |
-
"
|
| 1031 |
-
"sebastian/
|
| 1032 |
-
"sebastian/
|
| 1033 |
-
"sebastian/
|
| 1034 |
-
"
|
| 1035 |
-
"sebastian/global-state": "^2.0",
|
| 1036 |
-
"sebastian/object-enumerator": "^3.0.3",
|
| 1037 |
-
"sebastian/resource-operations": "^1.0",
|
| 1038 |
-
"sebastian/version": "^2.0.1"
|
| 1039 |
-
},
|
| 1040 |
-
"conflict": {
|
| 1041 |
-
"phpdocumentor/reflection-docblock": "3.0.2",
|
| 1042 |
-
"phpunit/dbunit": "<3.0"
|
| 1043 |
-
},
|
| 1044 |
-
"require-dev": {
|
| 1045 |
-
"ext-pdo": "*"
|
| 1046 |
},
|
| 1047 |
"suggest": {
|
| 1048 |
-
"
|
| 1049 |
-
"phpunit/php-invoker": "^1.1"
|
| 1050 |
},
|
| 1051 |
"bin": [
|
| 1052 |
"phpunit"
|
|
@@ -1054,7 +810,7 @@
|
|
| 1054 |
"type": "library",
|
| 1055 |
"extra": {
|
| 1056 |
"branch-alias": {
|
| 1057 |
-
"dev-master": "
|
| 1058 |
}
|
| 1059 |
},
|
| 1060 |
"autoload": {
|
|
@@ -1080,33 +836,30 @@
|
|
| 1080 |
"testing",
|
| 1081 |
"xunit"
|
| 1082 |
],
|
| 1083 |
-
"time": "
|
| 1084 |
},
|
| 1085 |
{
|
| 1086 |
"name": "phpunit/phpunit-mock-objects",
|
| 1087 |
-
"version": "
|
| 1088 |
"source": {
|
| 1089 |
"type": "git",
|
| 1090 |
"url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
|
| 1091 |
-
"reference": "
|
| 1092 |
},
|
| 1093 |
"dist": {
|
| 1094 |
"type": "zip",
|
| 1095 |
-
"url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/
|
| 1096 |
-
"reference": "
|
| 1097 |
"shasum": ""
|
| 1098 |
},
|
| 1099 |
"require": {
|
| 1100 |
-
"doctrine/instantiator": "^1.0.
|
| 1101 |
-
"php": "
|
| 1102 |
-
"phpunit/php-text-template": "
|
| 1103 |
-
"sebastian/exporter": "
|
| 1104 |
-
},
|
| 1105 |
-
"conflict": {
|
| 1106 |
-
"phpunit/phpunit": "<6.0"
|
| 1107 |
},
|
| 1108 |
"require-dev": {
|
| 1109 |
-
"phpunit/phpunit": "
|
| 1110 |
},
|
| 1111 |
"suggest": {
|
| 1112 |
"ext-soap": "*"
|
|
@@ -1114,7 +867,7 @@
|
|
| 1114 |
"type": "library",
|
| 1115 |
"extra": {
|
| 1116 |
"branch-alias": {
|
| 1117 |
-
"dev-master": "
|
| 1118 |
}
|
| 1119 |
},
|
| 1120 |
"autoload": {
|
|
@@ -1129,7 +882,7 @@
|
|
| 1129 |
"authors": [
|
| 1130 |
{
|
| 1131 |
"name": "Sebastian Bergmann",
|
| 1132 |
-
"email": "sebastian
|
| 1133 |
"role": "lead"
|
| 1134 |
}
|
| 1135 |
],
|
|
@@ -1139,28 +892,24 @@
|
|
| 1139 |
"mock",
|
| 1140 |
"xunit"
|
| 1141 |
],
|
| 1142 |
-
"
|
| 1143 |
-
"time": "2018-08-09T05:50:03+00:00"
|
| 1144 |
},
|
| 1145 |
{
|
| 1146 |
-
"name": "
|
| 1147 |
-
"version": "
|
| 1148 |
"source": {
|
| 1149 |
"type": "git",
|
| 1150 |
-
"url": "https://github.com/
|
| 1151 |
-
"reference": "
|
| 1152 |
},
|
| 1153 |
"dist": {
|
| 1154 |
"type": "zip",
|
| 1155 |
-
"url": "https://api.github.com/repos/
|
| 1156 |
-
"reference": "
|
| 1157 |
"shasum": ""
|
| 1158 |
},
|
| 1159 |
"require": {
|
| 1160 |
-
"php": "
|
| 1161 |
-
},
|
| 1162 |
-
"require-dev": {
|
| 1163 |
-
"phpunit/phpunit": "^5.7 || ^6.0"
|
| 1164 |
},
|
| 1165 |
"type": "library",
|
| 1166 |
"extra": {
|
|
@@ -1169,50 +918,146 @@
|
|
| 1169 |
}
|
| 1170 |
},
|
| 1171 |
"autoload": {
|
| 1172 |
-
"
|
| 1173 |
-
"
|
| 1174 |
-
|
| 1175 |
},
|
| 1176 |
"notification-url": "https://packagist.org/downloads/",
|
| 1177 |
"license": [
|
| 1178 |
-
"
|
| 1179 |
],
|
| 1180 |
"authors": [
|
| 1181 |
{
|
| 1182 |
-
"name": "
|
| 1183 |
-
"
|
| 1184 |
}
|
| 1185 |
],
|
| 1186 |
-
"description": "
|
| 1187 |
-
"homepage": "https://github.com/
|
| 1188 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1189 |
},
|
| 1190 |
{
|
| 1191 |
"name": "sebastian/comparator",
|
| 1192 |
-
"version": "
|
| 1193 |
"source": {
|
| 1194 |
"type": "git",
|
| 1195 |
"url": "https://github.com/sebastianbergmann/comparator.git",
|
| 1196 |
-
"reference": "
|
| 1197 |
},
|
| 1198 |
"dist": {
|
| 1199 |
"type": "zip",
|
| 1200 |
-
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/
|
| 1201 |
-
"reference": "
|
| 1202 |
"shasum": ""
|
| 1203 |
},
|
| 1204 |
"require": {
|
| 1205 |
-
"php": "^7.0",
|
| 1206 |
-
"sebastian/diff": "^2
|
| 1207 |
-
"sebastian/exporter": "^
|
| 1208 |
},
|
| 1209 |
"require-dev": {
|
| 1210 |
-
"phpunit/phpunit": "^
|
| 1211 |
},
|
| 1212 |
"type": "library",
|
| 1213 |
"extra": {
|
| 1214 |
"branch-alias": {
|
| 1215 |
-
"dev-master": "2.
|
| 1216 |
}
|
| 1217 |
},
|
| 1218 |
"autoload": {
|
|
@@ -1243,38 +1088,38 @@
|
|
| 1243 |
}
|
| 1244 |
],
|
| 1245 |
"description": "Provides the functionality to compare PHP values for equality",
|
| 1246 |
-
"homepage": "
|
| 1247 |
"keywords": [
|
| 1248 |
"comparator",
|
| 1249 |
"compare",
|
| 1250 |
"equality"
|
| 1251 |
],
|
| 1252 |
-
"time": "
|
| 1253 |
},
|
| 1254 |
{
|
| 1255 |
"name": "sebastian/diff",
|
| 1256 |
-
"version": "
|
| 1257 |
"source": {
|
| 1258 |
"type": "git",
|
| 1259 |
"url": "https://github.com/sebastianbergmann/diff.git",
|
| 1260 |
-
"reference": "
|
| 1261 |
},
|
| 1262 |
"dist": {
|
| 1263 |
"type": "zip",
|
| 1264 |
-
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/
|
| 1265 |
-
"reference": "
|
| 1266 |
"shasum": ""
|
| 1267 |
},
|
| 1268 |
"require": {
|
| 1269 |
-
"php": "
|
| 1270 |
},
|
| 1271 |
"require-dev": {
|
| 1272 |
-
"phpunit/phpunit": "
|
| 1273 |
},
|
| 1274 |
"type": "library",
|
| 1275 |
"extra": {
|
| 1276 |
"branch-alias": {
|
| 1277 |
-
"dev-master": "
|
| 1278 |
}
|
| 1279 |
},
|
| 1280 |
"autoload": {
|
|
@@ -1301,32 +1146,32 @@
|
|
| 1301 |
"keywords": [
|
| 1302 |
"diff"
|
| 1303 |
],
|
| 1304 |
-
"time": "
|
| 1305 |
},
|
| 1306 |
{
|
| 1307 |
"name": "sebastian/environment",
|
| 1308 |
-
"version": "3.
|
| 1309 |
"source": {
|
| 1310 |
"type": "git",
|
| 1311 |
"url": "https://github.com/sebastianbergmann/environment.git",
|
| 1312 |
-
"reference": "
|
| 1313 |
},
|
| 1314 |
"dist": {
|
| 1315 |
"type": "zip",
|
| 1316 |
-
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/
|
| 1317 |
-
"reference": "
|
| 1318 |
"shasum": ""
|
| 1319 |
},
|
| 1320 |
"require": {
|
| 1321 |
-
"php": "^7.0"
|
| 1322 |
},
|
| 1323 |
"require-dev": {
|
| 1324 |
-
"phpunit/phpunit": "^
|
| 1325 |
},
|
| 1326 |
"type": "library",
|
| 1327 |
"extra": {
|
| 1328 |
"branch-alias": {
|
| 1329 |
-
"dev-master": "3.
|
| 1330 |
}
|
| 1331 |
},
|
| 1332 |
"autoload": {
|
|
@@ -1351,34 +1196,34 @@
|
|
| 1351 |
"environment",
|
| 1352 |
"hhvm"
|
| 1353 |
],
|
| 1354 |
-
"time": "
|
| 1355 |
},
|
| 1356 |
{
|
| 1357 |
"name": "sebastian/exporter",
|
| 1358 |
-
"version": "
|
| 1359 |
"source": {
|
| 1360 |
"type": "git",
|
| 1361 |
"url": "https://github.com/sebastianbergmann/exporter.git",
|
| 1362 |
-
"reference": "
|
| 1363 |
},
|
| 1364 |
"dist": {
|
| 1365 |
"type": "zip",
|
| 1366 |
-
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/
|
| 1367 |
-
"reference": "
|
| 1368 |
"shasum": ""
|
| 1369 |
},
|
| 1370 |
"require": {
|
| 1371 |
-
"php": "
|
| 1372 |
-
"sebastian/recursion-context": "
|
| 1373 |
},
|
| 1374 |
"require-dev": {
|
| 1375 |
"ext-mbstring": "*",
|
| 1376 |
-
"phpunit/phpunit": "
|
| 1377 |
},
|
| 1378 |
"type": "library",
|
| 1379 |
"extra": {
|
| 1380 |
"branch-alias": {
|
| 1381 |
-
"dev-master": "3.
|
| 1382 |
}
|
| 1383 |
},
|
| 1384 |
"autoload": {
|
|
@@ -1418,27 +1263,27 @@
|
|
| 1418 |
"export",
|
| 1419 |
"exporter"
|
| 1420 |
],
|
| 1421 |
-
"time": "
|
| 1422 |
},
|
| 1423 |
{
|
| 1424 |
"name": "sebastian/global-state",
|
| 1425 |
-
"version": "
|
| 1426 |
"source": {
|
| 1427 |
"type": "git",
|
| 1428 |
"url": "https://github.com/sebastianbergmann/global-state.git",
|
| 1429 |
-
"reference": "
|
| 1430 |
},
|
| 1431 |
"dist": {
|
| 1432 |
"type": "zip",
|
| 1433 |
-
"url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/
|
| 1434 |
-
"reference": "
|
| 1435 |
"shasum": ""
|
| 1436 |
},
|
| 1437 |
"require": {
|
| 1438 |
-
"php": "
|
| 1439 |
},
|
| 1440 |
"require-dev": {
|
| 1441 |
-
"phpunit/phpunit": "
|
| 1442 |
},
|
| 1443 |
"suggest": {
|
| 1444 |
"ext-uopz": "*"
|
|
@@ -1446,7 +1291,7 @@
|
|
| 1446 |
"type": "library",
|
| 1447 |
"extra": {
|
| 1448 |
"branch-alias": {
|
| 1449 |
-
"dev-master": "
|
| 1450 |
}
|
| 1451 |
},
|
| 1452 |
"autoload": {
|
|
@@ -1469,34 +1314,32 @@
|
|
| 1469 |
"keywords": [
|
| 1470 |
"global state"
|
| 1471 |
],
|
| 1472 |
-
"time": "
|
| 1473 |
},
|
| 1474 |
{
|
| 1475 |
-
"name": "sebastian/
|
| 1476 |
-
"version": "
|
| 1477 |
"source": {
|
| 1478 |
"type": "git",
|
| 1479 |
-
"url": "https://github.com/sebastianbergmann/
|
| 1480 |
-
"reference": "
|
| 1481 |
},
|
| 1482 |
"dist": {
|
| 1483 |
"type": "zip",
|
| 1484 |
-
"url": "https://api.github.com/repos/sebastianbergmann/
|
| 1485 |
-
"reference": "
|
| 1486 |
"shasum": ""
|
| 1487 |
},
|
| 1488 |
"require": {
|
| 1489 |
-
"php": "
|
| 1490 |
-
"sebastian/object-reflector": "^1.1.1",
|
| 1491 |
-
"sebastian/recursion-context": "^3.0"
|
| 1492 |
},
|
| 1493 |
"require-dev": {
|
| 1494 |
-
"phpunit/phpunit": "
|
| 1495 |
},
|
| 1496 |
"type": "library",
|
| 1497 |
"extra": {
|
| 1498 |
"branch-alias": {
|
| 1499 |
-
"dev-master": "
|
| 1500 |
}
|
| 1501 |
},
|
| 1502 |
"autoload": {
|
|
@@ -1509,315 +1352,422 @@
|
|
| 1509 |
"BSD-3-Clause"
|
| 1510 |
],
|
| 1511 |
"authors": [
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1512 |
{
|
| 1513 |
"name": "Sebastian Bergmann",
|
| 1514 |
"email": "sebastian@phpunit.de"
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1515 |
}
|
| 1516 |
],
|
| 1517 |
-
"description": "
|
| 1518 |
-
"homepage": "
|
| 1519 |
-
"time": "
|
| 1520 |
},
|
| 1521 |
{
|
| 1522 |
-
"name": "sebastian/
|
| 1523 |
-
"version": "1.
|
| 1524 |
"source": {
|
| 1525 |
"type": "git",
|
| 1526 |
-
"url": "https://github.com/sebastianbergmann/
|
| 1527 |
-
"reference": "
|
| 1528 |
},
|
| 1529 |
"dist": {
|
| 1530 |
"type": "zip",
|
| 1531 |
-
"url": "https://api.github.com/repos/sebastianbergmann/
|
| 1532 |
-
"reference": "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1533 |
"shasum": ""
|
| 1534 |
},
|
| 1535 |
"require": {
|
| 1536 |
-
"php": "
|
|
|
|
| 1537 |
},
|
| 1538 |
"require-dev": {
|
| 1539 |
-
"
|
|
|
|
|
|
|
|
|
|
| 1540 |
},
|
| 1541 |
"type": "library",
|
| 1542 |
"extra": {
|
| 1543 |
"branch-alias": {
|
| 1544 |
-
"dev-master": "
|
| 1545 |
}
|
| 1546 |
},
|
| 1547 |
"autoload": {
|
| 1548 |
-
"
|
| 1549 |
-
"
|
|
|
|
|
|
|
|
|
|
| 1550 |
]
|
| 1551 |
},
|
| 1552 |
"notification-url": "https://packagist.org/downloads/",
|
| 1553 |
"license": [
|
| 1554 |
-
"
|
| 1555 |
],
|
| 1556 |
"authors": [
|
| 1557 |
{
|
| 1558 |
-
"name": "
|
| 1559 |
-
"email": "
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1560 |
}
|
| 1561 |
],
|
| 1562 |
-
"description": "
|
| 1563 |
-
"homepage": "https://
|
| 1564 |
-
"time": "2017-
|
| 1565 |
},
|
| 1566 |
{
|
| 1567 |
-
"name": "
|
| 1568 |
-
"version": "
|
| 1569 |
"source": {
|
| 1570 |
"type": "git",
|
| 1571 |
-
"url": "https://github.com/
|
| 1572 |
-
"reference": "
|
| 1573 |
},
|
| 1574 |
"dist": {
|
| 1575 |
"type": "zip",
|
| 1576 |
-
"url": "https://api.github.com/repos/
|
| 1577 |
-
"reference": "
|
| 1578 |
"shasum": ""
|
| 1579 |
},
|
| 1580 |
"require": {
|
| 1581 |
-
"php": "
|
|
|
|
|
|
|
| 1582 |
},
|
| 1583 |
"require-dev": {
|
| 1584 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1585 |
},
|
| 1586 |
"type": "library",
|
| 1587 |
"extra": {
|
| 1588 |
"branch-alias": {
|
| 1589 |
-
"dev-master": "3.
|
| 1590 |
}
|
| 1591 |
},
|
| 1592 |
"autoload": {
|
| 1593 |
-
"
|
| 1594 |
-
"
|
|
|
|
|
|
|
|
|
|
| 1595 |
]
|
| 1596 |
},
|
| 1597 |
"notification-url": "https://packagist.org/downloads/",
|
| 1598 |
"license": [
|
| 1599 |
-
"
|
| 1600 |
],
|
| 1601 |
"authors": [
|
| 1602 |
{
|
| 1603 |
-
"name": "
|
| 1604 |
-
"email": "
|
| 1605 |
-
},
|
| 1606 |
-
{
|
| 1607 |
-
"name": "Sebastian Bergmann",
|
| 1608 |
-
"email": "sebastian@phpunit.de"
|
| 1609 |
},
|
| 1610 |
{
|
| 1611 |
-
"name": "
|
| 1612 |
-
"
|
| 1613 |
}
|
| 1614 |
],
|
| 1615 |
-
"description": "
|
| 1616 |
-
"homepage": "
|
| 1617 |
-
"time": "2017-
|
| 1618 |
},
|
| 1619 |
{
|
| 1620 |
-
"name": "
|
| 1621 |
-
"version": "
|
| 1622 |
"source": {
|
| 1623 |
"type": "git",
|
| 1624 |
-
"url": "https://github.com/
|
| 1625 |
-
"reference": "
|
| 1626 |
},
|
| 1627 |
"dist": {
|
| 1628 |
"type": "zip",
|
| 1629 |
-
"url": "https://api.github.com/repos/
|
| 1630 |
-
"reference": "
|
| 1631 |
"shasum": ""
|
| 1632 |
},
|
| 1633 |
"require": {
|
| 1634 |
-
"php": ">=5.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1635 |
},
|
| 1636 |
"type": "library",
|
| 1637 |
"extra": {
|
| 1638 |
"branch-alias": {
|
| 1639 |
-
"dev-master": "
|
| 1640 |
}
|
| 1641 |
},
|
| 1642 |
"autoload": {
|
| 1643 |
-
"
|
| 1644 |
-
"
|
|
|
|
|
|
|
|
|
|
| 1645 |
]
|
| 1646 |
},
|
| 1647 |
"notification-url": "https://packagist.org/downloads/",
|
| 1648 |
"license": [
|
| 1649 |
-
"
|
| 1650 |
],
|
| 1651 |
"authors": [
|
| 1652 |
{
|
| 1653 |
-
"name": "
|
| 1654 |
-
"email": "
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1655 |
}
|
| 1656 |
],
|
| 1657 |
-
"description": "
|
| 1658 |
-
"homepage": "https://
|
| 1659 |
-
"time": "
|
| 1660 |
},
|
| 1661 |
{
|
| 1662 |
-
"name": "
|
| 1663 |
-
"version": "2.
|
| 1664 |
"source": {
|
| 1665 |
"type": "git",
|
| 1666 |
-
"url": "https://github.com/
|
| 1667 |
-
"reference": "
|
| 1668 |
},
|
| 1669 |
"dist": {
|
| 1670 |
"type": "zip",
|
| 1671 |
-
"url": "https://api.github.com/repos/
|
| 1672 |
-
"reference": "
|
| 1673 |
"shasum": ""
|
| 1674 |
},
|
| 1675 |
"require": {
|
| 1676 |
-
"php": ">=5.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1677 |
},
|
| 1678 |
"type": "library",
|
| 1679 |
"extra": {
|
| 1680 |
"branch-alias": {
|
| 1681 |
-
"dev-master": "2.
|
| 1682 |
}
|
| 1683 |
},
|
| 1684 |
"autoload": {
|
| 1685 |
-
"
|
| 1686 |
-
"
|
|
|
|
|
|
|
|
|
|
| 1687 |
]
|
| 1688 |
},
|
| 1689 |
"notification-url": "https://packagist.org/downloads/",
|
| 1690 |
"license": [
|
| 1691 |
-
"
|
| 1692 |
],
|
| 1693 |
"authors": [
|
| 1694 |
{
|
| 1695 |
-
"name": "
|
| 1696 |
-
"email": "
|
| 1697 |
-
|
|
|
|
|
|
|
|
|
|
| 1698 |
}
|
| 1699 |
],
|
| 1700 |
-
"description": "
|
| 1701 |
-
"homepage": "https://
|
| 1702 |
-
"time": "
|
| 1703 |
},
|
| 1704 |
{
|
| 1705 |
-
"name": "
|
| 1706 |
-
"version": "
|
| 1707 |
"source": {
|
| 1708 |
"type": "git",
|
| 1709 |
-
"url": "https://github.com/
|
| 1710 |
-
"reference": "
|
| 1711 |
},
|
| 1712 |
"dist": {
|
| 1713 |
"type": "zip",
|
| 1714 |
-
"url": "https://api.github.com/repos/
|
| 1715 |
-
"reference": "
|
| 1716 |
"shasum": ""
|
| 1717 |
},
|
| 1718 |
"require": {
|
| 1719 |
-
"php": "
|
| 1720 |
-
"squizlabs/php_codesniffer": "^3.0.1"
|
| 1721 |
},
|
| 1722 |
-
"
|
| 1723 |
-
|
| 1724 |
-
"
|
| 1725 |
-
|
| 1726 |
-
|
| 1727 |
},
|
| 1728 |
-
"type": "phpcodesniffer-standard",
|
| 1729 |
"autoload": {
|
| 1730 |
"psr-4": {
|
| 1731 |
-
"
|
| 1732 |
-
}
|
|
|
|
|
|
|
|
|
|
| 1733 |
},
|
| 1734 |
"notification-url": "https://packagist.org/downloads/",
|
| 1735 |
"license": [
|
| 1736 |
"MIT"
|
| 1737 |
],
|
| 1738 |
-
"
|
| 1739 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1740 |
},
|
| 1741 |
{
|
| 1742 |
-
"name": "
|
| 1743 |
-
"version": "
|
| 1744 |
"source": {
|
| 1745 |
"type": "git",
|
| 1746 |
-
"url": "https://github.com/
|
| 1747 |
-
"reference": "
|
| 1748 |
},
|
| 1749 |
"dist": {
|
| 1750 |
"type": "zip",
|
| 1751 |
-
"url": "https://api.github.com/repos/
|
| 1752 |
-
"reference": "
|
| 1753 |
"shasum": ""
|
| 1754 |
},
|
| 1755 |
"require": {
|
| 1756 |
-
"
|
| 1757 |
-
"ext-tokenizer": "*",
|
| 1758 |
-
"ext-xmlwriter": "*",
|
| 1759 |
-
"php": ">=5.4.0"
|
| 1760 |
-
},
|
| 1761 |
-
"require-dev": {
|
| 1762 |
-
"phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
|
| 1763 |
},
|
| 1764 |
-
"bin": [
|
| 1765 |
-
"bin/phpcs",
|
| 1766 |
-
"bin/phpcbf"
|
| 1767 |
-
],
|
| 1768 |
"type": "library",
|
| 1769 |
"extra": {
|
| 1770 |
"branch-alias": {
|
| 1771 |
-
"dev-master": "3.
|
| 1772 |
}
|
| 1773 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1774 |
"notification-url": "https://packagist.org/downloads/",
|
| 1775 |
"license": [
|
| 1776 |
-
"
|
| 1777 |
],
|
| 1778 |
"authors": [
|
| 1779 |
{
|
| 1780 |
-
"name": "
|
| 1781 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1782 |
}
|
| 1783 |
],
|
| 1784 |
-
"description": "
|
| 1785 |
-
"homepage": "https://
|
| 1786 |
-
"
|
| 1787 |
-
"phpcs",
|
| 1788 |
-
"standards"
|
| 1789 |
-
],
|
| 1790 |
-
"time": "2019-04-10T23:49:02+00:00"
|
| 1791 |
},
|
| 1792 |
{
|
| 1793 |
-
"name": "symfony/polyfill-
|
| 1794 |
-
"version": "
|
| 1795 |
"source": {
|
| 1796 |
"type": "git",
|
| 1797 |
-
"url": "https://github.com/symfony/polyfill-
|
| 1798 |
-
"reference": "
|
| 1799 |
},
|
| 1800 |
"dist": {
|
| 1801 |
"type": "zip",
|
| 1802 |
-
"url": "https://api.github.com/repos/symfony/polyfill-
|
| 1803 |
-
"reference": "
|
| 1804 |
"shasum": ""
|
| 1805 |
},
|
| 1806 |
"require": {
|
| 1807 |
"php": ">=5.3.3"
|
| 1808 |
},
|
| 1809 |
"suggest": {
|
| 1810 |
-
"ext-
|
| 1811 |
},
|
| 1812 |
"type": "library",
|
| 1813 |
"extra": {
|
| 1814 |
"branch-alias": {
|
| 1815 |
-
"dev-master": "1.
|
| 1816 |
}
|
| 1817 |
},
|
| 1818 |
"autoload": {
|
| 1819 |
"psr-4": {
|
| 1820 |
-
"Symfony\\Polyfill\\
|
| 1821 |
},
|
| 1822 |
"files": [
|
| 1823 |
"bootstrap.php"
|
|
@@ -1829,81 +1779,194 @@
|
|
| 1829 |
],
|
| 1830 |
"authors": [
|
| 1831 |
{
|
| 1832 |
-
"name": "
|
| 1833 |
-
"
|
| 1834 |
},
|
| 1835 |
{
|
| 1836 |
-
"name": "
|
| 1837 |
-
"
|
| 1838 |
}
|
| 1839 |
],
|
| 1840 |
-
"description": "Symfony polyfill for
|
| 1841 |
"homepage": "https://symfony.com",
|
| 1842 |
"keywords": [
|
| 1843 |
"compatibility",
|
| 1844 |
-
"
|
| 1845 |
"polyfill",
|
| 1846 |
-
"portable"
|
|
|
|
| 1847 |
],
|
| 1848 |
-
"time": "
|
| 1849 |
},
|
| 1850 |
{
|
| 1851 |
-
"name": "
|
| 1852 |
-
"version": "
|
| 1853 |
"source": {
|
| 1854 |
"type": "git",
|
| 1855 |
-
"url": "https://github.com/
|
| 1856 |
-
"reference": "
|
| 1857 |
},
|
| 1858 |
"dist": {
|
| 1859 |
"type": "zip",
|
| 1860 |
-
"url": "https://api.github.com/repos/
|
| 1861 |
-
"reference": "
|
| 1862 |
"shasum": ""
|
| 1863 |
},
|
| 1864 |
"require": {
|
| 1865 |
-
"
|
| 1866 |
-
"ext-tokenizer": "*",
|
| 1867 |
-
"ext-xmlwriter": "*",
|
| 1868 |
-
"php": "^7.0"
|
| 1869 |
},
|
| 1870 |
"type": "library",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1871 |
"autoload": {
|
| 1872 |
-
"
|
| 1873 |
-
"
|
|
|
|
|
|
|
|
|
|
| 1874 |
]
|
| 1875 |
},
|
| 1876 |
"notification-url": "https://packagist.org/downloads/",
|
| 1877 |
"license": [
|
| 1878 |
-
"
|
| 1879 |
],
|
| 1880 |
"authors": [
|
| 1881 |
{
|
| 1882 |
-
"name": "
|
| 1883 |
-
"email": "
|
| 1884 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1885 |
}
|
| 1886 |
],
|
| 1887 |
-
"description": "
|
| 1888 |
-
"
|
|
|
|
| 1889 |
},
|
| 1890 |
{
|
| 1891 |
"name": "webmozart/assert",
|
| 1892 |
-
"version": "
|
| 1893 |
"source": {
|
| 1894 |
"type": "git",
|
| 1895 |
"url": "https://github.com/webmozart/assert.git",
|
| 1896 |
-
"reference": "
|
| 1897 |
},
|
| 1898 |
"dist": {
|
| 1899 |
"type": "zip",
|
| 1900 |
-
"url": "https://api.github.com/repos/webmozart/assert/zipball/
|
| 1901 |
-
"reference": "
|
| 1902 |
"shasum": ""
|
| 1903 |
},
|
| 1904 |
"require": {
|
| 1905 |
-
"php": "^5.3.3 || ^7.0"
|
| 1906 |
-
"symfony/polyfill-ctype": "^1.8"
|
| 1907 |
},
|
| 1908 |
"require-dev": {
|
| 1909 |
"phpunit/phpunit": "^4.6",
|
|
@@ -1936,16 +1999,18 @@
|
|
| 1936 |
"check",
|
| 1937 |
"validate"
|
| 1938 |
],
|
| 1939 |
-
"time": "
|
| 1940 |
}
|
| 1941 |
],
|
| 1942 |
"aliases": [],
|
| 1943 |
"minimum-stability": "dev",
|
| 1944 |
-
"stability-flags":
|
| 1945 |
-
|
|
|
|
|
|
|
| 1946 |
"prefer-lowest": false,
|
| 1947 |
"platform": {
|
| 1948 |
-
"php": "^
|
| 1949 |
},
|
| 1950 |
"platform-dev": []
|
| 1951 |
}
|
| 1 |
{
|
| 2 |
"_readme": [
|
| 3 |
"This file locks the dependencies of your project to a known state",
|
| 4 |
+
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
| 5 |
"This file is @generated automatically"
|
| 6 |
],
|
| 7 |
+
"hash": "6167d787b5e70ba6f43df2f23a2bd412",
|
| 8 |
+
"content-hash": "68e2338a39a45ad48cb0a3dfcb125f71",
|
| 9 |
+
"packages": [],
|
| 10 |
+
"packages-dev": [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
{
|
| 12 |
+
"name": "codeclimate/php-test-reporter",
|
| 13 |
+
"version": "v0.3.2",
|
| 14 |
"source": {
|
| 15 |
"type": "git",
|
| 16 |
+
"url": "https://github.com/codeclimate/php-test-reporter.git",
|
| 17 |
+
"reference": "3a2d3ebdc1df5acf372458c15041af240a6fc016"
|
| 18 |
},
|
| 19 |
"dist": {
|
| 20 |
"type": "zip",
|
| 21 |
+
"url": "https://api.github.com/repos/codeclimate/php-test-reporter/zipball/3a2d3ebdc1df5acf372458c15041af240a6fc016",
|
| 22 |
+
"reference": "3a2d3ebdc1df5acf372458c15041af240a6fc016",
|
| 23 |
"shasum": ""
|
| 24 |
},
|
| 25 |
"require": {
|
| 26 |
+
"ext-curl": "*",
|
| 27 |
+
"php": ">=5.3",
|
| 28 |
+
"satooshi/php-coveralls": "1.0.*",
|
| 29 |
+
"symfony/console": ">=2.0"
|
| 30 |
},
|
| 31 |
"require-dev": {
|
| 32 |
+
"ext-xdebug": "*",
|
| 33 |
+
"phpunit/phpunit": "3.7.*@stable"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 34 |
},
|
| 35 |
+
"bin": [
|
| 36 |
+
"composer/bin/test-reporter"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 38 |
"type": "library",
|
| 39 |
"extra": {
|
| 40 |
"branch-alias": {
|
| 41 |
+
"dev-master": "0.3.x-dev"
|
| 42 |
}
|
| 43 |
},
|
| 44 |
"autoload": {
|
| 45 |
+
"psr-0": {
|
| 46 |
+
"CodeClimate\\Component": "src/",
|
| 47 |
+
"CodeClimate\\Bundle": "src/"
|
| 48 |
}
|
| 49 |
},
|
| 50 |
"notification-url": "https://packagist.org/downloads/",
|
| 53 |
],
|
| 54 |
"authors": [
|
| 55 |
{
|
| 56 |
+
"name": "Code Climate",
|
| 57 |
+
"email": "hello@codeclimate.com",
|
| 58 |
+
"homepage": "https://codeclimate.com"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 59 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
],
|
| 61 |
+
"description": "PHP client for reporting test coverage to Code Climate",
|
| 62 |
+
"homepage": "https://github.com/codeclimate/php-test-reporter",
|
| 63 |
+
"keywords": [
|
| 64 |
+
"codeclimate",
|
| 65 |
+
"coverage"
|
| 66 |
],
|
| 67 |
+
"time": "2016-04-19 16:54:33"
|
|
|
|
| 68 |
},
|
| 69 |
{
|
| 70 |
+
"name": "dhii/php-cs-fixer-config",
|
| 71 |
+
"version": "dev-php-5.3",
|
| 72 |
"source": {
|
| 73 |
"type": "git",
|
| 74 |
+
"url": "https://github.com/Dhii/php-cs-fixer-config.git",
|
| 75 |
+
"reference": "ee3cc6c906a1aa4dca2bcbfcfef684dbd1ebb8ca"
|
| 76 |
},
|
| 77 |
"dist": {
|
| 78 |
"type": "zip",
|
| 79 |
+
"url": "https://api.github.com/repos/Dhii/php-cs-fixer-config/zipball/ee3cc6c906a1aa4dca2bcbfcfef684dbd1ebb8ca",
|
| 80 |
+
"reference": "ee3cc6c906a1aa4dca2bcbfcfef684dbd1ebb8ca",
|
| 81 |
"shasum": ""
|
| 82 |
},
|
| 83 |
"require": {
|
| 84 |
+
"friendsofphp/php-cs-fixer": ">=1.11 <1.12",
|
| 85 |
"php": "^5.3 | ^7.0"
|
| 86 |
},
|
| 87 |
"require-dev": {
|
| 88 |
+
"phpunit/phpunit": "^4.8"
|
|
|
|
|
|
|
|
|
|
| 89 |
},
|
| 90 |
"type": "library",
|
| 91 |
"autoload": {
|
| 92 |
"psr-4": {
|
| 93 |
+
"Dhii\\Configuration\\PHPCSFixer\\": "src/"
|
| 94 |
}
|
| 95 |
},
|
| 96 |
"notification-url": "https://packagist.org/downloads/",
|
| 103 |
"email": "development@dhii.co"
|
| 104 |
}
|
| 105 |
],
|
| 106 |
+
"description": "A default PHP CS Fixer config implementation",
|
| 107 |
+
"time": "2016-09-03 14:45:03"
|
| 108 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 109 |
{
|
| 110 |
"name": "doctrine/instantiator",
|
| 111 |
+
"version": "dev-master",
|
| 112 |
"source": {
|
| 113 |
"type": "git",
|
| 114 |
"url": "https://github.com/doctrine/instantiator.git",
|
| 115 |
+
"reference": "416fb8ad1d095a87f1d21bc40711843cd122fd4a"
|
| 116 |
},
|
| 117 |
"dist": {
|
| 118 |
"type": "zip",
|
| 119 |
+
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/416fb8ad1d095a87f1d21bc40711843cd122fd4a",
|
| 120 |
+
"reference": "416fb8ad1d095a87f1d21bc40711843cd122fd4a",
|
| 121 |
"shasum": ""
|
| 122 |
},
|
| 123 |
"require": {
|
| 158 |
"constructor",
|
| 159 |
"instantiate"
|
| 160 |
],
|
| 161 |
+
"time": "2016-03-31 10:24:22"
|
| 162 |
},
|
| 163 |
{
|
| 164 |
+
"name": "friendsofphp/php-cs-fixer",
|
| 165 |
+
"version": "v1.11.8",
|
| 166 |
"source": {
|
| 167 |
"type": "git",
|
| 168 |
+
"url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git",
|
| 169 |
+
"reference": "117137e9970054d022b7656209f094dab852b90c"
|
| 170 |
},
|
| 171 |
"dist": {
|
| 172 |
"type": "zip",
|
| 173 |
+
"url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/117137e9970054d022b7656209f094dab852b90c",
|
| 174 |
+
"reference": "117137e9970054d022b7656209f094dab852b90c",
|
| 175 |
"shasum": ""
|
| 176 |
},
|
| 177 |
"require": {
|
| 178 |
+
"ext-tokenizer": "*",
|
| 179 |
+
"php": ">=5.3.6",
|
| 180 |
+
"sebastian/diff": "~1.1",
|
| 181 |
+
"symfony/console": "~2.3|~3.0",
|
| 182 |
+
"symfony/event-dispatcher": "~2.1|~3.0",
|
| 183 |
+
"symfony/filesystem": "~2.1|~3.0",
|
| 184 |
+
"symfony/finder": "~2.1|~3.0",
|
| 185 |
+
"symfony/process": "~2.3|~3.0",
|
| 186 |
+
"symfony/stopwatch": "~2.5|~3.0"
|
| 187 |
},
|
| 188 |
+
"conflict": {
|
| 189 |
+
"hhvm": "<3.9"
|
| 190 |
},
|
| 191 |
+
"require-dev": {
|
| 192 |
+
"phpunit/phpunit": "^4.5|^5",
|
| 193 |
+
"satooshi/php-coveralls": "^0.7.1"
|
|
|
|
|
|
|
| 194 |
},
|
| 195 |
+
"bin": [
|
| 196 |
+
"php-cs-fixer"
|
| 197 |
+
],
|
| 198 |
+
"type": "application",
|
| 199 |
"autoload": {
|
| 200 |
"psr-4": {
|
| 201 |
+
"Symfony\\CS\\": "Symfony/CS/"
|
| 202 |
}
|
| 203 |
},
|
| 204 |
"notification-url": "https://packagist.org/downloads/",
|
| 207 |
],
|
| 208 |
"authors": [
|
| 209 |
{
|
| 210 |
+
"name": "Dariusz Rumiński",
|
| 211 |
+
"email": "dariusz.ruminski@gmail.com"
|
| 212 |
+
},
|
| 213 |
+
{
|
| 214 |
+
"name": "Fabien Potencier",
|
| 215 |
+
"email": "fabien@symfony.com"
|
| 216 |
}
|
| 217 |
],
|
| 218 |
+
"description": "A tool to automatically fix PHP code style",
|
| 219 |
+
"time": "2016-08-16 23:31:05"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 220 |
},
|
| 221 |
{
|
| 222 |
+
"name": "guzzle/guzzle",
|
| 223 |
+
"version": "dev-master",
|
| 224 |
"source": {
|
| 225 |
"type": "git",
|
| 226 |
+
"url": "https://github.com/guzzle/guzzle3.git",
|
| 227 |
+
"reference": "f7778ed85e3db90009d79725afd6c3a82dab32fe"
|
| 228 |
},
|
| 229 |
"dist": {
|
| 230 |
"type": "zip",
|
| 231 |
+
"url": "https://api.github.com/repos/guzzle/guzzle3/zipball/f7778ed85e3db90009d79725afd6c3a82dab32fe",
|
| 232 |
+
"reference": "f7778ed85e3db90009d79725afd6c3a82dab32fe",
|
| 233 |
"shasum": ""
|
| 234 |
},
|
| 235 |
"require": {
|
| 236 |
+
"ext-curl": "*",
|
| 237 |
+
"php": ">=5.3.3",
|
| 238 |
+
"symfony/event-dispatcher": "~2.1"
|
| 239 |
+
},
|
| 240 |
+
"replace": {
|
| 241 |
+
"guzzle/batch": "self.version",
|
| 242 |
+
"guzzle/cache": "self.version",
|
| 243 |
+
"guzzle/common": "self.version",
|
| 244 |
+
"guzzle/http": "self.version",
|
| 245 |
+
"guzzle/inflection": "self.version",
|
| 246 |
+
"guzzle/iterator": "self.version",
|
| 247 |
+
"guzzle/log": "self.version",
|
| 248 |
+
"guzzle/parser": "self.version",
|
| 249 |
+
"guzzle/plugin": "self.version",
|
| 250 |
+
"guzzle/plugin-async": "self.version",
|
| 251 |
+
"guzzle/plugin-backoff": "self.version",
|
| 252 |
+
"guzzle/plugin-cache": "self.version",
|
| 253 |
+
"guzzle/plugin-cookie": "self.version",
|
| 254 |
+
"guzzle/plugin-curlauth": "self.version",
|
| 255 |
+
"guzzle/plugin-error-response": "self.version",
|
| 256 |
+
"guzzle/plugin-history": "self.version",
|
| 257 |
+
"guzzle/plugin-log": "self.version",
|
| 258 |
+
"guzzle/plugin-md5": "self.version",
|
| 259 |
+
"guzzle/plugin-mock": "self.version",
|
| 260 |
+
"guzzle/plugin-oauth": "self.version",
|
| 261 |
+
"guzzle/service": "self.version",
|
| 262 |
+
"guzzle/stream": "self.version"
|
| 263 |
},
|
| 264 |
"require-dev": {
|
| 265 |
+
"doctrine/cache": "~1.3",
|
| 266 |
+
"monolog/monolog": "~1.0",
|
| 267 |
+
"phpunit/phpunit": "3.7.*",
|
| 268 |
+
"psr/log": "~1.0",
|
| 269 |
+
"symfony/class-loader": "~2.1",
|
| 270 |
+
"zendframework/zend-cache": "2.*,<2.3",
|
| 271 |
+
"zendframework/zend-log": "2.*,<2.3"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 272 |
},
|
| 273 |
+
"suggest": {
|
| 274 |
+
"guzzlehttp/guzzle": "Guzzle 5 has moved to a new package name. The package you have installed, Guzzle 3, is deprecated."
|
|
|
|
|
|
|
|
|
|
| 275 |
},
|
| 276 |
"type": "library",
|
| 277 |
"extra": {
|
| 278 |
"branch-alias": {
|
| 279 |
+
"dev-master": "3.9-dev"
|
| 280 |
}
|
| 281 |
},
|
| 282 |
"autoload": {
|
| 283 |
+
"psr-0": {
|
| 284 |
+
"Guzzle": "src/",
|
| 285 |
+
"Guzzle\\Tests": "tests/"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 286 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 287 |
},
|
| 288 |
"notification-url": "https://packagist.org/downloads/",
|
| 289 |
"license": [
|
| 290 |
+
"MIT"
|
| 291 |
],
|
| 292 |
"authors": [
|
| 293 |
{
|
| 294 |
+
"name": "Michael Dowling",
|
| 295 |
+
"email": "mtdowling@gmail.com",
|
| 296 |
+
"homepage": "https://github.com/mtdowling"
|
| 297 |
},
|
| 298 |
{
|
| 299 |
+
"name": "Guzzle Community",
|
| 300 |
+
"homepage": "https://github.com/guzzle/guzzle/contributors"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 301 |
}
|
| 302 |
],
|
| 303 |
+
"description": "PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle",
|
| 304 |
+
"homepage": "http://guzzlephp.org/",
|
| 305 |
+
"keywords": [
|
| 306 |
+
"client",
|
| 307 |
+
"curl",
|
| 308 |
+
"framework",
|
| 309 |
+
"http",
|
| 310 |
+
"http client",
|
| 311 |
+
"rest",
|
| 312 |
+
"web service"
|
| 313 |
+
],
|
| 314 |
+
"abandoned": "guzzlehttp/guzzle",
|
| 315 |
+
"time": "2016-10-26 18:22:07"
|
| 316 |
},
|
| 317 |
{
|
| 318 |
"name": "phpdocumentor/reflection-common",
|
| 319 |
+
"version": "dev-master",
|
| 320 |
"source": {
|
| 321 |
"type": "git",
|
| 322 |
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
|
| 323 |
+
"reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c"
|
| 324 |
},
|
| 325 |
"dist": {
|
| 326 |
"type": "zip",
|
| 327 |
+
"url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c",
|
| 328 |
+
"reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c",
|
| 329 |
"shasum": ""
|
| 330 |
},
|
| 331 |
"require": {
|
| 366 |
"reflection",
|
| 367 |
"static analysis"
|
| 368 |
],
|
| 369 |
+
"time": "2015-12-27 11:43:31"
|
| 370 |
},
|
| 371 |
{
|
| 372 |
"name": "phpdocumentor/reflection-docblock",
|
| 373 |
+
"version": "3.1.1",
|
| 374 |
"source": {
|
| 375 |
"type": "git",
|
| 376 |
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
|
| 377 |
+
"reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e"
|
| 378 |
},
|
| 379 |
"dist": {
|
| 380 |
"type": "zip",
|
| 381 |
+
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e",
|
| 382 |
+
"reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e",
|
| 383 |
"shasum": ""
|
| 384 |
},
|
| 385 |
"require": {
|
| 386 |
+
"php": ">=5.5",
|
| 387 |
+
"phpdocumentor/reflection-common": "^1.0@dev",
|
| 388 |
+
"phpdocumentor/type-resolver": "^0.2.0",
|
| 389 |
"webmozart/assert": "^1.0"
|
| 390 |
},
|
| 391 |
"require-dev": {
|
| 392 |
+
"mockery/mockery": "^0.9.4",
|
| 393 |
+
"phpunit/phpunit": "^4.4"
|
|
|
|
| 394 |
},
|
| 395 |
"type": "library",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 396 |
"autoload": {
|
| 397 |
"psr-4": {
|
| 398 |
"phpDocumentor\\Reflection\\": [
|
| 411 |
}
|
| 412 |
],
|
| 413 |
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
|
| 414 |
+
"time": "2016-09-30 07:12:33"
|
| 415 |
},
|
| 416 |
{
|
| 417 |
"name": "phpdocumentor/type-resolver",
|
| 418 |
+
"version": "0.2.1",
|
| 419 |
"source": {
|
| 420 |
"type": "git",
|
| 421 |
"url": "https://github.com/phpDocumentor/TypeResolver.git",
|
| 422 |
+
"reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb"
|
| 423 |
},
|
| 424 |
"dist": {
|
| 425 |
"type": "zip",
|
| 426 |
+
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb",
|
| 427 |
+
"reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb",
|
| 428 |
"shasum": ""
|
| 429 |
},
|
| 430 |
"require": {
|
| 431 |
+
"php": ">=5.5",
|
| 432 |
"phpdocumentor/reflection-common": "^1.0"
|
| 433 |
},
|
| 434 |
"require-dev": {
|
| 458 |
"email": "me@mikevanriel.com"
|
| 459 |
}
|
| 460 |
],
|
| 461 |
+
"time": "2016-11-25 06:54:22"
|
| 462 |
},
|
| 463 |
{
|
| 464 |
"name": "phpspec/prophecy",
|
| 465 |
+
"version": "dev-master",
|
| 466 |
"source": {
|
| 467 |
"type": "git",
|
| 468 |
"url": "https://github.com/phpspec/prophecy.git",
|
| 469 |
+
"reference": "6c52c2722f8460122f96f86346600e1077ce22cb"
|
| 470 |
},
|
| 471 |
"dist": {
|
| 472 |
"type": "zip",
|
| 473 |
+
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/6c52c2722f8460122f96f86346600e1077ce22cb",
|
| 474 |
+
"reference": "6c52c2722f8460122f96f86346600e1077ce22cb",
|
| 475 |
"shasum": ""
|
| 476 |
},
|
| 477 |
"require": {
|
| 478 |
"doctrine/instantiator": "^1.0.2",
|
| 479 |
"php": "^5.3|^7.0",
|
| 480 |
+
"phpdocumentor/reflection-docblock": "^2.0|^3.0.2",
|
| 481 |
+
"sebastian/comparator": "^1.1",
|
| 482 |
+
"sebastian/recursion-context": "^1.0|^2.0"
|
| 483 |
},
|
| 484 |
"require-dev": {
|
| 485 |
+
"phpspec/phpspec": "^2.0",
|
| 486 |
+
"phpunit/phpunit": "^4.8 || ^5.6.5"
|
| 487 |
},
|
| 488 |
"type": "library",
|
| 489 |
"extra": {
|
| 490 |
"branch-alias": {
|
| 491 |
+
"dev-master": "1.6.x-dev"
|
| 492 |
}
|
| 493 |
},
|
| 494 |
"autoload": {
|
| 521 |
"spy",
|
| 522 |
"stub"
|
| 523 |
],
|
| 524 |
+
"time": "2016-11-21 14:58:47"
|
| 525 |
},
|
| 526 |
{
|
| 527 |
"name": "phpunit/php-code-coverage",
|
| 528 |
+
"version": "2.2.x-dev",
|
| 529 |
"source": {
|
| 530 |
"type": "git",
|
| 531 |
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
| 532 |
+
"reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979"
|
| 533 |
},
|
| 534 |
"dist": {
|
| 535 |
"type": "zip",
|
| 536 |
+
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979",
|
| 537 |
+
"reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979",
|
| 538 |
"shasum": ""
|
| 539 |
},
|
| 540 |
"require": {
|
| 541 |
+
"php": ">=5.3.3",
|
| 542 |
+
"phpunit/php-file-iterator": "~1.3",
|
| 543 |
+
"phpunit/php-text-template": "~1.2",
|
| 544 |
+
"phpunit/php-token-stream": "~1.3",
|
| 545 |
+
"sebastian/environment": "^1.3.2",
|
| 546 |
+
"sebastian/version": "~1.0"
|
|
|
|
|
|
|
|
|
|
|
|
|
| 547 |
},
|
| 548 |
"require-dev": {
|
| 549 |
+
"ext-xdebug": ">=2.1.4",
|
| 550 |
+
"phpunit/phpunit": "~4"
|
| 551 |
},
|
| 552 |
"suggest": {
|
| 553 |
+
"ext-dom": "*",
|
| 554 |
+
"ext-xdebug": ">=2.2.1",
|
| 555 |
+
"ext-xmlwriter": "*"
|
| 556 |
},
|
| 557 |
"type": "library",
|
| 558 |
"extra": {
|
| 559 |
"branch-alias": {
|
| 560 |
+
"dev-master": "2.2.x-dev"
|
| 561 |
}
|
| 562 |
},
|
| 563 |
"autoload": {
|
| 572 |
"authors": [
|
| 573 |
{
|
| 574 |
"name": "Sebastian Bergmann",
|
| 575 |
+
"email": "sb@sebastian-bergmann.de",
|
| 576 |
"role": "lead"
|
| 577 |
}
|
| 578 |
],
|
| 583 |
"testing",
|
| 584 |
"xunit"
|
| 585 |
],
|
| 586 |
+
"time": "2015-10-06 15:47:00"
|
| 587 |
},
|
| 588 |
{
|
| 589 |
"name": "phpunit/php-file-iterator",
|
| 590 |
+
"version": "dev-master",
|
| 591 |
"source": {
|
| 592 |
"type": "git",
|
| 593 |
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
|
| 594 |
+
"reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5"
|
| 595 |
},
|
| 596 |
"dist": {
|
| 597 |
"type": "zip",
|
| 598 |
+
"url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
|
| 599 |
+
"reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5",
|
| 600 |
"shasum": ""
|
| 601 |
},
|
| 602 |
"require": {
|
| 630 |
"filesystem",
|
| 631 |
"iterator"
|
| 632 |
],
|
| 633 |
+
"time": "2016-10-03 07:40:28"
|
| 634 |
},
|
| 635 |
{
|
| 636 |
"name": "phpunit/php-text-template",
|
| 671 |
"keywords": [
|
| 672 |
"template"
|
| 673 |
],
|
| 674 |
+
"time": "2015-06-21 13:50:34"
|
| 675 |
},
|
| 676 |
{
|
| 677 |
"name": "phpunit/php-timer",
|
| 678 |
+
"version": "1.0.8",
|
| 679 |
"source": {
|
| 680 |
"type": "git",
|
| 681 |
"url": "https://github.com/sebastianbergmann/php-timer.git",
|
| 682 |
+
"reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260"
|
| 683 |
},
|
| 684 |
"dist": {
|
| 685 |
"type": "zip",
|
| 686 |
+
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/38e9124049cf1a164f1e4537caf19c99bf1eb260",
|
| 687 |
+
"reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260",
|
| 688 |
"shasum": ""
|
| 689 |
},
|
| 690 |
"require": {
|
| 691 |
+
"php": ">=5.3.3"
|
| 692 |
},
|
| 693 |
"require-dev": {
|
| 694 |
+
"phpunit/phpunit": "~4|~5"
|
| 695 |
},
|
| 696 |
"type": "library",
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 697 |
"autoload": {
|
| 698 |
"classmap": [
|
| 699 |
"src/"
|
| 715 |
"keywords": [
|
| 716 |
"timer"
|
| 717 |
],
|
| 718 |
+
"time": "2016-05-12 18:03:57"
|
| 719 |
},
|
| 720 |
{
|
| 721 |
"name": "phpunit/php-token-stream",
|
| 722 |
+
"version": "dev-master",
|
| 723 |
"source": {
|
| 724 |
"type": "git",
|
| 725 |
"url": "https://github.com/sebastianbergmann/php-token-stream.git",
|
| 726 |
+
"reference": "3b402f65a4cc90abf6e1104e388b896ce209631b"
|
| 727 |
},
|
| 728 |
"dist": {
|
| 729 |
"type": "zip",
|
| 730 |
+
"url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3b402f65a4cc90abf6e1104e388b896ce209631b",
|
| 731 |
+
"reference": "3b402f65a4cc90abf6e1104e388b896ce209631b",
|
| 732 |
"shasum": ""
|
| 733 |
},
|
| 734 |
"require": {
|
| 735 |
"ext-tokenizer": "*",
|
| 736 |
+
"php": ">=5.3.3"
|
| 737 |
},
|
| 738 |
"require-dev": {
|
| 739 |
+
"phpunit/phpunit": "~4.2"
|
| 740 |
},
|
| 741 |
"type": "library",
|
| 742 |
"extra": {
|
| 743 |
"branch-alias": {
|
| 744 |
+
"dev-master": "1.4-dev"
|
| 745 |
}
|
| 746 |
},
|
| 747 |
"autoload": {
|
| 764 |
"keywords": [
|
| 765 |
"tokenizer"
|
| 766 |
],
|
| 767 |
+
"time": "2016-11-15 14:06:22"
|
| 768 |
},
|
| 769 |
{
|
| 770 |
"name": "phpunit/phpunit",
|
| 771 |
+
"version": "4.8.x-dev",
|
| 772 |
"source": {
|
| 773 |
"type": "git",
|
| 774 |
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
| 775 |
+
"reference": "1202e3ce2047810607df9858a7bf8d5573077deb"
|
| 776 |
},
|
| 777 |
"dist": {
|
| 778 |
"type": "zip",
|
| 779 |
+
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1202e3ce2047810607df9858a7bf8d5573077deb",
|
| 780 |
+
"reference": "1202e3ce2047810607df9858a7bf8d5573077deb",
|
| 781 |
"shasum": ""
|
| 782 |
},
|
| 783 |
"require": {
|
| 784 |
"ext-dom": "*",
|
| 785 |
"ext-json": "*",
|
| 786 |
+
"ext-pcre": "*",
|
| 787 |
+
"ext-reflection": "*",
|
| 788 |
+
"ext-spl": "*",
|
| 789 |
+
"php": ">=5.3.3",
|
| 790 |
+
"phpspec/prophecy": "^1.3.1",
|
| 791 |
+
"phpunit/php-code-coverage": "~2.1",
|
| 792 |
+
"phpunit/php-file-iterator": "~1.4",
|
| 793 |
+
"phpunit/php-text-template": "~1.2",
|
| 794 |
+
"phpunit/php-timer": "^1.0.6",
|
| 795 |
+
"phpunit/phpunit-mock-objects": "~2.3",
|
| 796 |
+
"sebastian/comparator": "~1.2.2",
|
| 797 |
+
"sebastian/diff": "~1.2",
|
| 798 |
+
"sebastian/environment": "~1.3",
|
| 799 |
+
"sebastian/exporter": "~1.2",
|
| 800 |
+
"sebastian/global-state": "~1.0",
|
| 801 |
+
"sebastian/version": "~1.0",
|
| 802 |
+
"symfony/yaml": "~2.1|~3.0"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 803 |
},
|
| 804 |
"suggest": {
|
| 805 |
+
"phpunit/php-invoker": "~1.1"
|
|
|
|
| 806 |
},
|
| 807 |
"bin": [
|
| 808 |
"phpunit"
|
| 810 |
"type": "library",
|
| 811 |
"extra": {
|
| 812 |
"branch-alias": {
|
| 813 |
+
"dev-master": "4.8.x-dev"
|
| 814 |
}
|
| 815 |
},
|
| 816 |
"autoload": {
|
| 836 |
"testing",
|
| 837 |
"xunit"
|
| 838 |
],
|
| 839 |
+
"time": "2017-01-21 14:05:27"
|
| 840 |
},
|
| 841 |
{
|
| 842 |
"name": "phpunit/phpunit-mock-objects",
|
| 843 |
+
"version": "2.3.x-dev",
|
| 844 |
"source": {
|
| 845 |
"type": "git",
|
| 846 |
"url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
|
| 847 |
+
"reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983"
|
| 848 |
},
|
| 849 |
"dist": {
|
| 850 |
"type": "zip",
|
| 851 |
+
"url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983",
|
| 852 |
+
"reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983",
|
| 853 |
"shasum": ""
|
| 854 |
},
|
| 855 |
"require": {
|
| 856 |
+
"doctrine/instantiator": "^1.0.2",
|
| 857 |
+
"php": ">=5.3.3",
|
| 858 |
+
"phpunit/php-text-template": "~1.2",
|
| 859 |
+
"sebastian/exporter": "~1.2"
|
|
|
|
|
|
|
|
|
|
| 860 |
},
|
| 861 |
"require-dev": {
|
| 862 |
+
"phpunit/phpunit": "~4.4"
|
| 863 |
},
|
| 864 |
"suggest": {
|
| 865 |
"ext-soap": "*"
|
| 867 |
"type": "library",
|
| 868 |
"extra": {
|
| 869 |
"branch-alias": {
|
| 870 |
+
"dev-master": "2.3.x-dev"
|
| 871 |
}
|
| 872 |
},
|
| 873 |
"autoload": {
|
| 882 |
"authors": [
|
| 883 |
{
|
| 884 |
"name": "Sebastian Bergmann",
|
| 885 |
+
"email": "sb@sebastian-bergmann.de",
|
| 886 |
"role": "lead"
|
| 887 |
}
|
| 888 |
],
|
| 892 |
"mock",
|
| 893 |
"xunit"
|
| 894 |
],
|
| 895 |
+
"time": "2015-10-02 06:51:40"
|
|
|
|
| 896 |
},
|
| 897 |
{
|
| 898 |
+
"name": "psr/log",
|
| 899 |
+
"version": "dev-master",
|
| 900 |
"source": {
|
| 901 |
"type": "git",
|
| 902 |
+
"url": "https://github.com/php-fig/log.git",
|
| 903 |
+
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
|
| 904 |
},
|
| 905 |
"dist": {
|
| 906 |
"type": "zip",
|
| 907 |
+
"url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
|
| 908 |
+
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
|
| 909 |
"shasum": ""
|
| 910 |
},
|
| 911 |
"require": {
|
| 912 |
+
"php": ">=5.3.0"
|
|
|
|
|
|
|
|
|
|
| 913 |
},
|
| 914 |
"type": "library",
|
| 915 |
"extra": {
|
| 918 |
}
|
| 919 |
},
|
| 920 |
"autoload": {
|
| 921 |
+
"psr-4": {
|
| 922 |
+
"Psr\\Log\\": "Psr/Log/"
|
| 923 |
+
}
|
| 924 |
},
|
| 925 |
"notification-url": "https://packagist.org/downloads/",
|
| 926 |
"license": [
|
| 927 |
+
"MIT"
|
| 928 |
],
|
| 929 |
"authors": [
|
| 930 |
{
|
| 931 |
+
"name": "PHP-FIG",
|
| 932 |
+
"homepage": "http://www.php-fig.org/"
|
| 933 |
}
|
| 934 |
],
|
| 935 |
+
"description": "Common interface for logging libraries",
|
| 936 |
+
"homepage": "https://github.com/php-fig/log",
|
| 937 |
+
"keywords": [
|
| 938 |
+
"log",
|
| 939 |
+
"psr",
|
| 940 |
+
"psr-3"
|
| 941 |
+
],
|
| 942 |
+
"time": "2016-10-10 12:19:37"
|
| 943 |
+
},
|
| 944 |
+
{
|
| 945 |
+
"name": "ptrofimov/xpmock",
|
| 946 |
+
"version": "1.1.5",
|
| 947 |
+
"source": {
|
| 948 |
+
"type": "git",
|
| 949 |
+
"url": "https://github.com/ptrofimov/xpmock.git",
|
| 950 |
+
"reference": "5b95ace33624b66bf4e854071b8856722fde515e"
|
| 951 |
+
},
|
| 952 |
+
"dist": {
|
| 953 |
+
"type": "zip",
|
| 954 |
+
"url": "https://api.github.com/repos/ptrofimov/xpmock/zipball/5b95ace33624b66bf4e854071b8856722fde515e",
|
| 955 |
+
"reference": "5b95ace33624b66bf4e854071b8856722fde515e",
|
| 956 |
+
"shasum": ""
|
| 957 |
+
},
|
| 958 |
+
"require": {
|
| 959 |
+
"php": ">=5.3.0"
|
| 960 |
+
},
|
| 961 |
+
"require-dev": {
|
| 962 |
+
"phpunit/phpunit": "3.7.*"
|
| 963 |
+
},
|
| 964 |
+
"type": "library",
|
| 965 |
+
"autoload": {
|
| 966 |
+
"psr-0": {
|
| 967 |
+
"Xpmock": "src"
|
| 968 |
+
}
|
| 969 |
+
},
|
| 970 |
+
"notification-url": "https://packagist.org/downloads/",
|
| 971 |
+
"license": [
|
| 972 |
+
"MIT"
|
| 973 |
+
],
|
| 974 |
+
"description": "PHPUnit: simple syntax to create mock-objects",
|
| 975 |
+
"time": "2014-01-02 16:42:27"
|
| 976 |
+
},
|
| 977 |
+
{
|
| 978 |
+
"name": "satooshi/php-coveralls",
|
| 979 |
+
"version": "1.0.x-dev",
|
| 980 |
+
"source": {
|
| 981 |
+
"type": "git",
|
| 982 |
+
"url": "https://github.com/satooshi/php-coveralls.git",
|
| 983 |
+
"reference": "da51d304fe8622bf9a6da39a8446e7afd432115c"
|
| 984 |
+
},
|
| 985 |
+
"dist": {
|
| 986 |
+
"type": "zip",
|
| 987 |
+
"url": "https://api.github.com/repos/satooshi/php-coveralls/zipball/da51d304fe8622bf9a6da39a8446e7afd432115c",
|
| 988 |
+
"reference": "da51d304fe8622bf9a6da39a8446e7afd432115c",
|
| 989 |
+
"shasum": ""
|
| 990 |
+
},
|
| 991 |
+
"require": {
|
| 992 |
+
"ext-json": "*",
|
| 993 |
+
"ext-simplexml": "*",
|
| 994 |
+
"guzzle/guzzle": "^2.8|^3.0",
|
| 995 |
+
"php": ">=5.3.3",
|
| 996 |
+
"psr/log": "^1.0",
|
| 997 |
+
"symfony/config": "^2.1|^3.0",
|
| 998 |
+
"symfony/console": "^2.1|^3.0",
|
| 999 |
+
"symfony/stopwatch": "^2.0|^3.0",
|
| 1000 |
+
"symfony/yaml": "^2.0|^3.0"
|
| 1001 |
+
},
|
| 1002 |
+
"suggest": {
|
| 1003 |
+
"symfony/http-kernel": "Allows Symfony integration"
|
| 1004 |
+
},
|
| 1005 |
+
"bin": [
|
| 1006 |
+
"bin/coveralls"
|
| 1007 |
+
],
|
| 1008 |
+
"type": "library",
|
| 1009 |
+
"autoload": {
|
| 1010 |
+
"psr-4": {
|
| 1011 |
+
"Satooshi\\": "src/Satooshi/"
|
| 1012 |
+
}
|
| 1013 |
+
},
|
| 1014 |
+
"notification-url": "https://packagist.org/downloads/",
|
| 1015 |
+
"license": [
|
| 1016 |
+
"MIT"
|
| 1017 |
+
],
|
| 1018 |
+
"authors": [
|
| 1019 |
+
{
|
| 1020 |
+
"name": "Kitamura Satoshi",
|
| 1021 |
+
"email": "with.no.parachute@gmail.com",
|
| 1022 |
+
"homepage": "https://www.facebook.com/satooshi.jp"
|
| 1023 |
+
}
|
| 1024 |
+
],
|
| 1025 |
+
"description": "PHP client library for Coveralls API",
|
| 1026 |
+
"homepage": "https://github.com/satooshi/php-coveralls",
|
| 1027 |
+
"keywords": [
|
| 1028 |
+
"ci",
|
| 1029 |
+
"coverage",
|
| 1030 |
+
"github",
|
| 1031 |
+
"test"
|
| 1032 |
+
],
|
| 1033 |
+
"time": "2016-01-20 17:35:46"
|
| 1034 |
},
|
| 1035 |
{
|
| 1036 |
"name": "sebastian/comparator",
|
| 1037 |
+
"version": "dev-master",
|
| 1038 |
"source": {
|
| 1039 |
"type": "git",
|
| 1040 |
"url": "https://github.com/sebastianbergmann/comparator.git",
|
| 1041 |
+
"reference": "2f09d5a251c4a92d1a80518c2166b5d0d742bc63"
|
| 1042 |
},
|
| 1043 |
"dist": {
|
| 1044 |
"type": "zip",
|
| 1045 |
+
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2f09d5a251c4a92d1a80518c2166b5d0d742bc63",
|
| 1046 |
+
"reference": "2f09d5a251c4a92d1a80518c2166b5d0d742bc63",
|
| 1047 |
"shasum": ""
|
| 1048 |
},
|
| 1049 |
"require": {
|
| 1050 |
+
"php": "^5.3.3 || ^7.0",
|
| 1051 |
+
"sebastian/diff": "^1.2",
|
| 1052 |
+
"sebastian/exporter": "^1.2 || ^2.0"
|
| 1053 |
},
|
| 1054 |
"require-dev": {
|
| 1055 |
+
"phpunit/phpunit": "^4.8"
|
| 1056 |
},
|
| 1057 |
"type": "library",
|
| 1058 |
"extra": {
|
| 1059 |
"branch-alias": {
|
| 1060 |
+
"dev-master": "1.2.x-dev"
|
| 1061 |
}
|
| 1062 |
},
|
| 1063 |
"autoload": {
|
| 1088 |
}
|
| 1089 |
],
|
| 1090 |
"description": "Provides the functionality to compare PHP values for equality",
|
| 1091 |
+
"homepage": "http://www.github.com/sebastianbergmann/comparator",
|
| 1092 |
"keywords": [
|
| 1093 |
"comparator",
|
| 1094 |
"compare",
|
| 1095 |
"equality"
|
| 1096 |
],
|
| 1097 |
+
"time": "2016-12-10 08:07:52"
|
| 1098 |
},
|
| 1099 |
{
|
| 1100 |
"name": "sebastian/diff",
|
| 1101 |
+
"version": "dev-master",
|
| 1102 |
"source": {
|
| 1103 |
"type": "git",
|
| 1104 |
"url": "https://github.com/sebastianbergmann/diff.git",
|
| 1105 |
+
"reference": "d0814318784b7756fb932116acd19ee3b0cbe67a"
|
| 1106 |
},
|
| 1107 |
"dist": {
|
| 1108 |
"type": "zip",
|
| 1109 |
+
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/d0814318784b7756fb932116acd19ee3b0cbe67a",
|
| 1110 |
+
"reference": "d0814318784b7756fb932116acd19ee3b0cbe67a",
|
| 1111 |
"shasum": ""
|
| 1112 |
},
|
| 1113 |
"require": {
|
| 1114 |
+
"php": ">=5.3.3"
|
| 1115 |
},
|
| 1116 |
"require-dev": {
|
| 1117 |
+
"phpunit/phpunit": "~4.8"
|
| 1118 |
},
|
| 1119 |
"type": "library",
|
| 1120 |
"extra": {
|
| 1121 |
"branch-alias": {
|
| 1122 |
+
"dev-master": "1.4-dev"
|
| 1123 |
}
|
| 1124 |
},
|
| 1125 |
"autoload": {
|
| 1146 |
"keywords": [
|
| 1147 |
"diff"
|
| 1148 |
],
|
| 1149 |
+
"time": "2016-10-03 07:45:03"
|
| 1150 |
},
|
| 1151 |
{
|
| 1152 |
"name": "sebastian/environment",
|
| 1153 |
+
"version": "1.3.x-dev",
|
| 1154 |
"source": {
|
| 1155 |
"type": "git",
|
| 1156 |
"url": "https://github.com/sebastianbergmann/environment.git",
|
| 1157 |
+
"reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea"
|
| 1158 |
},
|
| 1159 |
"dist": {
|
| 1160 |
"type": "zip",
|
| 1161 |
+
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea",
|
| 1162 |
+
"reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea",
|
| 1163 |
"shasum": ""
|
| 1164 |
},
|
| 1165 |
"require": {
|
| 1166 |
+
"php": "^5.3.3 || ^7.0"
|
| 1167 |
},
|
| 1168 |
"require-dev": {
|
| 1169 |
+
"phpunit/phpunit": "^4.8 || ^5.0"
|
| 1170 |
},
|
| 1171 |
"type": "library",
|
| 1172 |
"extra": {
|
| 1173 |
"branch-alias": {
|
| 1174 |
+
"dev-master": "1.3.x-dev"
|
| 1175 |
}
|
| 1176 |
},
|
| 1177 |
"autoload": {
|
| 1196 |
"environment",
|
| 1197 |
"hhvm"
|
| 1198 |
],
|
| 1199 |
+
"time": "2016-08-18 05:49:44"
|
| 1200 |
},
|
| 1201 |
{
|
| 1202 |
"name": "sebastian/exporter",
|
| 1203 |
+
"version": "1.2.x-dev",
|
| 1204 |
"source": {
|
| 1205 |
"type": "git",
|
| 1206 |
"url": "https://github.com/sebastianbergmann/exporter.git",
|
| 1207 |
+
"reference": "7dfcd2418aacbdb5e123fb23ac735acfdd6c588d"
|
| 1208 |
},
|
| 1209 |
"dist": {
|
| 1210 |
"type": "zip",
|
| 1211 |
+
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7dfcd2418aacbdb5e123fb23ac735acfdd6c588d",
|
| 1212 |
+
"reference": "7dfcd2418aacbdb5e123fb23ac735acfdd6c588d",
|
| 1213 |
"shasum": ""
|
| 1214 |
},
|
| 1215 |
"require": {
|
| 1216 |
+
"php": ">=5.3.3",
|
| 1217 |
+
"sebastian/recursion-context": "~1.0"
|
| 1218 |
},
|
| 1219 |
"require-dev": {
|
| 1220 |
"ext-mbstring": "*",
|
| 1221 |
+
"phpunit/phpunit": "~4.4"
|
| 1222 |
},
|
| 1223 |
"type": "library",
|
| 1224 |
"extra": {
|
| 1225 |
"branch-alias": {
|
| 1226 |
+
"dev-master": "1.3.x-dev"
|
| 1227 |
}
|
| 1228 |
},
|
| 1229 |
"autoload": {
|
| 1263 |
"export",
|
| 1264 |
"exporter"
|
| 1265 |
],
|
| 1266 |
+
"time": "2016-10-03 07:44:30"
|
| 1267 |
},
|
| 1268 |
{
|
| 1269 |
"name": "sebastian/global-state",
|
| 1270 |
+
"version": "1.1.x-dev",
|
| 1271 |
"source": {
|
| 1272 |
"type": "git",
|
| 1273 |
"url": "https://github.com/sebastianbergmann/global-state.git",
|
| 1274 |
+
"reference": "5a2b9ba59e8cf82fd1fdd7efb7d7846fd69ac36d"
|
| 1275 |
},
|
| 1276 |
"dist": {
|
| 1277 |
"type": "zip",
|
| 1278 |
+
"url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/5a2b9ba59e8cf82fd1fdd7efb7d7846fd69ac36d",
|
| 1279 |
+
"reference": "5a2b9ba59e8cf82fd1fdd7efb7d7846fd69ac36d",
|
| 1280 |
"shasum": ""
|
| 1281 |
},
|
| 1282 |
"require": {
|
| 1283 |
+
"php": ">=5.3.3"
|
| 1284 |
},
|
| 1285 |
"require-dev": {
|
| 1286 |
+
"phpunit/phpunit": "~4.2|~5.0"
|
| 1287 |
},
|
| 1288 |
"suggest": {
|
| 1289 |
"ext-uopz": "*"
|
| 1291 |
"type": "library",
|
| 1292 |
"extra": {
|
| 1293 |
"branch-alias": {
|
| 1294 |
+
"dev-master": "1.0-dev"
|
| 1295 |
}
|
| 1296 |
},
|
| 1297 |
"autoload": {
|
| 1314 |
"keywords": [
|
| 1315 |
"global state"
|
| 1316 |
],
|
| 1317 |
+
"time": "2016-10-03 07:46:22"
|
| 1318 |
},
|
| 1319 |
{
|
| 1320 |
+
"name": "sebastian/recursion-context",
|
| 1321 |
+
"version": "1.0.x-dev",
|
| 1322 |
"source": {
|
| 1323 |
"type": "git",
|
| 1324 |
+
"url": "https://github.com/sebastianbergmann/recursion-context.git",
|
| 1325 |
+
"reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7"
|
| 1326 |
},
|
| 1327 |
"dist": {
|
| 1328 |
"type": "zip",
|
| 1329 |
+
"url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7",
|
| 1330 |
+
"reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7",
|
| 1331 |
"shasum": ""
|
| 1332 |
},
|
| 1333 |
"require": {
|
| 1334 |
+
"php": ">=5.3.3"
|
|
|
|
|
|
|
| 1335 |
},
|
| 1336 |
"require-dev": {
|
| 1337 |
+
"phpunit/phpunit": "~4.4"
|
| 1338 |
},
|
| 1339 |
"type": "library",
|
| 1340 |
"extra": {
|
| 1341 |
"branch-alias": {
|
| 1342 |
+
"dev-master": "1.0.x-dev"
|
| 1343 |
}
|
| 1344 |
},
|
| 1345 |
"autoload": {
|
| 1352 |
"BSD-3-Clause"
|
| 1353 |
],
|
| 1354 |
"authors": [
|
| 1355 |
+
{
|
| 1356 |
+
"name": "Jeff Welch",
|
| 1357 |
+
"email": "whatthejeff@gmail.com"
|
| 1358 |
+
},
|
| 1359 |
{
|
| 1360 |
"name": "Sebastian Bergmann",
|
| 1361 |
"email": "sebastian@phpunit.de"
|
| 1362 |
+
},
|
| 1363 |
+
{
|
| 1364 |
+
"name": "Adam Harvey",
|
| 1365 |
+
"email": "aharvey@php.net"
|
| 1366 |
}
|
| 1367 |
],
|
| 1368 |
+
"description": "Provides functionality to recursively process PHP variables",
|
| 1369 |
+
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
|
| 1370 |
+
"time": "2016-10-03 07:41:43"
|
| 1371 |
},
|
| 1372 |
{
|
| 1373 |
+
"name": "sebastian/version",
|
| 1374 |
+
"version": "1.0.6",
|
| 1375 |
"source": {
|
| 1376 |
"type": "git",
|
| 1377 |
+
"url": "https://github.com/sebastianbergmann/version.git",
|
| 1378 |
+
"reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
|
| 1379 |
},
|
| 1380 |
"dist": {
|
| 1381 |
"type": "zip",
|
| 1382 |
+
"url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
|
| 1383 |
+
"reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
|
| 1384 |
+
"shasum": ""
|
| 1385 |
+
},
|
| 1386 |
+
"type": "library",
|
| 1387 |
+
"autoload": {
|
| 1388 |
+
"classmap": [
|
| 1389 |
+
"src/"
|
| 1390 |
+
]
|
| 1391 |
+
},
|
| 1392 |
+
"notification-url": "https://packagist.org/downloads/",
|
| 1393 |
+
"license": [
|
| 1394 |
+
"BSD-3-Clause"
|
| 1395 |
+
],
|
| 1396 |
+
"authors": [
|
| 1397 |
+
{
|
| 1398 |
+
"name": "Sebastian Bergmann",
|
| 1399 |
+
"email": "sebastian@phpunit.de",
|
| 1400 |
+
"role": "lead"
|
| 1401 |
+
}
|
| 1402 |
+
],
|
| 1403 |
+
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
|
| 1404 |
+
"homepage": "https://github.com/sebastianbergmann/version",
|
| 1405 |
+
"time": "2015-06-21 13:59:46"
|
| 1406 |
+
},
|
| 1407 |
+
{
|
| 1408 |
+
"name": "symfony/config",
|
| 1409 |
+
"version": "dev-master",
|
| 1410 |
+
"source": {
|
| 1411 |
+
"type": "git",
|
| 1412 |
+
"url": "https://github.com/symfony/config.git",
|
| 1413 |
+
"reference": "ba3da262813160b4963fb36f573c886592da6acb"
|
| 1414 |
+
},
|
| 1415 |
+
"dist": {
|
| 1416 |
+
"type": "zip",
|
| 1417 |
+
"url": "https://api.github.com/repos/symfony/config/zipball/ba3da262813160b4963fb36f573c886592da6acb",
|
| 1418 |
+
"reference": "ba3da262813160b4963fb36f573c886592da6acb",
|
| 1419 |
"shasum": ""
|
| 1420 |
},
|
| 1421 |
"require": {
|
| 1422 |
+
"php": ">=5.5.9",
|
| 1423 |
+
"symfony/filesystem": "~2.8|~3.0"
|
| 1424 |
},
|
| 1425 |
"require-dev": {
|
| 1426 |
+
"symfony/yaml": "~3.0"
|
| 1427 |
+
},
|
| 1428 |
+
"suggest": {
|
| 1429 |
+
"symfony/yaml": "To use the yaml reference dumper"
|
| 1430 |
},
|
| 1431 |
"type": "library",
|
| 1432 |
"extra": {
|
| 1433 |
"branch-alias": {
|
| 1434 |
+
"dev-master": "3.3-dev"
|
| 1435 |
}
|
| 1436 |
},
|
| 1437 |
"autoload": {
|
| 1438 |
+
"psr-4": {
|
| 1439 |
+
"Symfony\\Component\\Config\\": ""
|
| 1440 |
+
},
|
| 1441 |
+
"exclude-from-classmap": [
|
| 1442 |
+
"/Tests/"
|
| 1443 |
]
|
| 1444 |
},
|
| 1445 |
"notification-url": "https://packagist.org/downloads/",
|
| 1446 |
"license": [
|
| 1447 |
+
"MIT"
|
| 1448 |
],
|
| 1449 |
"authors": [
|
| 1450 |
{
|
| 1451 |
+
"name": "Fabien Potencier",
|
| 1452 |
+
"email": "fabien@symfony.com"
|
| 1453 |
+
},
|
| 1454 |
+
{
|
| 1455 |
+
"name": "Symfony Community",
|
| 1456 |
+
"homepage": "https://symfony.com/contributors"
|
| 1457 |
}
|
| 1458 |
],
|
| 1459 |
+
"description": "Symfony Config Component",
|
| 1460 |
+
"homepage": "https://symfony.com",
|
| 1461 |
+
"time": "2017-01-09 21:03:44"
|
| 1462 |
},
|
| 1463 |
{
|
| 1464 |
+
"name": "symfony/console",
|
| 1465 |
+
"version": "dev-master",
|
| 1466 |
"source": {
|
| 1467 |
"type": "git",
|
| 1468 |
+
"url": "https://github.com/symfony/console.git",
|
| 1469 |
+
"reference": "08efa49aa07dde0747198c6075a1061c750e9884"
|
| 1470 |
},
|
| 1471 |
"dist": {
|
| 1472 |
"type": "zip",
|
| 1473 |
+
"url": "https://api.github.com/repos/symfony/console/zipball/08efa49aa07dde0747198c6075a1061c750e9884",
|
| 1474 |
+
"reference": "08efa49aa07dde0747198c6075a1061c750e9884",
|
| 1475 |
"shasum": ""
|
| 1476 |
},
|
| 1477 |
"require": {
|
| 1478 |
+
"php": ">=5.5.9",
|
| 1479 |
+
"symfony/debug": "~2.8|~3.0",
|
| 1480 |
+
"symfony/polyfill-mbstring": "~1.0"
|
| 1481 |
},
|
| 1482 |
"require-dev": {
|
| 1483 |
+
"psr/log": "~1.0",
|
| 1484 |
+
"symfony/dependency-injection": "~2.8|~3.0",
|
| 1485 |
+
"symfony/event-dispatcher": "~2.8|~3.0",
|
| 1486 |
+
"symfony/filesystem": "~2.8|~3.0",
|
| 1487 |
+
"symfony/http-kernel": "~2.8|~3.0",
|
| 1488 |
+
"symfony/process": "~2.8|~3.0"
|
| 1489 |
+
},
|
| 1490 |
+
"suggest": {
|
| 1491 |
+
"psr/log": "For using the console logger",
|
| 1492 |
+
"symfony/event-dispatcher": "",
|
| 1493 |
+
"symfony/filesystem": "",
|
| 1494 |
+
"symfony/process": ""
|
| 1495 |
},
|
| 1496 |
"type": "library",
|
| 1497 |
"extra": {
|
| 1498 |
"branch-alias": {
|
| 1499 |
+
"dev-master": "3.3-dev"
|
| 1500 |
}
|
| 1501 |
},
|
| 1502 |
"autoload": {
|
| 1503 |
+
"psr-4": {
|
| 1504 |
+
"Symfony\\Component\\Console\\": ""
|
| 1505 |
+
},
|
| 1506 |
+
"exclude-from-classmap": [
|
| 1507 |
+
"/Tests/"
|
| 1508 |
]
|
| 1509 |
},
|
| 1510 |
"notification-url": "https://packagist.org/downloads/",
|
| 1511 |
"license": [
|
| 1512 |
+
"MIT"
|
| 1513 |
],
|
| 1514 |
"authors": [
|
| 1515 |
{
|
| 1516 |
+
"name": "Fabien Potencier",
|
| 1517 |
+
"email": "fabien@symfony.com"
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1518 |
},
|
| 1519 |
{
|
| 1520 |
+
"name": "Symfony Community",
|
| 1521 |
+
"homepage": "https://symfony.com/contributors"
|
| 1522 |
}
|
| 1523 |
],
|
| 1524 |
+
"description": "Symfony Console Component",
|
| 1525 |
+
"homepage": "https://symfony.com",
|
| 1526 |
+
"time": "2017-01-11 12:05:48"
|
| 1527 |
},
|
| 1528 |
{
|
| 1529 |
+
"name": "symfony/debug",
|
| 1530 |
+
"version": "dev-master",
|
| 1531 |
"source": {
|
| 1532 |
"type": "git",
|
| 1533 |
+
"url": "https://github.com/symfony/debug.git",
|
| 1534 |
+
"reference": "e990e0b4f58e2cb64ebf05845fa982d06011957d"
|
| 1535 |
},
|
| 1536 |
"dist": {
|
| 1537 |
"type": "zip",
|
| 1538 |
+
"url": "https://api.github.com/repos/symfony/debug/zipball/e990e0b4f58e2cb64ebf05845fa982d06011957d",
|
| 1539 |
+
"reference": "e990e0b4f58e2cb64ebf05845fa982d06011957d",
|
| 1540 |
"shasum": ""
|
| 1541 |
},
|
| 1542 |
"require": {
|
| 1543 |
+
"php": ">=5.5.9",
|
| 1544 |
+
"psr/log": "~1.0"
|
| 1545 |
+
},
|
| 1546 |
+
"conflict": {
|
| 1547 |
+
"symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
|
| 1548 |
+
},
|
| 1549 |
+
"require-dev": {
|
| 1550 |
+
"symfony/http-kernel": "~2.8|~3.0"
|
| 1551 |
},
|
| 1552 |
"type": "library",
|
| 1553 |
"extra": {
|
| 1554 |
"branch-alias": {
|
| 1555 |
+
"dev-master": "3.3-dev"
|
| 1556 |
}
|
| 1557 |
},
|
| 1558 |
"autoload": {
|
| 1559 |
+
"psr-4": {
|
| 1560 |
+
"Symfony\\Component\\Debug\\": ""
|
| 1561 |
+
},
|
| 1562 |
+
"exclude-from-classmap": [
|
| 1563 |
+
"/Tests/"
|
| 1564 |
]
|
| 1565 |
},
|
| 1566 |
"notification-url": "https://packagist.org/downloads/",
|
| 1567 |
"license": [
|
| 1568 |
+
"MIT"
|
| 1569 |
],
|
| 1570 |
"authors": [
|
| 1571 |
{
|
| 1572 |
+
"name": "Fabien Potencier",
|
| 1573 |
+
"email": "fabien@symfony.com"
|
| 1574 |
+
},
|
| 1575 |
+
{
|
| 1576 |
+
"name": "Symfony Community",
|
| 1577 |
+
"homepage": "https://symfony.com/contributors"
|
| 1578 |
}
|
| 1579 |
],
|
| 1580 |
+
"description": "Symfony Debug Component",
|
| 1581 |
+
"homepage": "https://symfony.com",
|
| 1582 |
+
"time": "2017-01-20 10:22:07"
|
| 1583 |
},
|
| 1584 |
{
|
| 1585 |
+
"name": "symfony/event-dispatcher",
|
| 1586 |
+
"version": "2.8.x-dev",
|
| 1587 |
"source": {
|
| 1588 |
"type": "git",
|
| 1589 |
+
"url": "https://github.com/symfony/event-dispatcher.git",
|
| 1590 |
+
"reference": "74877977f90fb9c3e46378d5764217c55f32df34"
|
| 1591 |
},
|
| 1592 |
"dist": {
|
| 1593 |
"type": "zip",
|
| 1594 |
+
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/74877977f90fb9c3e46378d5764217c55f32df34",
|
| 1595 |
+
"reference": "74877977f90fb9c3e46378d5764217c55f32df34",
|
| 1596 |
"shasum": ""
|
| 1597 |
},
|
| 1598 |
"require": {
|
| 1599 |
+
"php": ">=5.3.9"
|
| 1600 |
+
},
|
| 1601 |
+
"require-dev": {
|
| 1602 |
+
"psr/log": "~1.0",
|
| 1603 |
+
"symfony/config": "~2.0,>=2.0.5|~3.0.0",
|
| 1604 |
+
"symfony/dependency-injection": "~2.6|~3.0.0",
|
| 1605 |
+
"symfony/expression-language": "~2.6|~3.0.0",
|
| 1606 |
+
"symfony/stopwatch": "~2.3|~3.0.0"
|
| 1607 |
+
},
|
| 1608 |
+
"suggest": {
|
| 1609 |
+
"symfony/dependency-injection": "",
|
| 1610 |
+
"symfony/http-kernel": ""
|
| 1611 |
},
|
| 1612 |
"type": "library",
|
| 1613 |
"extra": {
|
| 1614 |
"branch-alias": {
|
| 1615 |
+
"dev-master": "2.8-dev"
|
| 1616 |
}
|
| 1617 |
},
|
| 1618 |
"autoload": {
|
| 1619 |
+
"psr-4": {
|
| 1620 |
+
"Symfony\\Component\\EventDispatcher\\": ""
|
| 1621 |
+
},
|
| 1622 |
+
"exclude-from-classmap": [
|
| 1623 |
+
"/Tests/"
|
| 1624 |
]
|
| 1625 |
},
|
| 1626 |
"notification-url": "https://packagist.org/downloads/",
|
| 1627 |
"license": [
|
| 1628 |
+
"MIT"
|
| 1629 |
],
|
| 1630 |
"authors": [
|
| 1631 |
{
|
| 1632 |
+
"name": "Fabien Potencier",
|
| 1633 |
+
"email": "fabien@symfony.com"
|
| 1634 |
+
},
|
| 1635 |
+
{
|
| 1636 |
+
"name": "Symfony Community",
|
| 1637 |
+
"homepage": "https://symfony.com/contributors"
|
| 1638 |
}
|
| 1639 |
],
|
| 1640 |
+
"description": "Symfony EventDispatcher Component",
|
| 1641 |
+
"homepage": "https://symfony.com",
|
| 1642 |
+
"time": "2017-01-02 20:30:24"
|
| 1643 |
},
|
| 1644 |
{
|
| 1645 |
+
"name": "symfony/filesystem",
|
| 1646 |
+
"version": "dev-master",
|
| 1647 |
"source": {
|
| 1648 |
"type": "git",
|
| 1649 |
+
"url": "https://github.com/symfony/filesystem.git",
|
| 1650 |
+
"reference": "b2de62936fea037d501159f52b7b6172cc962282"
|
| 1651 |
},
|
| 1652 |
"dist": {
|
| 1653 |
"type": "zip",
|
| 1654 |
+
"url": "https://api.github.com/repos/symfony/filesystem/zipball/b2de62936fea037d501159f52b7b6172cc962282",
|
| 1655 |
+
"reference": "b2de62936fea037d501159f52b7b6172cc962282",
|
| 1656 |
"shasum": ""
|
| 1657 |
},
|
| 1658 |
"require": {
|
| 1659 |
+
"php": ">=5.5.9"
|
|
|
|
| 1660 |
},
|
| 1661 |
+
"type": "library",
|
| 1662 |
+
"extra": {
|
| 1663 |
+
"branch-alias": {
|
| 1664 |
+
"dev-master": "3.3-dev"
|
| 1665 |
+
}
|
| 1666 |
},
|
|
|
|
| 1667 |
"autoload": {
|
| 1668 |
"psr-4": {
|
| 1669 |
+
"Symfony\\Component\\Filesystem\\": ""
|
| 1670 |
+
},
|
| 1671 |
+
"exclude-from-classmap": [
|
| 1672 |
+
"/Tests/"
|
| 1673 |
+
]
|
| 1674 |
},
|
| 1675 |
"notification-url": "https://packagist.org/downloads/",
|
| 1676 |
"license": [
|
| 1677 |
"MIT"
|
| 1678 |
],
|
| 1679 |
+
"authors": [
|
| 1680 |
+
{
|
| 1681 |
+
"name": "Fabien Potencier",
|
| 1682 |
+
"email": "fabien@symfony.com"
|
| 1683 |
+
},
|
| 1684 |
+
{
|
| 1685 |
+
"name": "Symfony Community",
|
| 1686 |
+
"homepage": "https://symfony.com/contributors"
|
| 1687 |
+
}
|
| 1688 |
+
],
|
| 1689 |
+
"description": "Symfony Filesystem Component",
|
| 1690 |
+
"homepage": "https://symfony.com",
|
| 1691 |
+
"time": "2017-01-08 21:15:04"
|
| 1692 |
},
|
| 1693 |
{
|
| 1694 |
+
"name": "symfony/finder",
|
| 1695 |
+
"version": "dev-master",
|
| 1696 |
"source": {
|
| 1697 |
"type": "git",
|
| 1698 |
+
"url": "https://github.com/symfony/finder.git",
|
| 1699 |
+
"reference": "791ac099b1687c0bd82f7230ec0d8fc8550c81dc"
|
| 1700 |
},
|
| 1701 |
"dist": {
|
| 1702 |
"type": "zip",
|
| 1703 |
+
"url": "https://api.github.com/repos/symfony/finder/zipball/791ac099b1687c0bd82f7230ec0d8fc8550c81dc",
|
| 1704 |
+
"reference": "791ac099b1687c0bd82f7230ec0d8fc8550c81dc",
|
| 1705 |
"shasum": ""
|
| 1706 |
},
|
| 1707 |
"require": {
|
| 1708 |
+
"php": ">=5.5.9"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1709 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1710 |
"type": "library",
|
| 1711 |
"extra": {
|
| 1712 |
"branch-alias": {
|
| 1713 |
+
"dev-master": "3.3-dev"
|
| 1714 |
}
|
| 1715 |
},
|
| 1716 |
+
"autoload": {
|
| 1717 |
+
"psr-4": {
|
| 1718 |
+
"Symfony\\Component\\Finder\\": ""
|
| 1719 |
+
},
|
| 1720 |
+
"exclude-from-classmap": [
|
| 1721 |
+
"/Tests/"
|
| 1722 |
+
]
|
| 1723 |
+
},
|
| 1724 |
"notification-url": "https://packagist.org/downloads/",
|
| 1725 |
"license": [
|
| 1726 |
+
"MIT"
|
| 1727 |
],
|
| 1728 |
"authors": [
|
| 1729 |
{
|
| 1730 |
+
"name": "Fabien Potencier",
|
| 1731 |
+
"email": "fabien@symfony.com"
|
| 1732 |
+
},
|
| 1733 |
+
{
|
| 1734 |
+
"name": "Symfony Community",
|
| 1735 |
+
"homepage": "https://symfony.com/contributors"
|
| 1736 |
}
|
| 1737 |
],
|
| 1738 |
+
"description": "Symfony Finder Component",
|
| 1739 |
+
"homepage": "https://symfony.com",
|
| 1740 |
+
"time": "2017-01-02 20:33:09"
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1741 |
},
|
| 1742 |
{
|
| 1743 |
+
"name": "symfony/polyfill-mbstring",
|
| 1744 |
+
"version": "dev-master",
|
| 1745 |
"source": {
|
| 1746 |
"type": "git",
|
| 1747 |
+
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
| 1748 |
+
"reference": "e79d363049d1c2128f133a2667e4f4190904f7f4"
|
| 1749 |
},
|
| 1750 |
"dist": {
|
| 1751 |
"type": "zip",
|
| 1752 |
+
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/e79d363049d1c2128f133a2667e4f4190904f7f4",
|
| 1753 |
+
"reference": "e79d363049d1c2128f133a2667e4f4190904f7f4",
|
| 1754 |
"shasum": ""
|
| 1755 |
},
|
| 1756 |
"require": {
|
| 1757 |
"php": ">=5.3.3"
|
| 1758 |
},
|
| 1759 |
"suggest": {
|
| 1760 |
+
"ext-mbstring": "For best performance"
|
| 1761 |
},
|
| 1762 |
"type": "library",
|
| 1763 |
"extra": {
|
| 1764 |
"branch-alias": {
|
| 1765 |
+
"dev-master": "1.3-dev"
|
| 1766 |
}
|
| 1767 |
},
|
| 1768 |
"autoload": {
|
| 1769 |
"psr-4": {
|
| 1770 |
+
"Symfony\\Polyfill\\Mbstring\\": ""
|
| 1771 |
},
|
| 1772 |
"files": [
|
| 1773 |
"bootstrap.php"
|
| 1779 |
],
|
| 1780 |
"authors": [
|
| 1781 |
{
|
| 1782 |
+
"name": "Nicolas Grekas",
|
| 1783 |
+
"email": "p@tchwork.com"
|
| 1784 |
},
|
| 1785 |
{
|
| 1786 |
+
"name": "Symfony Community",
|
| 1787 |
+
"homepage": "https://symfony.com/contributors"
|
| 1788 |
}
|
| 1789 |
],
|
| 1790 |
+
"description": "Symfony polyfill for the Mbstring extension",
|
| 1791 |
"homepage": "https://symfony.com",
|
| 1792 |
"keywords": [
|
| 1793 |
"compatibility",
|
| 1794 |
+
"mbstring",
|
| 1795 |
"polyfill",
|
| 1796 |
+
"portable",
|
| 1797 |
+
"shim"
|
| 1798 |
],
|
| 1799 |
+
"time": "2016-11-14 01:06:16"
|
| 1800 |
},
|
| 1801 |
{
|
| 1802 |
+
"name": "symfony/process",
|
| 1803 |
+
"version": "dev-master",
|
| 1804 |
"source": {
|
| 1805 |
"type": "git",
|
| 1806 |
+
"url": "https://github.com/symfony/process.git",
|
| 1807 |
+
"reference": "6c687d5ae36a8677a6e3ce020d12b18feac79d5b"
|
| 1808 |
},
|
| 1809 |
"dist": {
|
| 1810 |
"type": "zip",
|
| 1811 |
+
"url": "https://api.github.com/repos/symfony/process/zipball/6c687d5ae36a8677a6e3ce020d12b18feac79d5b",
|
| 1812 |
+
"reference": "6c687d5ae36a8677a6e3ce020d12b18feac79d5b",
|
| 1813 |
"shasum": ""
|
| 1814 |
},
|
| 1815 |
"require": {
|
| 1816 |
+
"php": ">=5.5.9"
|
|
|
|
|
|
|
|
|
|
| 1817 |
},
|
| 1818 |
"type": "library",
|
| 1819 |
+
"extra": {
|
| 1820 |
+
"branch-alias": {
|
| 1821 |
+
"dev-master": "3.3-dev"
|
| 1822 |
+
}
|
| 1823 |
+
},
|
| 1824 |
"autoload": {
|
| 1825 |
+
"psr-4": {
|
| 1826 |
+
"Symfony\\Component\\Process\\": ""
|
| 1827 |
+
},
|
| 1828 |
+
"exclude-from-classmap": [
|
| 1829 |
+
"/Tests/"
|
| 1830 |
]
|
| 1831 |
},
|
| 1832 |
"notification-url": "https://packagist.org/downloads/",
|
| 1833 |
"license": [
|
| 1834 |
+
"MIT"
|
| 1835 |
],
|
| 1836 |
"authors": [
|
| 1837 |
{
|
| 1838 |
+
"name": "Fabien Potencier",
|
| 1839 |
+
"email": "fabien@symfony.com"
|
| 1840 |
+
},
|
| 1841 |
+
{
|
| 1842 |
+
"name": "Symfony Community",
|
| 1843 |
+
"homepage": "https://symfony.com/contributors"
|
| 1844 |
+
}
|
| 1845 |
+
],
|
| 1846 |
+
"description": "Symfony Process Component",
|
| 1847 |
+
"homepage": "https://symfony.com",
|
| 1848 |
+
"time": "2017-01-02 20:33:09"
|
| 1849 |
+
},
|
| 1850 |
+
{
|
| 1851 |
+
"name": "symfony/stopwatch",
|
| 1852 |
+
"version": "dev-master",
|
| 1853 |
+
"source": {
|
| 1854 |
+
"type": "git",
|
| 1855 |
+
"url": "https://github.com/symfony/stopwatch.git",
|
| 1856 |
+
"reference": "edfe3407825f9657fd38a05171eb5b8df8563146"
|
| 1857 |
+
},
|
| 1858 |
+
"dist": {
|
| 1859 |
+
"type": "zip",
|
| 1860 |
+
"url": "https://api.github.com/repos/symfony/stopwatch/zipball/edfe3407825f9657fd38a05171eb5b8df8563146",
|
| 1861 |
+
"reference": "edfe3407825f9657fd38a05171eb5b8df8563146",
|
| 1862 |
+
"shasum": ""
|
| 1863 |
+
},
|
| 1864 |
+
"require": {
|
| 1865 |
+
"php": ">=5.5.9"
|
| 1866 |
+
},
|
| 1867 |
+
"type": "library",
|
| 1868 |
+
"extra": {
|
| 1869 |
+
"branch-alias": {
|
| 1870 |
+
"dev-master": "3.3-dev"
|
| 1871 |
+
}
|
| 1872 |
+
},
|
| 1873 |
+
"autoload": {
|
| 1874 |
+
"psr-4": {
|
| 1875 |
+
"Symfony\\Component\\Stopwatch\\": ""
|
| 1876 |
+
},
|
| 1877 |
+
"exclude-from-classmap": [
|
| 1878 |
+
"/Tests/"
|
| 1879 |
+
]
|
| 1880 |
+
},
|
| 1881 |
+
"notification-url": "https://packagist.org/downloads/",
|
| 1882 |
+
"license": [
|
| 1883 |
+
"MIT"
|
| 1884 |
+
],
|
| 1885 |
+
"authors": [
|
| 1886 |
+
{
|
| 1887 |
+
"name": "Fabien Potencier",
|
| 1888 |
+
"email": "fabien@symfony.com"
|
| 1889 |
+
},
|
| 1890 |
+
{
|
| 1891 |
+
"name": "Symfony Community",
|
| 1892 |
+
"homepage": "https://symfony.com/contributors"
|
| 1893 |
+
}
|
| 1894 |
+
],
|
| 1895 |
+
"description": "Symfony Stopwatch Component",
|
| 1896 |
+
"homepage": "https://symfony.com",
|
| 1897 |
+
"time": "2017-01-02 20:33:09"
|
| 1898 |
+
},
|
| 1899 |
+
{
|
| 1900 |
+
"name": "symfony/yaml",
|
| 1901 |
+
"version": "dev-master",
|
| 1902 |
+
"source": {
|
| 1903 |
+
"type": "git",
|
| 1904 |
+
"url": "https://github.com/symfony/yaml.git",
|
| 1905 |
+
"reference": "d67fe7eaf6fdb1a9350bf2bdd727d64dbd814ddc"
|
| 1906 |
+
},
|
| 1907 |
+
"dist": {
|
| 1908 |
+
"type": "zip",
|
| 1909 |
+
"url": "https://api.github.com/repos/symfony/yaml/zipball/d67fe7eaf6fdb1a9350bf2bdd727d64dbd814ddc",
|
| 1910 |
+
"reference": "d67fe7eaf6fdb1a9350bf2bdd727d64dbd814ddc",
|
| 1911 |
+
"shasum": ""
|
| 1912 |
+
},
|
| 1913 |
+
"require": {
|
| 1914 |
+
"php": ">=5.5.9"
|
| 1915 |
+
},
|
| 1916 |
+
"require-dev": {
|
| 1917 |
+
"symfony/console": "~2.8|~3.0"
|
| 1918 |
+
},
|
| 1919 |
+
"suggest": {
|
| 1920 |
+
"symfony/console": "For validating YAML files using the lint command"
|
| 1921 |
+
},
|
| 1922 |
+
"type": "library",
|
| 1923 |
+
"extra": {
|
| 1924 |
+
"branch-alias": {
|
| 1925 |
+
"dev-master": "3.3-dev"
|
| 1926 |
+
}
|
| 1927 |
+
},
|
| 1928 |
+
"autoload": {
|
| 1929 |
+
"psr-4": {
|
| 1930 |
+
"Symfony\\Component\\Yaml\\": ""
|
| 1931 |
+
},
|
| 1932 |
+
"exclude-from-classmap": [
|
| 1933 |
+
"/Tests/"
|
| 1934 |
+
]
|
| 1935 |
+
},
|
| 1936 |
+
"notification-url": "https://packagist.org/downloads/",
|
| 1937 |
+
"license": [
|
| 1938 |
+
"MIT"
|
| 1939 |
+
],
|
| 1940 |
+
"authors": [
|
| 1941 |
+
{
|
| 1942 |
+
"name": "Fabien Potencier",
|
| 1943 |
+
"email": "fabien@symfony.com"
|
| 1944 |
+
},
|
| 1945 |
+
{
|
| 1946 |
+
"name": "Symfony Community",
|
| 1947 |
+
"homepage": "https://symfony.com/contributors"
|
| 1948 |
}
|
| 1949 |
],
|
| 1950 |
+
"description": "Symfony Yaml Component",
|
| 1951 |
+
"homepage": "https://symfony.com",
|
| 1952 |
+
"time": "2017-01-21 07:50:08"
|
| 1953 |
},
|
| 1954 |
{
|
| 1955 |
"name": "webmozart/assert",
|
| 1956 |
+
"version": "dev-master",
|
| 1957 |
"source": {
|
| 1958 |
"type": "git",
|
| 1959 |
"url": "https://github.com/webmozart/assert.git",
|
| 1960 |
+
"reference": "4a8bf11547e139e77b651365113fc12850c43d9a"
|
| 1961 |
},
|
| 1962 |
"dist": {
|
| 1963 |
"type": "zip",
|
| 1964 |
+
"url": "https://api.github.com/repos/webmozart/assert/zipball/4a8bf11547e139e77b651365113fc12850c43d9a",
|
| 1965 |
+
"reference": "4a8bf11547e139e77b651365113fc12850c43d9a",
|
| 1966 |
"shasum": ""
|
| 1967 |
},
|
| 1968 |
"require": {
|
| 1969 |
+
"php": "^5.3.3 || ^7.0"
|
|
|
|
| 1970 |
},
|
| 1971 |
"require-dev": {
|
| 1972 |
"phpunit/phpunit": "^4.6",
|
| 1999 |
"check",
|
| 2000 |
"validate"
|
| 2001 |
],
|
| 2002 |
+
"time": "2016-11-23 20:04:41"
|
| 2003 |
}
|
| 2004 |
],
|
| 2005 |
"aliases": [],
|
| 2006 |
"minimum-stability": "dev",
|
| 2007 |
+
"stability-flags": {
|
| 2008 |
+
"dhii/php-cs-fixer-config": 20
|
| 2009 |
+
},
|
| 2010 |
+
"prefer-stable": false,
|
| 2011 |
"prefer-lowest": false,
|
| 2012 |
"platform": {
|
| 2013 |
+
"php": "^5.3 | ^7.0"
|
| 2014 |
},
|
| 2015 |
"platform-dev": []
|
| 2016 |
}
|
vendor/dhii/data-key-value-aware-interface/nbproject/project.properties
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
auxiliary.org-netbeans-modules-php-phpunit.bootstrap_2e_create_2e_tests=false
|
| 2 |
+
auxiliary.org-netbeans-modules-php-phpunit.bootstrap_2e_enabled=false
|
| 3 |
+
auxiliary.org-netbeans-modules-php-phpunit.bootstrap_2e_path=
|
| 4 |
+
auxiliary.org-netbeans-modules-php-phpunit.configuration_2e_enabled=false
|
| 5 |
+
auxiliary.org-netbeans-modules-php-phpunit.configuration_2e_path=
|
| 6 |
+
auxiliary.org-netbeans-modules-php-phpunit.customSuite_2e_enabled=false
|
| 7 |
+
auxiliary.org-netbeans-modules-php-phpunit.customSuite_2e_path=
|
| 8 |
+
auxiliary.org-netbeans-modules-php-phpunit.phpUnit_2e_enabled=false
|
| 9 |
+
auxiliary.org-netbeans-modules-php-phpunit.phpUnit_2e_path=
|
| 10 |
+
auxiliary.org-netbeans-modules-php-phpunit.test_2e_groups_2e_ask=false
|
| 11 |
+
auxiliary.org-netbeans-modules-php-phpunit.test_2e_run_2e_all=false
|
| 12 |
+
file.reference.data-value-interface-vendor=vendor
|
| 13 |
+
file.reference.data-value-object-interface-vendor=vendor
|
| 14 |
+
file.reference.test-functional=test/functional
|
| 15 |
+
include.path=\
|
| 16 |
+
${php.global.include.path}:\
|
| 17 |
+
${file.reference.data-value-interface-vendor}
|
| 18 |
+
php.version=PHP_53
|
| 19 |
+
source.encoding=UTF-8
|
| 20 |
+
src.dir=src
|
| 21 |
+
tags.asp=false
|
| 22 |
+
tags.short=false
|
| 23 |
+
test.src.dir=${file.reference.test-functional}
|
| 24 |
+
testing.providers=PhpUnit
|
| 25 |
+
web.root=.
|
vendor/dhii/data-key-value-aware-interface/nbproject/project.xml
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
+
<project xmlns="http://www.netbeans.org/ns/project/1">
|
| 3 |
+
<type>org.netbeans.modules.php.project</type>
|
| 4 |
+
<configuration>
|
| 5 |
+
<data xmlns="http://www.netbeans.org/ns/php-project/1">
|
| 6 |
+
<name>dhii - data-key-value-aware-interface</name>
|
| 7 |
+
</data>
|
| 8 |
+
</configuration>
|
| 9 |
+
</project>
|
vendor/dhii/{module-interface → data-key-value-aware-interface}/phpunit.xml
RENAMED
|
@@ -32,4 +32,4 @@
|
|
| 32 |
<log type="testdox-html" target="./test/log/testdox.html"/>
|
| 33 |
<log type="testdox-text" target="./test/log/testdox.txt"/>
|
| 34 |
</logging>
|
| 35 |
-
</phpunit>
|
| 32 |
<log type="testdox-html" target="./test/log/testdox.html"/>
|
| 33 |
<log type="testdox-text" target="./test/log/testdox.txt"/>
|
| 34 |
</logging>
|
| 35 |
+
</phpunit>
|
vendor/dhii/data-key-value-aware-interface/src/KeyAwareInterface.php
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
namespace Dhii\Data;
|
| 4 |
+
|
| 5 |
+
/**
|
| 6 |
+
* Something that can have a key.
|
| 7 |
+
*
|
| 8 |
+
* A key is an identifier, i.e. a code.
|
| 9 |
+
*
|
| 10 |
+
* @since 0.1
|
| 11 |
+
*/
|
| 12 |
+
interface KeyAwareInterface
|
| 13 |
+
{
|
| 14 |
+
/**
|
| 15 |
+
* Retrieve the key of interface.
|
| 16 |
+
*
|
| 17 |
+
* @since 0.1
|
| 18 |
+
*
|
| 19 |
+
* @return string The key that this interface has.
|
| 20 |
+
*/
|
| 21 |
+
public function getKey();
|
| 22 |
+
}
|
vendor/dhii/data-key-value-aware-interface/src/KeyValueAwareInterface.php
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
namespace Dhii\Data;
|
| 4 |
+
|
| 5 |
+
/**
|
| 6 |
+
* Represents something that can have a key and a value.
|
| 7 |
+
*
|
| 8 |
+
* An example could be an option, or a collection item, or a mapping.
|
| 9 |
+
*
|
| 10 |
+
* @since 0.1
|
| 11 |
+
*/
|
| 12 |
+
interface KeyValueAwareInterface extends
|
| 13 |
+
KeyAwareInterface,
|
| 14 |
+
ValueAwareInterface
|
| 15 |
+
{
|
| 16 |
+
}
|
vendor/dhii/data-key-value-aware-interface/src/ValueAwareInterface.php
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
namespace Dhii\Data;
|
| 4 |
+
|
| 5 |
+
/**
|
| 6 |
+
* Something that can represent or have a value.
|
| 7 |
+
*
|
| 8 |
+
* @since 0.1
|
| 9 |
+
*/
|
| 10 |
+
interface ValueAwareInterface
|
| 11 |
+
{
|
| 12 |
+
/**
|
| 13 |
+
* Retrieves the value that this object represents.
|
| 14 |
+
*
|
| 15 |
+
* @since 0.1
|
| 16 |
+
*
|
| 17 |
+
* @return mixed The value that this object represents.
|
| 18 |
+
*/
|
| 19 |
+
public function getValue();
|
| 20 |
+
}
|
vendor/dhii/{containers → data-key-value-aware-interface}/test/bootstrap.php
RENAMED
|
File without changes
|
vendor/dhii/data-key-value-aware-interface/test/functional/KeyAwareInterfaceTest.php
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
namespace Dhii\Data\FuncTest;
|
| 4 |
+
|
| 5 |
+
/**
|
| 6 |
+
* Tests {@see \Dhii\Data\ValueAwareInterface}.
|
| 7 |
+
*
|
| 8 |
+
* @since 0.1
|
| 9 |
+
*/
|
| 10 |
+
class KeyAwareInterfaceTest extends \Xpmock\TestCase
|
| 11 |
+
{
|
| 12 |
+
const TEST_SUBJECT_CLASSNAME = 'Dhii\\Data\\KeyAwareInterface';
|
| 13 |
+
|
| 14 |
+
/**
|
| 15 |
+
* Creates a new instance of the test subject.
|
| 16 |
+
*
|
| 17 |
+
* @since 0.1
|
| 18 |
+
*
|
| 19 |
+
* @return \Dhii\Data\KeyAwareInterface A new instance of the test subject.
|
| 20 |
+
*/
|
| 21 |
+
public function createInstance()
|
| 22 |
+
{
|
| 23 |
+
$mock = $this->mock(static::TEST_SUBJECT_CLASSNAME)
|
| 24 |
+
->getKey()
|
| 25 |
+
->new();
|
| 26 |
+
|
| 27 |
+
return $mock;
|
| 28 |
+
}
|
| 29 |
+
|
| 30 |
+
/**
|
| 31 |
+
* Tests whether a valid instance of the test subject can be created.
|
| 32 |
+
*
|
| 33 |
+
* @since 0.1
|
| 34 |
+
*/
|
| 35 |
+
public function testCanBeCreated()
|
| 36 |
+
{
|
| 37 |
+
$subject = $this->createInstance();
|
| 38 |
+
|
| 39 |
+
$this->assertInstanceOf(static::TEST_SUBJECT_CLASSNAME, $subject, 'A valid instance of the test subject could not be created');
|
| 40 |
+
}
|
| 41 |
+
}
|
vendor/dhii/data-key-value-aware-interface/test/functional/KeyValueAwareInterfaceTest.php
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
namespace Dhii\Data\FuncTest;
|
| 4 |
+
|
| 5 |
+
/**
|
| 6 |
+
* Tests {@see \Dhii\Data\KeyValueAwareInterface
|
| 7 |
+
*
|
| 8 |
+
* @since 0.1
|
| 9 |
+
*/
|
| 10 |
+
class KeyValueAwareInterfaceTest extends \Xpmock\TestCase
|
| 11 |
+
{
|
| 12 |
+
const TEST_SUBJECT_CLASSNAME = 'Dhii\\Data\\ValueAwareInterface';
|
| 13 |
+
|
| 14 |
+
/**
|
| 15 |
+
* Creates a new instance of the test subject.
|
| 16 |
+
*
|
| 17 |
+
* @since 0.1
|
| 18 |
+
*
|
| 19 |
+
* @return \Dhii\Data\KeyValueAwareInterface A new instance of the test subject.
|
| 20 |
+
*/
|
| 21 |
+
public function createInstance()
|
| 22 |
+
{
|
| 23 |
+
$mock = $this->mock(static::TEST_SUBJECT_CLASSNAME)
|
| 24 |
+
->getKey()
|
| 25 |
+
->getValue()
|
| 26 |
+
->new();
|
| 27 |
+
|
| 28 |
+
return $mock;
|
| 29 |
+
}
|
| 30 |
+
|
| 31 |
+
/**
|
| 32 |
+
* Tests whether a valid instance of the test subject can be created.
|
| 33 |
+
*
|
| 34 |
+
* @since 0.1
|
| 35 |
+
*/
|
| 36 |
+
public function testCanBeCreated()
|
| 37 |
+
{
|
| 38 |
+
$subject = $this->createInstance();
|
| 39 |
+
|
| 40 |
+
$this->assertInstanceOf(static::TEST_SUBJECT_CLASSNAME, $subject, 'A valid instance of the test subject could not be created');
|
| 41 |
+
}
|
| 42 |
+
}
|
vendor/dhii/data-key-value-aware-interface/test/functional/ValueAwareInterfaceTest.php
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
namespace Dhii\Data\FuncTest;
|
| 4 |
+
|
| 5 |
+
/**
|
| 6 |
+
* Tests {@see \Dhii\Data\ValueAwareInterface}.
|
| 7 |
+
*
|
| 8 |
+
* @since 0.1
|
| 9 |
+
*/
|
| 10 |
+
class ValueAwareInterfaceTest extends \Xpmock\TestCase
|
| 11 |
+
{
|
| 12 |
+
const TEST_SUBJECT_CLASSNAME = 'Dhii\\Data\\ValueAwareInterface';
|
| 13 |
+
|
| 14 |
+
/**
|
| 15 |
+
* Creates a new instance of the test subject.
|
| 16 |
+
*
|
| 17 |
+
* @since 0.1
|
| 18 |
+
*
|
| 19 |
+
* @return \Dhii\Data\ValueAwareInterface A new instance of the test subject.
|
| 20 |
+
*/
|
| 21 |
+
public function createInstance()
|
| 22 |
+
{
|
| 23 |
+
$mock = $this->mock(static::TEST_SUBJECT_CLASSNAME)
|
| 24 |
+
->getValue()
|
| 25 |
+
->new();
|
| 26 |
+
|
| 27 |
+
return $mock;
|
| 28 |
+
}
|
| 29 |
+
|
| 30 |
+
/**
|
| 31 |
+
* Tests whether a valid instance of the test subject can be created.
|
| 32 |
+
*
|
| 33 |
+
* @since 0.1
|
| 34 |
+
*/
|
| 35 |
+
public function testCanBeCreated()
|
| 36 |
+
{
|
| 37 |
+
$subject = $this->createInstance();
|
| 38 |
+
|
| 39 |
+
$this->assertInstanceOf(static::TEST_SUBJECT_CLASSNAME, $subject, 'A valid instance of the test subject could not be created');
|
| 40 |
+
}
|
| 41 |
+
}
|
vendor/dhii/module-interface/.env.example
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
BASE_PATH=./
|
|
|
vendor/dhii/module-interface/CHANGELOG.md
CHANGED
|
@@ -4,24 +4,8 @@ All notable changes to this project will be documented in this file.
|
|
| 4 |
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
| 5 |
and this project adheres to [Semantic Versioning](http://semver.org/).
|
| 6 |
|
| 7 |
-
## [[*next-version*]] - YYYY-MM-DD
|
| 8 |
-
|
| 9 |
-
## [0.2.0-alpha1] - 2020-04-10
|
| 10 |
-
### Changed
|
| 11 |
-
- Module `setup()` now returns a `ServiceProviderInterface` instance.
|
| 12 |
-
- Module `run()` now requires the `ContainerInterface` argument.
|
| 13 |
-
- Modules are no longer key-aware.
|
| 14 |
-
|
| 15 |
-
### Removed
|
| 16 |
-
- `DependenciesAwareInterface` has been removed.
|
| 17 |
-
- `ModuleFactoryInterface` has been removed.
|
| 18 |
-
- `ModuleKeyAwareInterface` has been removed.
|
| 19 |
-
|
| 20 |
## [0.1] - 2019-11-05
|
| 21 |
Stable release
|
| 22 |
|
| 23 |
-
### Fixed
|
| 24 |
-
- Modules are now allowed to throw specialized exceptions.
|
| 25 |
-
|
| 26 |
## [0.1-alpha1] - 2018-05-07
|
| 27 |
Initial version.
|
| 4 |
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
| 5 |
and this project adheres to [Semantic Versioning](http://semver.org/).
|
| 6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7 |
## [0.1] - 2019-11-05
|
| 8 |
Stable release
|
| 9 |
|
|
|
|
|
|
|
|
|
|
| 10 |
## [0.1-alpha1] - 2018-05-07
|
| 11 |
Initial version.
|
vendor/dhii/module-interface/README.md
CHANGED
|
@@ -4,287 +4,27 @@
|
|
| 4 |
[](https://codeclimate.com/github/Dhii/module-interface)
|
| 5 |
[](https://codeclimate.com/github/Dhii/module-interface/coverage)
|
| 6 |
[](https://packagist.org/packages/dhii/module-interface)
|
|
|
|
| 7 |
|
| 8 |
## Details
|
| 9 |
This package contains interfaces that are useful in describing modules and their attributes and behaviour.
|
| 10 |
-
|
| 11 |
-
### Requirements
|
| 12 |
-
- PHP: 7.1 and up, until 8.
|
| 13 |
-
|
| 14 |
-
Officially supports at least up to php 7.4.x.
|
| 15 |
|
| 16 |
### Interfaces
|
| 17 |
-
- [`ModuleInterface`][] -
|
| 18 |
-
|
| 19 |
-
the
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
In your module's pacakge, create a file that returns a module factory. This factory MUST return an instance
|
| 26 |
-
of `ModuleInterface` from this pacakge. By convention, this file has
|
| 27 |
-
the name `module.php`, and is located in the root directory. Below is a very basic example. In real life,
|
| 28 |
-
the service provider and the module will often have named classes of their own, and factories and extensions
|
| 29 |
-
will be located in `services.php` and `extensions.php` respectively, by convention.
|
| 30 |
-
|
| 31 |
-
```php
|
| 32 |
-
// module.php
|
| 33 |
-
use Dhii\Modular\Module\ModuleInterface;
|
| 34 |
-
use Interop\Container\ServiceProviderInterface;
|
| 35 |
-
use Psr\Container\ContainerInterface;
|
| 36 |
-
|
| 37 |
-
return function () {
|
| 38 |
-
return new class () implements ModuleInterface {
|
| 39 |
-
|
| 40 |
-
/**
|
| 41 |
-
* Declares services of this module.
|
| 42 |
-
*
|
| 43 |
-
* @return ServiceProviderInterface The service provider with the factories and extensions of this module.
|
| 44 |
-
*/
|
| 45 |
-
public function setup() : ServiceProviderInterface
|
| 46 |
-
{
|
| 47 |
-
return new class () implements ServiceProviderInterface
|
| 48 |
-
{
|
| 49 |
-
/**
|
| 50 |
-
* Only the factory of the last module in load order is applied.
|
| 51 |
-
*
|
| 52 |
-
* @return array|callable[] A map of service names to service definitions.
|
| 53 |
-
*/
|
| 54 |
-
public function getFactories()
|
| 55 |
-
{
|
| 56 |
-
return [
|
| 57 |
-
// A factory always gets one parameter: the container.
|
| 58 |
-
'my_module/my_service' => function (ContainerInterface $c) {
|
| 59 |
-
// Create and return your service instance
|
| 60 |
-
return new MyService();
|
| 61 |
-
},
|
| 62 |
-
];
|
| 63 |
-
}
|
| 64 |
-
|
| 65 |
-
/**
|
| 66 |
-
* All extensions are always applied, in load order.
|
| 67 |
-
*
|
| 68 |
-
* @return array|callable[] A map of service names to extensions.
|
| 69 |
-
*/
|
| 70 |
-
public function getExtensions()
|
| 71 |
-
{
|
| 72 |
-
return [
|
| 73 |
-
// An extension gets an additional parameter:
|
| 74 |
-
// the value returned by the factory or the previously applied extensions.
|
| 75 |
-
'other_module/other_service' => function (
|
| 76 |
-
ContainerInterface $c,
|
| 77 |
-
OtherServiceInterface $previous
|
| 78 |
-
): OtherServiceInterface {
|
| 79 |
-
// Perhaps decorate $previous and return the decorator
|
| 80 |
-
return new MyDecorator($previous);
|
| 81 |
-
},
|
| 82 |
-
];
|
| 83 |
-
}
|
| 84 |
-
};
|
| 85 |
-
}
|
| 86 |
-
|
| 87 |
-
/**
|
| 88 |
-
* Consumes services of this and other modules.
|
| 89 |
-
*
|
| 90 |
-
* @param ContainerInterface $c A container with the services of all modules.
|
| 91 |
-
*/
|
| 92 |
-
public function run(ContainerInterface $c)
|
| 93 |
-
{
|
| 94 |
-
$myService = $c->get('my_module/my_service');
|
| 95 |
-
$myService->doSomething();
|
| 96 |
-
}
|
| 97 |
-
};
|
| 98 |
-
};
|
| 99 |
-
```
|
| 100 |
-
|
| 101 |
-
In the above example, the module declares a service `my_module/my_service`, and an extension
|
| 102 |
-
for the `other_module/other_service`, which may be found in another module. Note that by convention,
|
| 103 |
-
the service name contains the module name prefix, separated by forward slash `/`. It's possible
|
| 104 |
-
to further "nest" services by adding slash-separated "levels". In the future, some container
|
| 105 |
-
implementations will add benefits for modules that use this convention.
|
| 106 |
-
|
| 107 |
-
Applications would often need the ability to do something with the arbitrary set of
|
| 108 |
-
modules they require. In order for an application to be able to group all modules
|
| 109 |
-
together, declare the package type in your `composer.json` to be `dhii-mod` by convention.
|
| 110 |
-
Following this convention would allow all modules written by all authors to be treated
|
| 111 |
-
uniformly.
|
| 112 |
-
|
| 113 |
-
```json
|
| 114 |
-
{
|
| 115 |
-
"name": "me/my_module",
|
| 116 |
-
"type": "dhii-mod"
|
| 117 |
-
}
|
| 118 |
-
```
|
| 119 |
-
|
| 120 |
-
What's important here:
|
| 121 |
-
|
| 122 |
-
1. A module's `setup()` method should not cause side effects.
|
| 123 |
-
|
| 124 |
-
The setup method is intended for the modules to prepare for action. Modules should not actually
|
| 125 |
-
peform the actions during this method. The container is not available in this method, and therefore
|
| 126 |
-
the module cannot use any services, whether of itself or of other modules, in this method. Do not
|
| 127 |
-
try to make the module use its own services here.
|
| 128 |
-
|
| 129 |
-
2. Implement the correct interfaces.
|
| 130 |
-
|
| 131 |
-
A module MUST implement `ModuleInterface`. The module's `setup()` method MUST return `ServiceProviderInterface`.
|
| 132 |
-
Even though the [Service Provider][`container-interop/service-provider`] standard is experimental, and has been experimental for a long time, the
|
| 133 |
-
module standard relies heavily on it. If the module standard becomes ubiquitous, this could push
|
| 134 |
-
FIG to go forward with the Service Provider standard, hopefully making it into a PSR.
|
| 135 |
-
|
| 136 |
-
3. Observe conventions.
|
| 137 |
-
|
| 138 |
-
It is important that conventions outlined here are observed. Some are necessary for smooth operation of
|
| 139 |
-
modules and/or consuming applications. Some others may not make a difference right now, but could
|
| 140 |
-
add benefits in the future. Please observe these conventions to ensure an optimal experience
|
| 141 |
-
for yourself and for other users of the standard.
|
| 142 |
-
|
| 143 |
-
#### Consumer Package
|
| 144 |
-
##### Module Installation
|
| 145 |
-
The package that consumes modules, which is usually the application, would need to require the modules.
|
| 146 |
-
The below example uses the [`oomphinc/composer-installers-extender`][] lib to configure Composer
|
| 147 |
-
so that it installs all `dhii-mod` packages into the `modules` directory in the application root.
|
| 148 |
-
Packages `me/my_module` and `me/my_other_module` would therefore go into `modules/me/my_module` and
|
| 149 |
-
`modules/me/my_other_module` respectively.
|
| 150 |
-
|
| 151 |
-
```json
|
| 152 |
-
{
|
| 153 |
-
"name": "me/my_app",
|
| 154 |
-
"require": {
|
| 155 |
-
"me/my_module": "^0.1",
|
| 156 |
-
"me/my_other_module": "^0.1",
|
| 157 |
-
"oomphinc/composer-installers-extender": "^1.1"
|
| 158 |
-
},
|
| 159 |
-
|
| 160 |
-
"extra": {
|
| 161 |
-
"installer-types": ["dhii-mod"],
|
| 162 |
-
"installer-paths": {
|
| 163 |
-
"modules/{$vendor}/{$name}": ["type:dhii-mod"]
|
| 164 |
-
}
|
| 165 |
-
}
|
| 166 |
-
}
|
| 167 |
-
```
|
| 168 |
-
|
| 169 |
-
##### Module Loading
|
| 170 |
-
Once a module has been required, it must be loaded. Module files must be explicitly loaded by the
|
| 171 |
-
application, because the application is what determines module load order. The load order is
|
| 172 |
-
the fundamental principle that allows modules to extend and override each other's services
|
| 173 |
-
in a simple and intuitive way:
|
| 174 |
|
| 175 |
-
|
| 176 |
-
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
then it will override the `my_module/my_service` service declared by `my_module`.
|
| 180 |
-
In short: **last factory wins**.
|
| 181 |
-
|
| 182 |
-
2. Extensions in modules that are loaded later will be applied after extensions of modules loaded earlier.
|
| 183 |
-
|
| 184 |
-
Ultimately, extensions from _all_ modules will be applied on top of what is returned by the factory.
|
| 185 |
-
So if `my_other_module` declares an extension `other_module/other_service`, it will be applied after
|
| 186 |
-
the extension `other_module/other_service` declared by `my_module`.
|
| 187 |
-
In short: **later extensions extend previous extensions**.
|
| 188 |
-
|
| 189 |
-
Continuing from the examples above, if something in the application requests the service `other_module/other_service`
|
| 190 |
-
declared by `my_other_module`, this is what is going to happen:
|
| 191 |
-
|
| 192 |
-
1. The factory in `my_other_module` is invoked.
|
| 193 |
-
2. The extension in `my_module` is invoked, and receives the result of the above factory as `$previous`.
|
| 194 |
-
3. The extension in `my_other_module` is invoked, and receives the result of the above extension as `$previous`
|
| 195 |
-
4. The caller of `get('other_module/other_service')` receives the result of the above extension.
|
| 196 |
-
|
| 197 |
-
Thus, any module can override and/or extend services from any other module. Below is an example of what
|
| 198 |
-
an application's bootstrap code could look like. This example uses classes from [`dhii/containers`][].
|
| 199 |
-
|
| 200 |
-
```php
|
| 201 |
-
// bootstrap.php
|
| 202 |
-
|
| 203 |
-
use Dhii\Modular\Module\ModuleInterface;
|
| 204 |
-
use Interop\Container\ServiceProviderInterface;
|
| 205 |
-
use Dhii\Container\CompositeCachingServiceProvider;
|
| 206 |
-
use Dhii\Container\DelegatingContainer;
|
| 207 |
-
use Dhii\Container\CachingContainer;
|
| 208 |
-
|
| 209 |
-
(function ($file) {
|
| 210 |
-
$baseDir = dirname($file);
|
| 211 |
-
$modulesDir = "$baseDir/modules";
|
| 212 |
-
|
| 213 |
-
// Order is important!
|
| 214 |
-
$moduleNames = [
|
| 215 |
-
'me/my_module',
|
| 216 |
-
'me/my_other_module',
|
| 217 |
-
];
|
| 218 |
-
|
| 219 |
-
// Create and load all modules
|
| 220 |
-
/* @var $modules ModuleInterface[] */
|
| 221 |
-
$modules = [];
|
| 222 |
-
foreach ($moduleNames as $moduleName) {
|
| 223 |
-
$moduleFactory = require_once("$modulesDir/$moduleName/module.php");
|
| 224 |
-
$module = $moduleFactory();
|
| 225 |
-
$modules[$moduleName] = $module;
|
| 226 |
-
}
|
| 227 |
-
|
| 228 |
-
// Retrieve all modules' service providers
|
| 229 |
-
/* @var $providers ServiceProviderInterface[] */
|
| 230 |
-
$providers = [];
|
| 231 |
-
foreach ($modules as $module) {
|
| 232 |
-
$providers[] = $module->setup();
|
| 233 |
-
}
|
| 234 |
-
|
| 235 |
-
// Group all service providers into one
|
| 236 |
-
$provider = new CompositeCachingServiceProvider();
|
| 237 |
-
$container = new CachingContainer(new DelegatingContainer($provider, $parentContainer = null));
|
| 238 |
-
|
| 239 |
-
// Run all modules
|
| 240 |
-
foreach ($modules as $module) {
|
| 241 |
-
$module->run($container);
|
| 242 |
-
}
|
| 243 |
-
})(__FILE__);
|
| 244 |
-
```
|
| 245 |
-
|
| 246 |
-
The above will load, setup, and run modules `me/my_module` and `me/my_other_module`, in that order,
|
| 247 |
-
from the `modules` directory, provided that conventions have been followed by those modules.
|
| 248 |
-
What's important to note here:
|
| 249 |
-
|
| 250 |
-
1. First _all_ modules are set up, and then _all_ modules are run.
|
| 251 |
-
|
| 252 |
-
If you set up and run modules in the same step, it will not work, because the bootstrap
|
| 253 |
-
will not have the opportunity to configure the application's DI container with services
|
| 254 |
-
from all modules.
|
| 255 |
-
|
| 256 |
-
2. The `CompositeCachingServiceProvider` is what is responsible for resolving services correctly.
|
| 257 |
-
|
| 258 |
-
This relieves the application, as the process can seem complicated, and is quite re-usable.
|
| 259 |
-
The usage of this class is recommended.
|
| 260 |
-
|
| 261 |
-
3. The `DelegatingContainer` optionally accepts a parent container.
|
| 262 |
-
|
| 263 |
-
If your application is a module itself, and needs to be part of a larger application with its
|
| 264 |
-
own DI container, supply it as the 2nd parameter. This will ensure that services will always
|
| 265 |
-
be retrieved from the top-most container, regardless of where the definition is declared.
|
| 266 |
-
|
| 267 |
-
4. The `CachingContainer` ensures services are cached.
|
| 268 |
-
|
| 269 |
-
Effectively, this means that all services are singletons, i.e. there will only be one instance
|
| 270 |
-
of each service in the application. This is most commonly the desired behaviour. Without the
|
| 271 |
-
`CachingContainer`, i.e. with just the `DelegatingContainer`, service definitions will get
|
| 272 |
-
invoked every time `get()` is called, which is usually undesirable.
|
| 273 |
-
|
| 274 |
-
5. Conventions are important.
|
| 275 |
-
|
| 276 |
-
If modules did not place the `module.php` file into their root directories, the bootstrap
|
| 277 |
-
would not be able to load each module by just its package name. Modules which do not
|
| 278 |
-
follow that convention must have their `module.php` file loaded separately, which would
|
| 279 |
-
make the bootstrap code more complicated.
|
| 280 |
|
| 281 |
|
| 282 |
[Dhii]: https://github.com/Dhii/dhii
|
| 283 |
|
| 284 |
-
[
|
| 285 |
-
[`oomphinc/composer-installers-extender`]: https://packagist.org/packages/oomphinc/composer-installers-extender
|
| 286 |
-
[`container-interop/service-provider`]: https://packagist.org/packages/container-interop/service-provider
|
| 287 |
-
|
| 288 |
-
[`ModuleInterface`]: src/ModuleInterface.php
|
| 289 |
-
[`ModuleAwareInterface`]: src/ModuleAwareInterface.php
|
| 290 |
-
[`ModuleExceptionInterface`]: src/Exception/ModuleExceptionInterface.php
|
| 4 |
[](https://codeclimate.com/github/Dhii/module-interface)
|
| 5 |
[](https://codeclimate.com/github/Dhii/module-interface/coverage)
|
| 6 |
[](https://packagist.org/packages/dhii/module-interface)
|
| 7 |
+
[][Dhii]
|
| 8 |
|
| 9 |
## Details
|
| 10 |
This package contains interfaces that are useful in describing modules and their attributes and behaviour.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
|
| 12 |
### Interfaces
|
| 13 |
+
- [`ModuleInterface`][ModuleInterface] - Represents a module. A module MUST have a key, and MUST be able to be set up
|
| 14 |
+
and run separately in order to have the chance to prepare itself and let other potential modules to do the same. The
|
| 15 |
+
`setup()` method MAY return a container with the services provided by that module. The `run()` method MAY accept an
|
| 16 |
+
optional container with the services provided by the application, but MUST handle the case where no container is provided.
|
| 17 |
+
The container provided to `run()` MAY be the same container returned from `setup()`. Implementations that consume
|
| 18 |
+
their own services SHOULD therefore rely only on what is provided to `run()`, which gives the application the means
|
| 19 |
+
to add or override services. Nevertheless, implementations MUST NOT assume that the container received by `run()` is
|
| 20 |
+
the same container returned from `setup()`.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 21 |
|
| 22 |
+
### Requirements
|
| 23 |
+
This package officially supports PHP 5.3 until PHP 7.3. Theoretically, it should work on higher versions of PHP just
|
| 24 |
+
the same, at the very least until PHP 8. However, it does not appear possible to build on PHP 5.3 and 7.4 at the same
|
| 25 |
+
time, because there seems to be no distro which has both of those in its toolchain.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
|
| 27 |
|
| 28 |
[Dhii]: https://github.com/Dhii/dhii
|
| 29 |
|
| 30 |
+
[ModuleInterface]: src/ModuleInterface.php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/dhii/module-interface/composer.json
CHANGED
|
@@ -12,12 +12,18 @@
|
|
| 12 |
"prefer-stable": true,
|
| 13 |
"minimum-stability": "dev",
|
| 14 |
"require": {
|
| 15 |
-
"php": "^7.
|
| 16 |
-
"
|
| 17 |
-
"
|
|
|
|
| 18 |
},
|
| 19 |
"require-dev": {
|
| 20 |
-
"phpunit/phpunit": "^
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 21 |
},
|
| 22 |
"autoload": {
|
| 23 |
"psr-4": {
|
|
@@ -27,16 +33,16 @@
|
|
| 27 |
"autoload-dev": {
|
| 28 |
"psr-4": {
|
| 29 |
"Dhii\\Modular\\Module\\UnitTest\\": "test/unit",
|
| 30 |
-
"Dhii\\Modular\\Module\\FuncTest\\": "test/functional"
|
| 31 |
-
"Dhii\\Modular\\Module\\Test\\": "test/stubs"
|
| 32 |
}
|
| 33 |
},
|
| 34 |
"scripts": {
|
| 35 |
-
"test": "phpunit"
|
|
|
|
| 36 |
},
|
| 37 |
"extra": {
|
| 38 |
"branch-alias": {
|
| 39 |
-
"dev-develop": "0.
|
| 40 |
}
|
| 41 |
}
|
| 42 |
}
|
| 12 |
"prefer-stable": true,
|
| 13 |
"minimum-stability": "dev",
|
| 14 |
"require": {
|
| 15 |
+
"php": "^5.3 | ^7.0",
|
| 16 |
+
"dhii/exception-interface": "^0.1 | ^0.2",
|
| 17 |
+
"dhii/data-key-value-aware-interface": "^0.1",
|
| 18 |
+
"dhii/factory-interface": "^0.1-alpha1"
|
| 19 |
},
|
| 20 |
"require-dev": {
|
| 21 |
+
"phpunit/phpunit": "^4.8",
|
| 22 |
+
"ptrofimov/xpmock": "^1.1",
|
| 23 |
+
"dhii/php-cs-fixer-config": "dev-php-5.3",
|
| 24 |
+
"codeclimate/php-test-reporter": "<=0.3.2",
|
| 25 |
+
"dhii/stringable-interface": "^0.1",
|
| 26 |
+
"psr/container": "^1.0"
|
| 27 |
},
|
| 28 |
"autoload": {
|
| 29 |
"psr-4": {
|
| 33 |
"autoload-dev": {
|
| 34 |
"psr-4": {
|
| 35 |
"Dhii\\Modular\\Module\\UnitTest\\": "test/unit",
|
| 36 |
+
"Dhii\\Modular\\Module\\FuncTest\\": "test/functional"
|
|
|
|
| 37 |
}
|
| 38 |
},
|
| 39 |
"scripts": {
|
| 40 |
+
"test": "phpunit",
|
| 41 |
+
"csfix": "php-cs-fixer fix -vvv"
|
| 42 |
},
|
| 43 |
"extra": {
|
| 44 |
"branch-alias": {
|
| 45 |
+
"dev-develop": "0.1.x-dev"
|
| 46 |
}
|
| 47 |
}
|
| 48 |
}
|
vendor/dhii/module-interface/composer.lock
DELETED
|
@@ -1,1569 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"_readme": [
|
| 3 |
-
"This file locks the dependencies of your project to a known state",
|
| 4 |
-
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
| 5 |
-
"This file is @generated automatically"
|
| 6 |
-
],
|
| 7 |
-
"content-hash": "f870e9a04e6a5595167e21a6ec1938cf",
|
| 8 |
-
"packages": [
|
| 9 |
-
{
|
| 10 |
-
"name": "container-interop/service-provider",
|
| 11 |
-
"version": "v0.4.0",
|
| 12 |
-
"source": {
|
| 13 |
-
"type": "git",
|
| 14 |
-
"url": "https://github.com/container-interop/service-provider.git",
|
| 15 |
-
"reference": "4969b9e49460690b7430b3f1a87cab07be61418a"
|
| 16 |
-
},
|
| 17 |
-
"dist": {
|
| 18 |
-
"type": "zip",
|
| 19 |
-
"url": "https://api.github.com/repos/container-interop/service-provider/zipball/4969b9e49460690b7430b3f1a87cab07be61418a",
|
| 20 |
-
"reference": "4969b9e49460690b7430b3f1a87cab07be61418a",
|
| 21 |
-
"shasum": ""
|
| 22 |
-
},
|
| 23 |
-
"require": {
|
| 24 |
-
"psr/container": "^1.0"
|
| 25 |
-
},
|
| 26 |
-
"type": "library",
|
| 27 |
-
"autoload": {
|
| 28 |
-
"psr-4": {
|
| 29 |
-
"Interop\\Container\\": "src/"
|
| 30 |
-
}
|
| 31 |
-
},
|
| 32 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 33 |
-
"license": [
|
| 34 |
-
"MIT"
|
| 35 |
-
],
|
| 36 |
-
"description": "Promoting container interoperability through standard service providers",
|
| 37 |
-
"homepage": "https://github.com/container-interop/service-provider",
|
| 38 |
-
"time": "2017-09-20T14:13:36+00:00"
|
| 39 |
-
},
|
| 40 |
-
{
|
| 41 |
-
"name": "psr/container",
|
| 42 |
-
"version": "1.0.0",
|
| 43 |
-
"source": {
|
| 44 |
-
"type": "git",
|
| 45 |
-
"url": "https://github.com/php-fig/container.git",
|
| 46 |
-
"reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
|
| 47 |
-
},
|
| 48 |
-
"dist": {
|
| 49 |
-
"type": "zip",
|
| 50 |
-
"url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
|
| 51 |
-
"reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
|
| 52 |
-
"shasum": ""
|
| 53 |
-
},
|
| 54 |
-
"require": {
|
| 55 |
-
"php": ">=5.3.0"
|
| 56 |
-
},
|
| 57 |
-
"type": "library",
|
| 58 |
-
"extra": {
|
| 59 |
-
"branch-alias": {
|
| 60 |
-
"dev-master": "1.0.x-dev"
|
| 61 |
-
}
|
| 62 |
-
},
|
| 63 |
-
"autoload": {
|
| 64 |
-
"psr-4": {
|
| 65 |
-
"Psr\\Container\\": "src/"
|
| 66 |
-
}
|
| 67 |
-
},
|
| 68 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 69 |
-
"license": [
|
| 70 |
-
"MIT"
|
| 71 |
-
],
|
| 72 |
-
"authors": [
|
| 73 |
-
{
|
| 74 |
-
"name": "PHP-FIG",
|
| 75 |
-
"homepage": "http://www.php-fig.org/"
|
| 76 |
-
}
|
| 77 |
-
],
|
| 78 |
-
"description": "Common Container Interface (PHP FIG PSR-11)",
|
| 79 |
-
"homepage": "https://github.com/php-fig/container",
|
| 80 |
-
"keywords": [
|
| 81 |
-
"PSR-11",
|
| 82 |
-
"container",
|
| 83 |
-
"container-interface",
|
| 84 |
-
"container-interop",
|
| 85 |
-
"psr"
|
| 86 |
-
],
|
| 87 |
-
"time": "2017-02-14T16:28:37+00:00"
|
| 88 |
-
}
|
| 89 |
-
],
|
| 90 |
-
"packages-dev": [
|
| 91 |
-
{
|
| 92 |
-
"name": "doctrine/instantiator",
|
| 93 |
-
"version": "1.3.0",
|
| 94 |
-
"source": {
|
| 95 |
-
"type": "git",
|
| 96 |
-
"url": "https://github.com/doctrine/instantiator.git",
|
| 97 |
-
"reference": "ae466f726242e637cebdd526a7d991b9433bacf1"
|
| 98 |
-
},
|
| 99 |
-
"dist": {
|
| 100 |
-
"type": "zip",
|
| 101 |
-
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1",
|
| 102 |
-
"reference": "ae466f726242e637cebdd526a7d991b9433bacf1",
|
| 103 |
-
"shasum": ""
|
| 104 |
-
},
|
| 105 |
-
"require": {
|
| 106 |
-
"php": "^7.1"
|
| 107 |
-
},
|
| 108 |
-
"require-dev": {
|
| 109 |
-
"doctrine/coding-standard": "^6.0",
|
| 110 |
-
"ext-pdo": "*",
|
| 111 |
-
"ext-phar": "*",
|
| 112 |
-
"phpbench/phpbench": "^0.13",
|
| 113 |
-
"phpstan/phpstan-phpunit": "^0.11",
|
| 114 |
-
"phpstan/phpstan-shim": "^0.11",
|
| 115 |
-
"phpunit/phpunit": "^7.0"
|
| 116 |
-
},
|
| 117 |
-
"type": "library",
|
| 118 |
-
"extra": {
|
| 119 |
-
"branch-alias": {
|
| 120 |
-
"dev-master": "1.2.x-dev"
|
| 121 |
-
}
|
| 122 |
-
},
|
| 123 |
-
"autoload": {
|
| 124 |
-
"psr-4": {
|
| 125 |
-
"Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
|
| 126 |
-
}
|
| 127 |
-
},
|
| 128 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 129 |
-
"license": [
|
| 130 |
-
"MIT"
|
| 131 |
-
],
|
| 132 |
-
"authors": [
|
| 133 |
-
{
|
| 134 |
-
"name": "Marco Pivetta",
|
| 135 |
-
"email": "ocramius@gmail.com",
|
| 136 |
-
"homepage": "http://ocramius.github.com/"
|
| 137 |
-
}
|
| 138 |
-
],
|
| 139 |
-
"description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
|
| 140 |
-
"homepage": "https://www.doctrine-project.org/projects/instantiator.html",
|
| 141 |
-
"keywords": [
|
| 142 |
-
"constructor",
|
| 143 |
-
"instantiate"
|
| 144 |
-
],
|
| 145 |
-
"time": "2019-10-21T16:45:58+00:00"
|
| 146 |
-
},
|
| 147 |
-
{
|
| 148 |
-
"name": "myclabs/deep-copy",
|
| 149 |
-
"version": "1.9.5",
|
| 150 |
-
"source": {
|
| 151 |
-
"type": "git",
|
| 152 |
-
"url": "https://github.com/myclabs/DeepCopy.git",
|
| 153 |
-
"reference": "b2c28789e80a97badd14145fda39b545d83ca3ef"
|
| 154 |
-
},
|
| 155 |
-
"dist": {
|
| 156 |
-
"type": "zip",
|
| 157 |
-
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef",
|
| 158 |
-
"reference": "b2c28789e80a97badd14145fda39b545d83ca3ef",
|
| 159 |
-
"shasum": ""
|
| 160 |
-
},
|
| 161 |
-
"require": {
|
| 162 |
-
"php": "^7.1"
|
| 163 |
-
},
|
| 164 |
-
"replace": {
|
| 165 |
-
"myclabs/deep-copy": "self.version"
|
| 166 |
-
},
|
| 167 |
-
"require-dev": {
|
| 168 |
-
"doctrine/collections": "^1.0",
|
| 169 |
-
"doctrine/common": "^2.6",
|
| 170 |
-
"phpunit/phpunit": "^7.1"
|
| 171 |
-
},
|
| 172 |
-
"type": "library",
|
| 173 |
-
"autoload": {
|
| 174 |
-
"psr-4": {
|
| 175 |
-
"DeepCopy\\": "src/DeepCopy/"
|
| 176 |
-
},
|
| 177 |
-
"files": [
|
| 178 |
-
"src/DeepCopy/deep_copy.php"
|
| 179 |
-
]
|
| 180 |
-
},
|
| 181 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 182 |
-
"license": [
|
| 183 |
-
"MIT"
|
| 184 |
-
],
|
| 185 |
-
"description": "Create deep copies (clones) of your objects",
|
| 186 |
-
"keywords": [
|
| 187 |
-
"clone",
|
| 188 |
-
"copy",
|
| 189 |
-
"duplicate",
|
| 190 |
-
"object",
|
| 191 |
-
"object graph"
|
| 192 |
-
],
|
| 193 |
-
"time": "2020-01-17T21:11:47+00:00"
|
| 194 |
-
},
|
| 195 |
-
{
|
| 196 |
-
"name": "phar-io/manifest",
|
| 197 |
-
"version": "1.0.3",
|
| 198 |
-
"source": {
|
| 199 |
-
"type": "git",
|
| 200 |
-
"url": "https://github.com/phar-io/manifest.git",
|
| 201 |
-
"reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4"
|
| 202 |
-
},
|
| 203 |
-
"dist": {
|
| 204 |
-
"type": "zip",
|
| 205 |
-
"url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
|
| 206 |
-
"reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
|
| 207 |
-
"shasum": ""
|
| 208 |
-
},
|
| 209 |
-
"require": {
|
| 210 |
-
"ext-dom": "*",
|
| 211 |
-
"ext-phar": "*",
|
| 212 |
-
"phar-io/version": "^2.0",
|
| 213 |
-
"php": "^5.6 || ^7.0"
|
| 214 |
-
},
|
| 215 |
-
"type": "library",
|
| 216 |
-
"extra": {
|
| 217 |
-
"branch-alias": {
|
| 218 |
-
"dev-master": "1.0.x-dev"
|
| 219 |
-
}
|
| 220 |
-
},
|
| 221 |
-
"autoload": {
|
| 222 |
-
"classmap": [
|
| 223 |
-
"src/"
|
| 224 |
-
]
|
| 225 |
-
},
|
| 226 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 227 |
-
"license": [
|
| 228 |
-
"BSD-3-Clause"
|
| 229 |
-
],
|
| 230 |
-
"authors": [
|
| 231 |
-
{
|
| 232 |
-
"name": "Arne Blankerts",
|
| 233 |
-
"email": "arne@blankerts.de",
|
| 234 |
-
"role": "Developer"
|
| 235 |
-
},
|
| 236 |
-
{
|
| 237 |
-
"name": "Sebastian Heuer",
|
| 238 |
-
"email": "sebastian@phpeople.de",
|
| 239 |
-
"role": "Developer"
|
| 240 |
-
},
|
| 241 |
-
{
|
| 242 |
-
"name": "Sebastian Bergmann",
|
| 243 |
-
"email": "sebastian@phpunit.de",
|
| 244 |
-
"role": "Developer"
|
| 245 |
-
}
|
| 246 |
-
],
|
| 247 |
-
"description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
|
| 248 |
-
"time": "2018-07-08T19:23:20+00:00"
|
| 249 |
-
},
|
| 250 |
-
{
|
| 251 |
-
"name": "phar-io/version",
|
| 252 |
-
"version": "2.0.1",
|
| 253 |
-
"source": {
|
| 254 |
-
"type": "git",
|
| 255 |
-
"url": "https://github.com/phar-io/version.git",
|
| 256 |
-
"reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6"
|
| 257 |
-
},
|
| 258 |
-
"dist": {
|
| 259 |
-
"type": "zip",
|
| 260 |
-
"url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6",
|
| 261 |
-
"reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6",
|
| 262 |
-
"shasum": ""
|
| 263 |
-
},
|
| 264 |
-
"require": {
|
| 265 |
-
"php": "^5.6 || ^7.0"
|
| 266 |
-
},
|
| 267 |
-
"type": "library",
|
| 268 |
-
"autoload": {
|
| 269 |
-
"classmap": [
|
| 270 |
-
"src/"
|
| 271 |
-
]
|
| 272 |
-
},
|
| 273 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 274 |
-
"license": [
|
| 275 |
-
"BSD-3-Clause"
|
| 276 |
-
],
|
| 277 |
-
"authors": [
|
| 278 |
-
{
|
| 279 |
-
"name": "Arne Blankerts",
|
| 280 |
-
"email": "arne@blankerts.de",
|
| 281 |
-
"role": "Developer"
|
| 282 |
-
},
|
| 283 |
-
{
|
| 284 |
-
"name": "Sebastian Heuer",
|
| 285 |
-
"email": "sebastian@phpeople.de",
|
| 286 |
-
"role": "Developer"
|
| 287 |
-
},
|
| 288 |
-
{
|
| 289 |
-
"name": "Sebastian Bergmann",
|
| 290 |
-
"email": "sebastian@phpunit.de",
|
| 291 |
-
"role": "Developer"
|
| 292 |
-
}
|
| 293 |
-
],
|
| 294 |
-
"description": "Library for handling version information and constraints",
|
| 295 |
-
"time": "2018-07-08T19:19:57+00:00"
|
| 296 |
-
},
|
| 297 |
-
{
|
| 298 |
-
"name": "phpdocumentor/reflection-common",
|
| 299 |
-
"version": "2.0.0",
|
| 300 |
-
"source": {
|
| 301 |
-
"type": "git",
|
| 302 |
-
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
|
| 303 |
-
"reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a"
|
| 304 |
-
},
|
| 305 |
-
"dist": {
|
| 306 |
-
"type": "zip",
|
| 307 |
-
"url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a",
|
| 308 |
-
"reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a",
|
| 309 |
-
"shasum": ""
|
| 310 |
-
},
|
| 311 |
-
"require": {
|
| 312 |
-
"php": ">=7.1"
|
| 313 |
-
},
|
| 314 |
-
"require-dev": {
|
| 315 |
-
"phpunit/phpunit": "~6"
|
| 316 |
-
},
|
| 317 |
-
"type": "library",
|
| 318 |
-
"extra": {
|
| 319 |
-
"branch-alias": {
|
| 320 |
-
"dev-master": "2.x-dev"
|
| 321 |
-
}
|
| 322 |
-
},
|
| 323 |
-
"autoload": {
|
| 324 |
-
"psr-4": {
|
| 325 |
-
"phpDocumentor\\Reflection\\": "src/"
|
| 326 |
-
}
|
| 327 |
-
},
|
| 328 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 329 |
-
"license": [
|
| 330 |
-
"MIT"
|
| 331 |
-
],
|
| 332 |
-
"authors": [
|
| 333 |
-
{
|
| 334 |
-
"name": "Jaap van Otterdijk",
|
| 335 |
-
"email": "opensource@ijaap.nl"
|
| 336 |
-
}
|
| 337 |
-
],
|
| 338 |
-
"description": "Common reflection classes used by phpdocumentor to reflect the code structure",
|
| 339 |
-
"homepage": "http://www.phpdoc.org",
|
| 340 |
-
"keywords": [
|
| 341 |
-
"FQSEN",
|
| 342 |
-
"phpDocumentor",
|
| 343 |
-
"phpdoc",
|
| 344 |
-
"reflection",
|
| 345 |
-
"static analysis"
|
| 346 |
-
],
|
| 347 |
-
"time": "2018-08-07T13:53:10+00:00"
|
| 348 |
-
},
|
| 349 |
-
{
|
| 350 |
-
"name": "phpdocumentor/reflection-docblock",
|
| 351 |
-
"version": "4.3.4",
|
| 352 |
-
"source": {
|
| 353 |
-
"type": "git",
|
| 354 |
-
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
|
| 355 |
-
"reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c"
|
| 356 |
-
},
|
| 357 |
-
"dist": {
|
| 358 |
-
"type": "zip",
|
| 359 |
-
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c",
|
| 360 |
-
"reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c",
|
| 361 |
-
"shasum": ""
|
| 362 |
-
},
|
| 363 |
-
"require": {
|
| 364 |
-
"php": "^7.0",
|
| 365 |
-
"phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0",
|
| 366 |
-
"phpdocumentor/type-resolver": "~0.4 || ^1.0.0",
|
| 367 |
-
"webmozart/assert": "^1.0"
|
| 368 |
-
},
|
| 369 |
-
"require-dev": {
|
| 370 |
-
"doctrine/instantiator": "^1.0.5",
|
| 371 |
-
"mockery/mockery": "^1.0",
|
| 372 |
-
"phpdocumentor/type-resolver": "0.4.*",
|
| 373 |
-
"phpunit/phpunit": "^6.4"
|
| 374 |
-
},
|
| 375 |
-
"type": "library",
|
| 376 |
-
"extra": {
|
| 377 |
-
"branch-alias": {
|
| 378 |
-
"dev-master": "4.x-dev"
|
| 379 |
-
}
|
| 380 |
-
},
|
| 381 |
-
"autoload": {
|
| 382 |
-
"psr-4": {
|
| 383 |
-
"phpDocumentor\\Reflection\\": [
|
| 384 |
-
"src/"
|
| 385 |
-
]
|
| 386 |
-
}
|
| 387 |
-
},
|
| 388 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 389 |
-
"license": [
|
| 390 |
-
"MIT"
|
| 391 |
-
],
|
| 392 |
-
"authors": [
|
| 393 |
-
{
|
| 394 |
-
"name": "Mike van Riel",
|
| 395 |
-
"email": "me@mikevanriel.com"
|
| 396 |
-
}
|
| 397 |
-
],
|
| 398 |
-
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
|
| 399 |
-
"time": "2019-12-28T18:55:12+00:00"
|
| 400 |
-
},
|
| 401 |
-
{
|
| 402 |
-
"name": "phpdocumentor/type-resolver",
|
| 403 |
-
"version": "1.0.1",
|
| 404 |
-
"source": {
|
| 405 |
-
"type": "git",
|
| 406 |
-
"url": "https://github.com/phpDocumentor/TypeResolver.git",
|
| 407 |
-
"reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9"
|
| 408 |
-
},
|
| 409 |
-
"dist": {
|
| 410 |
-
"type": "zip",
|
| 411 |
-
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
|
| 412 |
-
"reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
|
| 413 |
-
"shasum": ""
|
| 414 |
-
},
|
| 415 |
-
"require": {
|
| 416 |
-
"php": "^7.1",
|
| 417 |
-
"phpdocumentor/reflection-common": "^2.0"
|
| 418 |
-
},
|
| 419 |
-
"require-dev": {
|
| 420 |
-
"ext-tokenizer": "^7.1",
|
| 421 |
-
"mockery/mockery": "~1",
|
| 422 |
-
"phpunit/phpunit": "^7.0"
|
| 423 |
-
},
|
| 424 |
-
"type": "library",
|
| 425 |
-
"extra": {
|
| 426 |
-
"branch-alias": {
|
| 427 |
-
"dev-master": "1.x-dev"
|
| 428 |
-
}
|
| 429 |
-
},
|
| 430 |
-
"autoload": {
|
| 431 |
-
"psr-4": {
|
| 432 |
-
"phpDocumentor\\Reflection\\": "src"
|
| 433 |
-
}
|
| 434 |
-
},
|
| 435 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 436 |
-
"license": [
|
| 437 |
-
"MIT"
|
| 438 |
-
],
|
| 439 |
-
"authors": [
|
| 440 |
-
{
|
| 441 |
-
"name": "Mike van Riel",
|
| 442 |
-
"email": "me@mikevanriel.com"
|
| 443 |
-
}
|
| 444 |
-
],
|
| 445 |
-
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
|
| 446 |
-
"time": "2019-08-22T18:11:29+00:00"
|
| 447 |
-
},
|
| 448 |
-
{
|
| 449 |
-
"name": "phpspec/prophecy",
|
| 450 |
-
"version": "v1.10.3",
|
| 451 |
-
"source": {
|
| 452 |
-
"type": "git",
|
| 453 |
-
"url": "https://github.com/phpspec/prophecy.git",
|
| 454 |
-
"reference": "451c3cd1418cf640de218914901e51b064abb093"
|
| 455 |
-
},
|
| 456 |
-
"dist": {
|
| 457 |
-
"type": "zip",
|
| 458 |
-
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
|
| 459 |
-
"reference": "451c3cd1418cf640de218914901e51b064abb093",
|
| 460 |
-
"shasum": ""
|
| 461 |
-
},
|
| 462 |
-
"require": {
|
| 463 |
-
"doctrine/instantiator": "^1.0.2",
|
| 464 |
-
"php": "^5.3|^7.0",
|
| 465 |
-
"phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
|
| 466 |
-
"sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
|
| 467 |
-
"sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
|
| 468 |
-
},
|
| 469 |
-
"require-dev": {
|
| 470 |
-
"phpspec/phpspec": "^2.5 || ^3.2",
|
| 471 |
-
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
|
| 472 |
-
},
|
| 473 |
-
"type": "library",
|
| 474 |
-
"extra": {
|
| 475 |
-
"branch-alias": {
|
| 476 |
-
"dev-master": "1.10.x-dev"
|
| 477 |
-
}
|
| 478 |
-
},
|
| 479 |
-
"autoload": {
|
| 480 |
-
"psr-4": {
|
| 481 |
-
"Prophecy\\": "src/Prophecy"
|
| 482 |
-
}
|
| 483 |
-
},
|
| 484 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 485 |
-
"license": [
|
| 486 |
-
"MIT"
|
| 487 |
-
],
|
| 488 |
-
"authors": [
|
| 489 |
-
{
|
| 490 |
-
"name": "Konstantin Kudryashov",
|
| 491 |
-
"email": "ever.zet@gmail.com",
|
| 492 |
-
"homepage": "http://everzet.com"
|
| 493 |
-
},
|
| 494 |
-
{
|
| 495 |
-
"name": "Marcello Duarte",
|
| 496 |
-
"email": "marcello.duarte@gmail.com"
|
| 497 |
-
}
|
| 498 |
-
],
|
| 499 |
-
"description": "Highly opinionated mocking framework for PHP 5.3+",
|
| 500 |
-
"homepage": "https://github.com/phpspec/prophecy",
|
| 501 |
-
"keywords": [
|
| 502 |
-
"Double",
|
| 503 |
-
"Dummy",
|
| 504 |
-
"fake",
|
| 505 |
-
"mock",
|
| 506 |
-
"spy",
|
| 507 |
-
"stub"
|
| 508 |
-
],
|
| 509 |
-
"time": "2020-03-05T15:02:03+00:00"
|
| 510 |
-
},
|
| 511 |
-
{
|
| 512 |
-
"name": "phpunit/php-code-coverage",
|
| 513 |
-
"version": "6.1.4",
|
| 514 |
-
"source": {
|
| 515 |
-
"type": "git",
|
| 516 |
-
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
| 517 |
-
"reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d"
|
| 518 |
-
},
|
| 519 |
-
"dist": {
|
| 520 |
-
"type": "zip",
|
| 521 |
-
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d",
|
| 522 |
-
"reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d",
|
| 523 |
-
"shasum": ""
|
| 524 |
-
},
|
| 525 |
-
"require": {
|
| 526 |
-
"ext-dom": "*",
|
| 527 |
-
"ext-xmlwriter": "*",
|
| 528 |
-
"php": "^7.1",
|
| 529 |
-
"phpunit/php-file-iterator": "^2.0",
|
| 530 |
-
"phpunit/php-text-template": "^1.2.1",
|
| 531 |
-
"phpunit/php-token-stream": "^3.0",
|
| 532 |
-
"sebastian/code-unit-reverse-lookup": "^1.0.1",
|
| 533 |
-
"sebastian/environment": "^3.1 || ^4.0",
|
| 534 |
-
"sebastian/version": "^2.0.1",
|
| 535 |
-
"theseer/tokenizer": "^1.1"
|
| 536 |
-
},
|
| 537 |
-
"require-dev": {
|
| 538 |
-
"phpunit/phpunit": "^7.0"
|
| 539 |
-
},
|
| 540 |
-
"suggest": {
|
| 541 |
-
"ext-xdebug": "^2.6.0"
|
| 542 |
-
},
|
| 543 |
-
"type": "library",
|
| 544 |
-
"extra": {
|
| 545 |
-
"branch-alias": {
|
| 546 |
-
"dev-master": "6.1-dev"
|
| 547 |
-
}
|
| 548 |
-
},
|
| 549 |
-
"autoload": {
|
| 550 |
-
"classmap": [
|
| 551 |
-
"src/"
|
| 552 |
-
]
|
| 553 |
-
},
|
| 554 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 555 |
-
"license": [
|
| 556 |
-
"BSD-3-Clause"
|
| 557 |
-
],
|
| 558 |
-
"authors": [
|
| 559 |
-
{
|
| 560 |
-
"name": "Sebastian Bergmann",
|
| 561 |
-
"email": "sebastian@phpunit.de",
|
| 562 |
-
"role": "lead"
|
| 563 |
-
}
|
| 564 |
-
],
|
| 565 |
-
"description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
|
| 566 |
-
"homepage": "https://github.com/sebastianbergmann/php-code-coverage",
|
| 567 |
-
"keywords": [
|
| 568 |
-
"coverage",
|
| 569 |
-
"testing",
|
| 570 |
-
"xunit"
|
| 571 |
-
],
|
| 572 |
-
"time": "2018-10-31T16:06:48+00:00"
|
| 573 |
-
},
|
| 574 |
-
{
|
| 575 |
-
"name": "phpunit/php-file-iterator",
|
| 576 |
-
"version": "2.0.2",
|
| 577 |
-
"source": {
|
| 578 |
-
"type": "git",
|
| 579 |
-
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
|
| 580 |
-
"reference": "050bedf145a257b1ff02746c31894800e5122946"
|
| 581 |
-
},
|
| 582 |
-
"dist": {
|
| 583 |
-
"type": "zip",
|
| 584 |
-
"url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946",
|
| 585 |
-
"reference": "050bedf145a257b1ff02746c31894800e5122946",
|
| 586 |
-
"shasum": ""
|
| 587 |
-
},
|
| 588 |
-
"require": {
|
| 589 |
-
"php": "^7.1"
|
| 590 |
-
},
|
| 591 |
-
"require-dev": {
|
| 592 |
-
"phpunit/phpunit": "^7.1"
|
| 593 |
-
},
|
| 594 |
-
"type": "library",
|
| 595 |
-
"extra": {
|
| 596 |
-
"branch-alias": {
|
| 597 |
-
"dev-master": "2.0.x-dev"
|
| 598 |
-
}
|
| 599 |
-
},
|
| 600 |
-
"autoload": {
|
| 601 |
-
"classmap": [
|
| 602 |
-
"src/"
|
| 603 |
-
]
|
| 604 |
-
},
|
| 605 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 606 |
-
"license": [
|
| 607 |
-
"BSD-3-Clause"
|
| 608 |
-
],
|
| 609 |
-
"authors": [
|
| 610 |
-
{
|
| 611 |
-
"name": "Sebastian Bergmann",
|
| 612 |
-
"email": "sebastian@phpunit.de",
|
| 613 |
-
"role": "lead"
|
| 614 |
-
}
|
| 615 |
-
],
|
| 616 |
-
"description": "FilterIterator implementation that filters files based on a list of suffixes.",
|
| 617 |
-
"homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
|
| 618 |
-
"keywords": [
|
| 619 |
-
"filesystem",
|
| 620 |
-
"iterator"
|
| 621 |
-
],
|
| 622 |
-
"time": "2018-09-13T20:33:42+00:00"
|
| 623 |
-
},
|
| 624 |
-
{
|
| 625 |
-
"name": "phpunit/php-text-template",
|
| 626 |
-
"version": "1.2.1",
|
| 627 |
-
"source": {
|
| 628 |
-
"type": "git",
|
| 629 |
-
"url": "https://github.com/sebastianbergmann/php-text-template.git",
|
| 630 |
-
"reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
|
| 631 |
-
},
|
| 632 |
-
"dist": {
|
| 633 |
-
"type": "zip",
|
| 634 |
-
"url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
|
| 635 |
-
"reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
|
| 636 |
-
"shasum": ""
|
| 637 |
-
},
|
| 638 |
-
"require": {
|
| 639 |
-
"php": ">=5.3.3"
|
| 640 |
-
},
|
| 641 |
-
"type": "library",
|
| 642 |
-
"autoload": {
|
| 643 |
-
"classmap": [
|
| 644 |
-
"src/"
|
| 645 |
-
]
|
| 646 |
-
},
|
| 647 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 648 |
-
"license": [
|
| 649 |
-
"BSD-3-Clause"
|
| 650 |
-
],
|
| 651 |
-
"authors": [
|
| 652 |
-
{
|
| 653 |
-
"name": "Sebastian Bergmann",
|
| 654 |
-
"email": "sebastian@phpunit.de",
|
| 655 |
-
"role": "lead"
|
| 656 |
-
}
|
| 657 |
-
],
|
| 658 |
-
"description": "Simple template engine.",
|
| 659 |
-
"homepage": "https://github.com/sebastianbergmann/php-text-template/",
|
| 660 |
-
"keywords": [
|
| 661 |
-
"template"
|
| 662 |
-
],
|
| 663 |
-
"time": "2015-06-21T13:50:34+00:00"
|
| 664 |
-
},
|
| 665 |
-
{
|
| 666 |
-
"name": "phpunit/php-timer",
|
| 667 |
-
"version": "2.1.2",
|
| 668 |
-
"source": {
|
| 669 |
-
"type": "git",
|
| 670 |
-
"url": "https://github.com/sebastianbergmann/php-timer.git",
|
| 671 |
-
"reference": "1038454804406b0b5f5f520358e78c1c2f71501e"
|
| 672 |
-
},
|
| 673 |
-
"dist": {
|
| 674 |
-
"type": "zip",
|
| 675 |
-
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e",
|
| 676 |
-
"reference": "1038454804406b0b5f5f520358e78c1c2f71501e",
|
| 677 |
-
"shasum": ""
|
| 678 |
-
},
|
| 679 |
-
"require": {
|
| 680 |
-
"php": "^7.1"
|
| 681 |
-
},
|
| 682 |
-
"require-dev": {
|
| 683 |
-
"phpunit/phpunit": "^7.0"
|
| 684 |
-
},
|
| 685 |
-
"type": "library",
|
| 686 |
-
"extra": {
|
| 687 |
-
"branch-alias": {
|
| 688 |
-
"dev-master": "2.1-dev"
|
| 689 |
-
}
|
| 690 |
-
},
|
| 691 |
-
"autoload": {
|
| 692 |
-
"classmap": [
|
| 693 |
-
"src/"
|
| 694 |
-
]
|
| 695 |
-
},
|
| 696 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 697 |
-
"license": [
|
| 698 |
-
"BSD-3-Clause"
|
| 699 |
-
],
|
| 700 |
-
"authors": [
|
| 701 |
-
{
|
| 702 |
-
"name": "Sebastian Bergmann",
|
| 703 |
-
"email": "sebastian@phpunit.de",
|
| 704 |
-
"role": "lead"
|
| 705 |
-
}
|
| 706 |
-
],
|
| 707 |
-
"description": "Utility class for timing",
|
| 708 |
-
"homepage": "https://github.com/sebastianbergmann/php-timer/",
|
| 709 |
-
"keywords": [
|
| 710 |
-
"timer"
|
| 711 |
-
],
|
| 712 |
-
"time": "2019-06-07T04:22:29+00:00"
|
| 713 |
-
},
|
| 714 |
-
{
|
| 715 |
-
"name": "phpunit/php-token-stream",
|
| 716 |
-
"version": "3.1.1",
|
| 717 |
-
"source": {
|
| 718 |
-
"type": "git",
|
| 719 |
-
"url": "https://github.com/sebastianbergmann/php-token-stream.git",
|
| 720 |
-
"reference": "995192df77f63a59e47f025390d2d1fdf8f425ff"
|
| 721 |
-
},
|
| 722 |
-
"dist": {
|
| 723 |
-
"type": "zip",
|
| 724 |
-
"url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff",
|
| 725 |
-
"reference": "995192df77f63a59e47f025390d2d1fdf8f425ff",
|
| 726 |
-
"shasum": ""
|
| 727 |
-
},
|
| 728 |
-
"require": {
|
| 729 |
-
"ext-tokenizer": "*",
|
| 730 |
-
"php": "^7.1"
|
| 731 |
-
},
|
| 732 |
-
"require-dev": {
|
| 733 |
-
"phpunit/phpunit": "^7.0"
|
| 734 |
-
},
|
| 735 |
-
"type": "library",
|
| 736 |
-
"extra": {
|
| 737 |
-
"branch-alias": {
|
| 738 |
-
"dev-master": "3.1-dev"
|
| 739 |
-
}
|
| 740 |
-
},
|
| 741 |
-
"autoload": {
|
| 742 |
-
"classmap": [
|
| 743 |
-
"src/"
|
| 744 |
-
]
|
| 745 |
-
},
|
| 746 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 747 |
-
"license": [
|
| 748 |
-
"BSD-3-Clause"
|
| 749 |
-
],
|
| 750 |
-
"authors": [
|
| 751 |
-
{
|
| 752 |
-
"name": "Sebastian Bergmann",
|
| 753 |
-
"email": "sebastian@phpunit.de"
|
| 754 |
-
}
|
| 755 |
-
],
|
| 756 |
-
"description": "Wrapper around PHP's tokenizer extension.",
|
| 757 |
-
"homepage": "https://github.com/sebastianbergmann/php-token-stream/",
|
| 758 |
-
"keywords": [
|
| 759 |
-
"tokenizer"
|
| 760 |
-
],
|
| 761 |
-
"time": "2019-09-17T06:23:10+00:00"
|
| 762 |
-
},
|
| 763 |
-
{
|
| 764 |
-
"name": "phpunit/phpunit",
|
| 765 |
-
"version": "7.5.20",
|
| 766 |
-
"source": {
|
| 767 |
-
"type": "git",
|
| 768 |
-
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
| 769 |
-
"reference": "9467db479d1b0487c99733bb1e7944d32deded2c"
|
| 770 |
-
},
|
| 771 |
-
"dist": {
|
| 772 |
-
"type": "zip",
|
| 773 |
-
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9467db479d1b0487c99733bb1e7944d32deded2c",
|
| 774 |
-
"reference": "9467db479d1b0487c99733bb1e7944d32deded2c",
|
| 775 |
-
"shasum": ""
|
| 776 |
-
},
|
| 777 |
-
"require": {
|
| 778 |
-
"doctrine/instantiator": "^1.1",
|
| 779 |
-
"ext-dom": "*",
|
| 780 |
-
"ext-json": "*",
|
| 781 |
-
"ext-libxml": "*",
|
| 782 |
-
"ext-mbstring": "*",
|
| 783 |
-
"ext-xml": "*",
|
| 784 |
-
"myclabs/deep-copy": "^1.7",
|
| 785 |
-
"phar-io/manifest": "^1.0.2",
|
| 786 |
-
"phar-io/version": "^2.0",
|
| 787 |
-
"php": "^7.1",
|
| 788 |
-
"phpspec/prophecy": "^1.7",
|
| 789 |
-
"phpunit/php-code-coverage": "^6.0.7",
|
| 790 |
-
"phpunit/php-file-iterator": "^2.0.1",
|
| 791 |
-
"phpunit/php-text-template": "^1.2.1",
|
| 792 |
-
"phpunit/php-timer": "^2.1",
|
| 793 |
-
"sebastian/comparator": "^3.0",
|
| 794 |
-
"sebastian/diff": "^3.0",
|
| 795 |
-
"sebastian/environment": "^4.0",
|
| 796 |
-
"sebastian/exporter": "^3.1",
|
| 797 |
-
"sebastian/global-state": "^2.0",
|
| 798 |
-
"sebastian/object-enumerator": "^3.0.3",
|
| 799 |
-
"sebastian/resource-operations": "^2.0",
|
| 800 |
-
"sebastian/version": "^2.0.1"
|
| 801 |
-
},
|
| 802 |
-
"conflict": {
|
| 803 |
-
"phpunit/phpunit-mock-objects": "*"
|
| 804 |
-
},
|
| 805 |
-
"require-dev": {
|
| 806 |
-
"ext-pdo": "*"
|
| 807 |
-
},
|
| 808 |
-
"suggest": {
|
| 809 |
-
"ext-soap": "*",
|
| 810 |
-
"ext-xdebug": "*",
|
| 811 |
-
"phpunit/php-invoker": "^2.0"
|
| 812 |
-
},
|
| 813 |
-
"bin": [
|
| 814 |
-
"phpunit"
|
| 815 |
-
],
|
| 816 |
-
"type": "library",
|
| 817 |
-
"extra": {
|
| 818 |
-
"branch-alias": {
|
| 819 |
-
"dev-master": "7.5-dev"
|
| 820 |
-
}
|
| 821 |
-
},
|
| 822 |
-
"autoload": {
|
| 823 |
-
"classmap": [
|
| 824 |
-
"src/"
|
| 825 |
-
]
|
| 826 |
-
},
|
| 827 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 828 |
-
"license": [
|
| 829 |
-
"BSD-3-Clause"
|
| 830 |
-
],
|
| 831 |
-
"authors": [
|
| 832 |
-
{
|
| 833 |
-
"name": "Sebastian Bergmann",
|
| 834 |
-
"email": "sebastian@phpunit.de",
|
| 835 |
-
"role": "lead"
|
| 836 |
-
}
|
| 837 |
-
],
|
| 838 |
-
"description": "The PHP Unit Testing framework.",
|
| 839 |
-
"homepage": "https://phpunit.de/",
|
| 840 |
-
"keywords": [
|
| 841 |
-
"phpunit",
|
| 842 |
-
"testing",
|
| 843 |
-
"xunit"
|
| 844 |
-
],
|
| 845 |
-
"time": "2020-01-08T08:45:45+00:00"
|
| 846 |
-
},
|
| 847 |
-
{
|
| 848 |
-
"name": "sebastian/code-unit-reverse-lookup",
|
| 849 |
-
"version": "1.0.1",
|
| 850 |
-
"source": {
|
| 851 |
-
"type": "git",
|
| 852 |
-
"url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
|
| 853 |
-
"reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
|
| 854 |
-
},
|
| 855 |
-
"dist": {
|
| 856 |
-
"type": "zip",
|
| 857 |
-
"url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
|
| 858 |
-
"reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
|
| 859 |
-
"shasum": ""
|
| 860 |
-
},
|
| 861 |
-
"require": {
|
| 862 |
-
"php": "^5.6 || ^7.0"
|
| 863 |
-
},
|
| 864 |
-
"require-dev": {
|
| 865 |
-
"phpunit/phpunit": "^5.7 || ^6.0"
|
| 866 |
-
},
|
| 867 |
-
"type": "library",
|
| 868 |
-
"extra": {
|
| 869 |
-
"branch-alias": {
|
| 870 |
-
"dev-master": "1.0.x-dev"
|
| 871 |
-
}
|
| 872 |
-
},
|
| 873 |
-
"autoload": {
|
| 874 |
-
"classmap": [
|
| 875 |
-
"src/"
|
| 876 |
-
]
|
| 877 |
-
},
|
| 878 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 879 |
-
"license": [
|
| 880 |
-
"BSD-3-Clause"
|
| 881 |
-
],
|
| 882 |
-
"authors": [
|
| 883 |
-
{
|
| 884 |
-
"name": "Sebastian Bergmann",
|
| 885 |
-
"email": "sebastian@phpunit.de"
|
| 886 |
-
}
|
| 887 |
-
],
|
| 888 |
-
"description": "Looks up which function or method a line of code belongs to",
|
| 889 |
-
"homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
|
| 890 |
-
"time": "2017-03-04T06:30:41+00:00"
|
| 891 |
-
},
|
| 892 |
-
{
|
| 893 |
-
"name": "sebastian/comparator",
|
| 894 |
-
"version": "3.0.2",
|
| 895 |
-
"source": {
|
| 896 |
-
"type": "git",
|
| 897 |
-
"url": "https://github.com/sebastianbergmann/comparator.git",
|
| 898 |
-
"reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da"
|
| 899 |
-
},
|
| 900 |
-
"dist": {
|
| 901 |
-
"type": "zip",
|
| 902 |
-
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da",
|
| 903 |
-
"reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da",
|
| 904 |
-
"shasum": ""
|
| 905 |
-
},
|
| 906 |
-
"require": {
|
| 907 |
-
"php": "^7.1",
|
| 908 |
-
"sebastian/diff": "^3.0",
|
| 909 |
-
"sebastian/exporter": "^3.1"
|
| 910 |
-
},
|
| 911 |
-
"require-dev": {
|
| 912 |
-
"phpunit/phpunit": "^7.1"
|
| 913 |
-
},
|
| 914 |
-
"type": "library",
|
| 915 |
-
"extra": {
|
| 916 |
-
"branch-alias": {
|
| 917 |
-
"dev-master": "3.0-dev"
|
| 918 |
-
}
|
| 919 |
-
},
|
| 920 |
-
"autoload": {
|
| 921 |
-
"classmap": [
|
| 922 |
-
"src/"
|
| 923 |
-
]
|
| 924 |
-
},
|
| 925 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 926 |
-
"license": [
|
| 927 |
-
"BSD-3-Clause"
|
| 928 |
-
],
|
| 929 |
-
"authors": [
|
| 930 |
-
{
|
| 931 |
-
"name": "Jeff Welch",
|
| 932 |
-
"email": "whatthejeff@gmail.com"
|
| 933 |
-
},
|
| 934 |
-
{
|
| 935 |
-
"name": "Volker Dusch",
|
| 936 |
-
"email": "github@wallbash.com"
|
| 937 |
-
},
|
| 938 |
-
{
|
| 939 |
-
"name": "Bernhard Schussek",
|
| 940 |
-
"email": "bschussek@2bepublished.at"
|
| 941 |
-
},
|
| 942 |
-
{
|
| 943 |
-
"name": "Sebastian Bergmann",
|
| 944 |
-
"email": "sebastian@phpunit.de"
|
| 945 |
-
}
|
| 946 |
-
],
|
| 947 |
-
"description": "Provides the functionality to compare PHP values for equality",
|
| 948 |
-
"homepage": "https://github.com/sebastianbergmann/comparator",
|
| 949 |
-
"keywords": [
|
| 950 |
-
"comparator",
|
| 951 |
-
"compare",
|
| 952 |
-
"equality"
|
| 953 |
-
],
|
| 954 |
-
"time": "2018-07-12T15:12:46+00:00"
|
| 955 |
-
},
|
| 956 |
-
{
|
| 957 |
-
"name": "sebastian/diff",
|
| 958 |
-
"version": "3.0.2",
|
| 959 |
-
"source": {
|
| 960 |
-
"type": "git",
|
| 961 |
-
"url": "https://github.com/sebastianbergmann/diff.git",
|
| 962 |
-
"reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29"
|
| 963 |
-
},
|
| 964 |
-
"dist": {
|
| 965 |
-
"type": "zip",
|
| 966 |
-
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29",
|
| 967 |
-
"reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29",
|
| 968 |
-
"shasum": ""
|
| 969 |
-
},
|
| 970 |
-
"require": {
|
| 971 |
-
"php": "^7.1"
|
| 972 |
-
},
|
| 973 |
-
"require-dev": {
|
| 974 |
-
"phpunit/phpunit": "^7.5 || ^8.0",
|
| 975 |
-
"symfony/process": "^2 || ^3.3 || ^4"
|
| 976 |
-
},
|
| 977 |
-
"type": "library",
|
| 978 |
-
"extra": {
|
| 979 |
-
"branch-alias": {
|
| 980 |
-
"dev-master": "3.0-dev"
|
| 981 |
-
}
|
| 982 |
-
},
|
| 983 |
-
"autoload": {
|
| 984 |
-
"classmap": [
|
| 985 |
-
"src/"
|
| 986 |
-
]
|
| 987 |
-
},
|
| 988 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 989 |
-
"license": [
|
| 990 |
-
"BSD-3-Clause"
|
| 991 |
-
],
|
| 992 |
-
"authors": [
|
| 993 |
-
{
|
| 994 |
-
"name": "Kore Nordmann",
|
| 995 |
-
"email": "mail@kore-nordmann.de"
|
| 996 |
-
},
|
| 997 |
-
{
|
| 998 |
-
"name": "Sebastian Bergmann",
|
| 999 |
-
"email": "sebastian@phpunit.de"
|
| 1000 |
-
}
|
| 1001 |
-
],
|
| 1002 |
-
"description": "Diff implementation",
|
| 1003 |
-
"homepage": "https://github.com/sebastianbergmann/diff",
|
| 1004 |
-
"keywords": [
|
| 1005 |
-
"diff",
|
| 1006 |
-
"udiff",
|
| 1007 |
-
"unidiff",
|
| 1008 |
-
"unified diff"
|
| 1009 |
-
],
|
| 1010 |
-
"time": "2019-02-04T06:01:07+00:00"
|
| 1011 |
-
},
|
| 1012 |
-
{
|
| 1013 |
-
"name": "sebastian/environment",
|
| 1014 |
-
"version": "4.2.3",
|
| 1015 |
-
"source": {
|
| 1016 |
-
"type": "git",
|
| 1017 |
-
"url": "https://github.com/sebastianbergmann/environment.git",
|
| 1018 |
-
"reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368"
|
| 1019 |
-
},
|
| 1020 |
-
"dist": {
|
| 1021 |
-
"type": "zip",
|
| 1022 |
-
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368",
|
| 1023 |
-
"reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368",
|
| 1024 |
-
"shasum": ""
|
| 1025 |
-
},
|
| 1026 |
-
"require": {
|
| 1027 |
-
"php": "^7.1"
|
| 1028 |
-
},
|
| 1029 |
-
"require-dev": {
|
| 1030 |
-
"phpunit/phpunit": "^7.5"
|
| 1031 |
-
},
|
| 1032 |
-
"suggest": {
|
| 1033 |
-
"ext-posix": "*"
|
| 1034 |
-
},
|
| 1035 |
-
"type": "library",
|
| 1036 |
-
"extra": {
|
| 1037 |
-
"branch-alias": {
|
| 1038 |
-
"dev-master": "4.2-dev"
|
| 1039 |
-
}
|
| 1040 |
-
},
|
| 1041 |
-
"autoload": {
|
| 1042 |
-
"classmap": [
|
| 1043 |
-
"src/"
|
| 1044 |
-
]
|
| 1045 |
-
},
|
| 1046 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 1047 |
-
"license": [
|
| 1048 |
-
"BSD-3-Clause"
|
| 1049 |
-
],
|
| 1050 |
-
"authors": [
|
| 1051 |
-
{
|
| 1052 |
-
"name": "Sebastian Bergmann",
|
| 1053 |
-
"email": "sebastian@phpunit.de"
|
| 1054 |
-
}
|
| 1055 |
-
],
|
| 1056 |
-
"description": "Provides functionality to handle HHVM/PHP environments",
|
| 1057 |
-
"homepage": "http://www.github.com/sebastianbergmann/environment",
|
| 1058 |
-
"keywords": [
|
| 1059 |
-
"Xdebug",
|
| 1060 |
-
"environment",
|
| 1061 |
-
"hhvm"
|
| 1062 |
-
],
|
| 1063 |
-
"time": "2019-11-20T08:46:58+00:00"
|
| 1064 |
-
},
|
| 1065 |
-
{
|
| 1066 |
-
"name": "sebastian/exporter",
|
| 1067 |
-
"version": "3.1.2",
|
| 1068 |
-
"source": {
|
| 1069 |
-
"type": "git",
|
| 1070 |
-
"url": "https://github.com/sebastianbergmann/exporter.git",
|
| 1071 |
-
"reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e"
|
| 1072 |
-
},
|
| 1073 |
-
"dist": {
|
| 1074 |
-
"type": "zip",
|
| 1075 |
-
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e",
|
| 1076 |
-
"reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e",
|
| 1077 |
-
"shasum": ""
|
| 1078 |
-
},
|
| 1079 |
-
"require": {
|
| 1080 |
-
"php": "^7.0",
|
| 1081 |
-
"sebastian/recursion-context": "^3.0"
|
| 1082 |
-
},
|
| 1083 |
-
"require-dev": {
|
| 1084 |
-
"ext-mbstring": "*",
|
| 1085 |
-
"phpunit/phpunit": "^6.0"
|
| 1086 |
-
},
|
| 1087 |
-
"type": "library",
|
| 1088 |
-
"extra": {
|
| 1089 |
-
"branch-alias": {
|
| 1090 |
-
"dev-master": "3.1.x-dev"
|
| 1091 |
-
}
|
| 1092 |
-
},
|
| 1093 |
-
"autoload": {
|
| 1094 |
-
"classmap": [
|
| 1095 |
-
"src/"
|
| 1096 |
-
]
|
| 1097 |
-
},
|
| 1098 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 1099 |
-
"license": [
|
| 1100 |
-
"BSD-3-Clause"
|
| 1101 |
-
],
|
| 1102 |
-
"authors": [
|
| 1103 |
-
{
|
| 1104 |
-
"name": "Sebastian Bergmann",
|
| 1105 |
-
"email": "sebastian@phpunit.de"
|
| 1106 |
-
},
|
| 1107 |
-
{
|
| 1108 |
-
"name": "Jeff Welch",
|
| 1109 |
-
"email": "whatthejeff@gmail.com"
|
| 1110 |
-
},
|
| 1111 |
-
{
|
| 1112 |
-
"name": "Volker Dusch",
|
| 1113 |
-
"email": "github@wallbash.com"
|
| 1114 |
-
},
|
| 1115 |
-
{
|
| 1116 |
-
"name": "Adam Harvey",
|
| 1117 |
-
"email": "aharvey@php.net"
|
| 1118 |
-
},
|
| 1119 |
-
{
|
| 1120 |
-
"name": "Bernhard Schussek",
|
| 1121 |
-
"email": "bschussek@gmail.com"
|
| 1122 |
-
}
|
| 1123 |
-
],
|
| 1124 |
-
"description": "Provides the functionality to export PHP variables for visualization",
|
| 1125 |
-
"homepage": "http://www.github.com/sebastianbergmann/exporter",
|
| 1126 |
-
"keywords": [
|
| 1127 |
-
"export",
|
| 1128 |
-
"exporter"
|
| 1129 |
-
],
|
| 1130 |
-
"time": "2019-09-14T09:02:43+00:00"
|
| 1131 |
-
},
|
| 1132 |
-
{
|
| 1133 |
-
"name": "sebastian/global-state",
|
| 1134 |
-
"version": "2.0.0",
|
| 1135 |
-
"source": {
|
| 1136 |
-
"type": "git",
|
| 1137 |
-
"url": "https://github.com/sebastianbergmann/global-state.git",
|
| 1138 |
-
"reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4"
|
| 1139 |
-
},
|
| 1140 |
-
"dist": {
|
| 1141 |
-
"type": "zip",
|
| 1142 |
-
"url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
|
| 1143 |
-
"reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
|
| 1144 |
-
"shasum": ""
|
| 1145 |
-
},
|
| 1146 |
-
"require": {
|
| 1147 |
-
"php": "^7.0"
|
| 1148 |
-
},
|
| 1149 |
-
"require-dev": {
|
| 1150 |
-
"phpunit/phpunit": "^6.0"
|
| 1151 |
-
},
|
| 1152 |
-
"suggest": {
|
| 1153 |
-
"ext-uopz": "*"
|
| 1154 |
-
},
|
| 1155 |
-
"type": "library",
|
| 1156 |
-
"extra": {
|
| 1157 |
-
"branch-alias": {
|
| 1158 |
-
"dev-master": "2.0-dev"
|
| 1159 |
-
}
|
| 1160 |
-
},
|
| 1161 |
-
"autoload": {
|
| 1162 |
-
"classmap": [
|
| 1163 |
-
"src/"
|
| 1164 |
-
]
|
| 1165 |
-
},
|
| 1166 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 1167 |
-
"license": [
|
| 1168 |
-
"BSD-3-Clause"
|
| 1169 |
-
],
|
| 1170 |
-
"authors": [
|
| 1171 |
-
{
|
| 1172 |
-
"name": "Sebastian Bergmann",
|
| 1173 |
-
"email": "sebastian@phpunit.de"
|
| 1174 |
-
}
|
| 1175 |
-
],
|
| 1176 |
-
"description": "Snapshotting of global state",
|
| 1177 |
-
"homepage": "http://www.github.com/sebastianbergmann/global-state",
|
| 1178 |
-
"keywords": [
|
| 1179 |
-
"global state"
|
| 1180 |
-
],
|
| 1181 |
-
"time": "2017-04-27T15:39:26+00:00"
|
| 1182 |
-
},
|
| 1183 |
-
{
|
| 1184 |
-
"name": "sebastian/object-enumerator",
|
| 1185 |
-
"version": "3.0.3",
|
| 1186 |
-
"source": {
|
| 1187 |
-
"type": "git",
|
| 1188 |
-
"url": "https://github.com/sebastianbergmann/object-enumerator.git",
|
| 1189 |
-
"reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5"
|
| 1190 |
-
},
|
| 1191 |
-
"dist": {
|
| 1192 |
-
"type": "zip",
|
| 1193 |
-
"url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5",
|
| 1194 |
-
"reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5",
|
| 1195 |
-
"shasum": ""
|
| 1196 |
-
},
|
| 1197 |
-
"require": {
|
| 1198 |
-
"php": "^7.0",
|
| 1199 |
-
"sebastian/object-reflector": "^1.1.1",
|
| 1200 |
-
"sebastian/recursion-context": "^3.0"
|
| 1201 |
-
},
|
| 1202 |
-
"require-dev": {
|
| 1203 |
-
"phpunit/phpunit": "^6.0"
|
| 1204 |
-
},
|
| 1205 |
-
"type": "library",
|
| 1206 |
-
"extra": {
|
| 1207 |
-
"branch-alias": {
|
| 1208 |
-
"dev-master": "3.0.x-dev"
|
| 1209 |
-
}
|
| 1210 |
-
},
|
| 1211 |
-
"autoload": {
|
| 1212 |
-
"classmap": [
|
| 1213 |
-
"src/"
|
| 1214 |
-
]
|
| 1215 |
-
},
|
| 1216 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 1217 |
-
"license": [
|
| 1218 |
-
"BSD-3-Clause"
|
| 1219 |
-
],
|
| 1220 |
-
"authors": [
|
| 1221 |
-
{
|
| 1222 |
-
"name": "Sebastian Bergmann",
|
| 1223 |
-
"email": "sebastian@phpunit.de"
|
| 1224 |
-
}
|
| 1225 |
-
],
|
| 1226 |
-
"description": "Traverses array structures and object graphs to enumerate all referenced objects",
|
| 1227 |
-
"homepage": "https://github.com/sebastianbergmann/object-enumerator/",
|
| 1228 |
-
"time": "2017-08-03T12:35:26+00:00"
|
| 1229 |
-
},
|
| 1230 |
-
{
|
| 1231 |
-
"name": "sebastian/object-reflector",
|
| 1232 |
-
"version": "1.1.1",
|
| 1233 |
-
"source": {
|
| 1234 |
-
"type": "git",
|
| 1235 |
-
"url": "https://github.com/sebastianbergmann/object-reflector.git",
|
| 1236 |
-
"reference": "773f97c67f28de00d397be301821b06708fca0be"
|
| 1237 |
-
},
|
| 1238 |
-
"dist": {
|
| 1239 |
-
"type": "zip",
|
| 1240 |
-
"url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be",
|
| 1241 |
-
"reference": "773f97c67f28de00d397be301821b06708fca0be",
|
| 1242 |
-
"shasum": ""
|
| 1243 |
-
},
|
| 1244 |
-
"require": {
|
| 1245 |
-
"php": "^7.0"
|
| 1246 |
-
},
|
| 1247 |
-
"require-dev": {
|
| 1248 |
-
"phpunit/phpunit": "^6.0"
|
| 1249 |
-
},
|
| 1250 |
-
"type": "library",
|
| 1251 |
-
"extra": {
|
| 1252 |
-
"branch-alias": {
|
| 1253 |
-
"dev-master": "1.1-dev"
|
| 1254 |
-
}
|
| 1255 |
-
},
|
| 1256 |
-
"autoload": {
|
| 1257 |
-
"classmap": [
|
| 1258 |
-
"src/"
|
| 1259 |
-
]
|
| 1260 |
-
},
|
| 1261 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 1262 |
-
"license": [
|
| 1263 |
-
"BSD-3-Clause"
|
| 1264 |
-
],
|
| 1265 |
-
"authors": [
|
| 1266 |
-
{
|
| 1267 |
-
"name": "Sebastian Bergmann",
|
| 1268 |
-
"email": "sebastian@phpunit.de"
|
| 1269 |
-
}
|
| 1270 |
-
],
|
| 1271 |
-
"description": "Allows reflection of object attributes, including inherited and non-public ones",
|
| 1272 |
-
"homepage": "https://github.com/sebastianbergmann/object-reflector/",
|
| 1273 |
-
"time": "2017-03-29T09:07:27+00:00"
|
| 1274 |
-
},
|
| 1275 |
-
{
|
| 1276 |
-
"name": "sebastian/recursion-context",
|
| 1277 |
-
"version": "3.0.0",
|
| 1278 |
-
"source": {
|
| 1279 |
-
"type": "git",
|
| 1280 |
-
"url": "https://github.com/sebastianbergmann/recursion-context.git",
|
| 1281 |
-
"reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
|
| 1282 |
-
},
|
| 1283 |
-
"dist": {
|
| 1284 |
-
"type": "zip",
|
| 1285 |
-
"url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
|
| 1286 |
-
"reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
|
| 1287 |
-
"shasum": ""
|
| 1288 |
-
},
|
| 1289 |
-
"require": {
|
| 1290 |
-
"php": "^7.0"
|
| 1291 |
-
},
|
| 1292 |
-
"require-dev": {
|
| 1293 |
-
"phpunit/phpunit": "^6.0"
|
| 1294 |
-
},
|
| 1295 |
-
"type": "library",
|
| 1296 |
-
"extra": {
|
| 1297 |
-
"branch-alias": {
|
| 1298 |
-
"dev-master": "3.0.x-dev"
|
| 1299 |
-
}
|
| 1300 |
-
},
|
| 1301 |
-
"autoload": {
|
| 1302 |
-
"classmap": [
|
| 1303 |
-
"src/"
|
| 1304 |
-
]
|
| 1305 |
-
},
|
| 1306 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 1307 |
-
"license": [
|
| 1308 |
-
"BSD-3-Clause"
|
| 1309 |
-
],
|
| 1310 |
-
"authors": [
|
| 1311 |
-
{
|
| 1312 |
-
"name": "Jeff Welch",
|
| 1313 |
-
"email": "whatthejeff@gmail.com"
|
| 1314 |
-
},
|
| 1315 |
-
{
|
| 1316 |
-
"name": "Sebastian Bergmann",
|
| 1317 |
-
"email": "sebastian@phpunit.de"
|
| 1318 |
-
},
|
| 1319 |
-
{
|
| 1320 |
-
"name": "Adam Harvey",
|
| 1321 |
-
"email": "aharvey@php.net"
|
| 1322 |
-
}
|
| 1323 |
-
],
|
| 1324 |
-
"description": "Provides functionality to recursively process PHP variables",
|
| 1325 |
-
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
|
| 1326 |
-
"time": "2017-03-03T06:23:57+00:00"
|
| 1327 |
-
},
|
| 1328 |
-
{
|
| 1329 |
-
"name": "sebastian/resource-operations",
|
| 1330 |
-
"version": "2.0.1",
|
| 1331 |
-
"source": {
|
| 1332 |
-
"type": "git",
|
| 1333 |
-
"url": "https://github.com/sebastianbergmann/resource-operations.git",
|
| 1334 |
-
"reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9"
|
| 1335 |
-
},
|
| 1336 |
-
"dist": {
|
| 1337 |
-
"type": "zip",
|
| 1338 |
-
"url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9",
|
| 1339 |
-
"reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9",
|
| 1340 |
-
"shasum": ""
|
| 1341 |
-
},
|
| 1342 |
-
"require": {
|
| 1343 |
-
"php": "^7.1"
|
| 1344 |
-
},
|
| 1345 |
-
"type": "library",
|
| 1346 |
-
"extra": {
|
| 1347 |
-
"branch-alias": {
|
| 1348 |
-
"dev-master": "2.0-dev"
|
| 1349 |
-
}
|
| 1350 |
-
},
|
| 1351 |
-
"autoload": {
|
| 1352 |
-
"classmap": [
|
| 1353 |
-
"src/"
|
| 1354 |
-
]
|
| 1355 |
-
},
|
| 1356 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 1357 |
-
"license": [
|
| 1358 |
-
"BSD-3-Clause"
|
| 1359 |
-
],
|
| 1360 |
-
"authors": [
|
| 1361 |
-
{
|
| 1362 |
-
"name": "Sebastian Bergmann",
|
| 1363 |
-
"email": "sebastian@phpunit.de"
|
| 1364 |
-
}
|
| 1365 |
-
],
|
| 1366 |
-
"description": "Provides a list of PHP built-in functions that operate on resources",
|
| 1367 |
-
"homepage": "https://www.github.com/sebastianbergmann/resource-operations",
|
| 1368 |
-
"time": "2018-10-04T04:07:39+00:00"
|
| 1369 |
-
},
|
| 1370 |
-
{
|
| 1371 |
-
"name": "sebastian/version",
|
| 1372 |
-
"version": "2.0.1",
|
| 1373 |
-
"source": {
|
| 1374 |
-
"type": "git",
|
| 1375 |
-
"url": "https://github.com/sebastianbergmann/version.git",
|
| 1376 |
-
"reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
|
| 1377 |
-
},
|
| 1378 |
-
"dist": {
|
| 1379 |
-
"type": "zip",
|
| 1380 |
-
"url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
|
| 1381 |
-
"reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
|
| 1382 |
-
"shasum": ""
|
| 1383 |
-
},
|
| 1384 |
-
"require": {
|
| 1385 |
-
"php": ">=5.6"
|
| 1386 |
-
},
|
| 1387 |
-
"type": "library",
|
| 1388 |
-
"extra": {
|
| 1389 |
-
"branch-alias": {
|
| 1390 |
-
"dev-master": "2.0.x-dev"
|
| 1391 |
-
}
|
| 1392 |
-
},
|
| 1393 |
-
"autoload": {
|
| 1394 |
-
"classmap": [
|
| 1395 |
-
"src/"
|
| 1396 |
-
]
|
| 1397 |
-
},
|
| 1398 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 1399 |
-
"license": [
|
| 1400 |
-
"BSD-3-Clause"
|
| 1401 |
-
],
|
| 1402 |
-
"authors": [
|
| 1403 |
-
{
|
| 1404 |
-
"name": "Sebastian Bergmann",
|
| 1405 |
-
"email": "sebastian@phpunit.de",
|
| 1406 |
-
"role": "lead"
|
| 1407 |
-
}
|
| 1408 |
-
],
|
| 1409 |
-
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
|
| 1410 |
-
"homepage": "https://github.com/sebastianbergmann/version",
|
| 1411 |
-
"time": "2016-10-03T07:35:21+00:00"
|
| 1412 |
-
},
|
| 1413 |
-
{
|
| 1414 |
-
"name": "symfony/polyfill-ctype",
|
| 1415 |
-
"version": "v1.14.0",
|
| 1416 |
-
"source": {
|
| 1417 |
-
"type": "git",
|
| 1418 |
-
"url": "https://github.com/symfony/polyfill-ctype.git",
|
| 1419 |
-
"reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38"
|
| 1420 |
-
},
|
| 1421 |
-
"dist": {
|
| 1422 |
-
"type": "zip",
|
| 1423 |
-
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/fbdeaec0df06cf3d51c93de80c7eb76e271f5a38",
|
| 1424 |
-
"reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38",
|
| 1425 |
-
"shasum": ""
|
| 1426 |
-
},
|
| 1427 |
-
"require": {
|
| 1428 |
-
"php": ">=5.3.3"
|
| 1429 |
-
},
|
| 1430 |
-
"suggest": {
|
| 1431 |
-
"ext-ctype": "For best performance"
|
| 1432 |
-
},
|
| 1433 |
-
"type": "library",
|
| 1434 |
-
"extra": {
|
| 1435 |
-
"branch-alias": {
|
| 1436 |
-
"dev-master": "1.14-dev"
|
| 1437 |
-
}
|
| 1438 |
-
},
|
| 1439 |
-
"autoload": {
|
| 1440 |
-
"psr-4": {
|
| 1441 |
-
"Symfony\\Polyfill\\Ctype\\": ""
|
| 1442 |
-
},
|
| 1443 |
-
"files": [
|
| 1444 |
-
"bootstrap.php"
|
| 1445 |
-
]
|
| 1446 |
-
},
|
| 1447 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 1448 |
-
"license": [
|
| 1449 |
-
"MIT"
|
| 1450 |
-
],
|
| 1451 |
-
"authors": [
|
| 1452 |
-
{
|
| 1453 |
-
"name": "Gert de Pagter",
|
| 1454 |
-
"email": "BackEndTea@gmail.com"
|
| 1455 |
-
},
|
| 1456 |
-
{
|
| 1457 |
-
"name": "Symfony Community",
|
| 1458 |
-
"homepage": "https://symfony.com/contributors"
|
| 1459 |
-
}
|
| 1460 |
-
],
|
| 1461 |
-
"description": "Symfony polyfill for ctype functions",
|
| 1462 |
-
"homepage": "https://symfony.com",
|
| 1463 |
-
"keywords": [
|
| 1464 |
-
"compatibility",
|
| 1465 |
-
"ctype",
|
| 1466 |
-
"polyfill",
|
| 1467 |
-
"portable"
|
| 1468 |
-
],
|
| 1469 |
-
"time": "2020-01-13T11:15:53+00:00"
|
| 1470 |
-
},
|
| 1471 |
-
{
|
| 1472 |
-
"name": "theseer/tokenizer",
|
| 1473 |
-
"version": "1.1.3",
|
| 1474 |
-
"source": {
|
| 1475 |
-
"type": "git",
|
| 1476 |
-
"url": "https://github.com/theseer/tokenizer.git",
|
| 1477 |
-
"reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9"
|
| 1478 |
-
},
|
| 1479 |
-
"dist": {
|
| 1480 |
-
"type": "zip",
|
| 1481 |
-
"url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
|
| 1482 |
-
"reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9",
|
| 1483 |
-
"shasum": ""
|
| 1484 |
-
},
|
| 1485 |
-
"require": {
|
| 1486 |
-
"ext-dom": "*",
|
| 1487 |
-
"ext-tokenizer": "*",
|
| 1488 |
-
"ext-xmlwriter": "*",
|
| 1489 |
-
"php": "^7.0"
|
| 1490 |
-
},
|
| 1491 |
-
"type": "library",
|
| 1492 |
-
"autoload": {
|
| 1493 |
-
"classmap": [
|
| 1494 |
-
"src/"
|
| 1495 |
-
]
|
| 1496 |
-
},
|
| 1497 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 1498 |
-
"license": [
|
| 1499 |
-
"BSD-3-Clause"
|
| 1500 |
-
],
|
| 1501 |
-
"authors": [
|
| 1502 |
-
{
|
| 1503 |
-
"name": "Arne Blankerts",
|
| 1504 |
-
"email": "arne@blankerts.de",
|
| 1505 |
-
"role": "Developer"
|
| 1506 |
-
}
|
| 1507 |
-
],
|
| 1508 |
-
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
|
| 1509 |
-
"time": "2019-06-13T22:48:21+00:00"
|
| 1510 |
-
},
|
| 1511 |
-
{
|
| 1512 |
-
"name": "webmozart/assert",
|
| 1513 |
-
"version": "1.7.0",
|
| 1514 |
-
"source": {
|
| 1515 |
-
"type": "git",
|
| 1516 |
-
"url": "https://github.com/webmozart/assert.git",
|
| 1517 |
-
"reference": "aed98a490f9a8f78468232db345ab9cf606cf598"
|
| 1518 |
-
},
|
| 1519 |
-
"dist": {
|
| 1520 |
-
"type": "zip",
|
| 1521 |
-
"url": "https://api.github.com/repos/webmozart/assert/zipball/aed98a490f9a8f78468232db345ab9cf606cf598",
|
| 1522 |
-
"reference": "aed98a490f9a8f78468232db345ab9cf606cf598",
|
| 1523 |
-
"shasum": ""
|
| 1524 |
-
},
|
| 1525 |
-
"require": {
|
| 1526 |
-
"php": "^5.3.3 || ^7.0",
|
| 1527 |
-
"symfony/polyfill-ctype": "^1.8"
|
| 1528 |
-
},
|
| 1529 |
-
"conflict": {
|
| 1530 |
-
"vimeo/psalm": "<3.6.0"
|
| 1531 |
-
},
|
| 1532 |
-
"require-dev": {
|
| 1533 |
-
"phpunit/phpunit": "^4.8.36 || ^7.5.13"
|
| 1534 |
-
},
|
| 1535 |
-
"type": "library",
|
| 1536 |
-
"autoload": {
|
| 1537 |
-
"psr-4": {
|
| 1538 |
-
"Webmozart\\Assert\\": "src/"
|
| 1539 |
-
}
|
| 1540 |
-
},
|
| 1541 |
-
"notification-url": "https://packagist.org/downloads/",
|
| 1542 |
-
"license": [
|
| 1543 |
-
"MIT"
|
| 1544 |
-
],
|
| 1545 |
-
"authors": [
|
| 1546 |
-
{
|
| 1547 |
-
"name": "Bernhard Schussek",
|
| 1548 |
-
"email": "bschussek@gmail.com"
|
| 1549 |
-
}
|
| 1550 |
-
],
|
| 1551 |
-
"description": "Assertions to validate method input/output with nice error messages.",
|
| 1552 |
-
"keywords": [
|
| 1553 |
-
"assert",
|
| 1554 |
-
"check",
|
| 1555 |
-
"validate"
|
| 1556 |
-
],
|
| 1557 |
-
"time": "2020-02-14T12:15:55+00:00"
|
| 1558 |
-
}
|
| 1559 |
-
],
|
| 1560 |
-
"aliases": [],
|
| 1561 |
-
"minimum-stability": "dev",
|
| 1562 |
-
"stability-flags": [],
|
| 1563 |
-
"prefer-stable": true,
|
| 1564 |
-
"prefer-lowest": false,
|
| 1565 |
-
"platform": {
|
| 1566 |
-
"php": "^7.1"
|
| 1567 |
-
},
|
| 1568 |
-
"platform-dev": []
|
| 1569 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/dhii/module-interface/src/DependenciesAwareInterface.php
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
namespace Dhii\Modular\Module;
|
| 4 |
+
|
| 5 |
+
use Dhii\Util\String\StringableInterface as Stringable;
|
| 6 |
+
use stdClass;
|
| 7 |
+
use Traversable;
|
| 8 |
+
|
| 9 |
+
/**
|
| 10 |
+
* Something that is aware of, and can provide, a list of dependencies.
|
| 11 |
+
*
|
| 12 |
+
* @since [*next-version*]
|
| 13 |
+
*/
|
| 14 |
+
interface DependenciesAwareInterface
|
| 15 |
+
{
|
| 16 |
+
/**
|
| 17 |
+
* Retrieves the dependencies.
|
| 18 |
+
*
|
| 19 |
+
* @since [*next-version*]
|
| 20 |
+
*
|
| 21 |
+
* @return string[]|Stringable[]|stdClass|Traversable A list of dependencies.
|
| 22 |
+
*/
|
| 23 |
+
public function getDependencies();
|
| 24 |
+
}
|
vendor/dhii/module-interface/src/Exception/ModuleExceptionInterface.php
CHANGED
|
@@ -3,15 +3,15 @@
|
|
| 3 |
namespace Dhii\Modular\Module\Exception;
|
| 4 |
|
| 5 |
use Dhii\Modular\Module\ModuleAwareInterface;
|
| 6 |
-
use
|
| 7 |
|
| 8 |
/**
|
| 9 |
* Represents an exception that is thrown in relation to a module.
|
| 10 |
*
|
| 11 |
-
* @since
|
| 12 |
*/
|
| 13 |
interface ModuleExceptionInterface extends
|
| 14 |
-
|
| 15 |
ModuleAwareInterface
|
| 16 |
{
|
| 17 |
}
|
| 3 |
namespace Dhii\Modular\Module\Exception;
|
| 4 |
|
| 5 |
use Dhii\Modular\Module\ModuleAwareInterface;
|
| 6 |
+
use Dhii\Exception\ThrowableInterface;
|
| 7 |
|
| 8 |
/**
|
| 9 |
* Represents an exception that is thrown in relation to a module.
|
| 10 |
*
|
| 11 |
+
* @since [*next-version*]
|
| 12 |
*/
|
| 13 |
interface ModuleExceptionInterface extends
|
| 14 |
+
ThrowableInterface,
|
| 15 |
ModuleAwareInterface
|
| 16 |
{
|
| 17 |
}
|
vendor/dhii/module-interface/src/ModuleAwareInterface.php
CHANGED
|
@@ -5,14 +5,14 @@ namespace Dhii\Modular\Module;
|
|
| 5 |
/**
|
| 6 |
* Something that can have a module instance retrieved.
|
| 7 |
*
|
| 8 |
-
* @since
|
| 9 |
*/
|
| 10 |
interface ModuleAwareInterface
|
| 11 |
{
|
| 12 |
/**
|
| 13 |
* Retrieves the module that is associated with this instance.
|
| 14 |
*
|
| 15 |
-
* @since
|
| 16 |
*
|
| 17 |
* @return ModuleInterface|null The module, if applicable; otherwise, null.
|
| 18 |
*/
|
| 5 |
/**
|
| 6 |
* Something that can have a module instance retrieved.
|
| 7 |
*
|
| 8 |
+
* @since [*next-version*]
|
| 9 |
*/
|
| 10 |
interface ModuleAwareInterface
|
| 11 |
{
|
| 12 |
/**
|
| 13 |
* Retrieves the module that is associated with this instance.
|
| 14 |
*
|
| 15 |
+
* @since [*next-version*]
|
| 16 |
*
|
| 17 |
* @return ModuleInterface|null The module, if applicable; otherwise, null.
|
| 18 |
*/
|
vendor/dhii/module-interface/src/ModuleFactoryInterface.php
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
namespace Dhii\Modular\Module;
|
| 4 |
+
|
| 5 |
+
use Dhii\Factory\FactoryInterface;
|
| 6 |
+
|
| 7 |
+
/**
|
| 8 |
+
* Something that can create new module instances from module configuration.
|
| 9 |
+
*
|
| 10 |
+
* @since [*next-version*]
|
| 11 |
+
*/
|
| 12 |
+
interface ModuleFactoryInterface extends FactoryInterface
|
| 13 |
+
{
|
| 14 |
+
/**
|
| 15 |
+
* {@inheritdoc}
|
| 16 |
+
*
|
| 17 |
+
* @since [*next-version*]
|
| 18 |
+
*
|
| 19 |
+
* @return ModuleInterface The created module instance.
|
| 20 |
+
*/
|
| 21 |
+
public function make($config = null);
|
| 22 |
+
}
|
vendor/dhii/module-interface/src/ModuleInterface.php
CHANGED
|
@@ -2,51 +2,43 @@
|
|
| 2 |
|
| 3 |
namespace Dhii\Modular\Module;
|
| 4 |
|
| 5 |
-
use Dhii\
|
| 6 |
-
use Interop\Container\ServiceProviderInterface;
|
| 7 |
use Psr\Container\ContainerInterface;
|
| 8 |
|
| 9 |
/**
|
| 10 |
-
*
|
| 11 |
*
|
| 12 |
-
*
|
|
|
|
|
|
|
|
|
|
| 13 |
*/
|
| 14 |
-
interface ModuleInterface
|
| 15 |
{
|
| 16 |
/**
|
| 17 |
-
* Performs module-specific setup and provides a
|
| 18 |
-
*
|
| 19 |
-
* This method SHOULD be called at least once before {@link ModuleInterface::run()} may be invoked for a particular
|
| 20 |
-
* module instance. The returned service provider instance SHOULD be incorporated by the application into the
|
| 21 |
-
* container instance that is then given to this module's {@link ModuleInterface::run()} method.
|
| 22 |
*
|
| 23 |
-
*
|
| 24 |
-
*
|
| 25 |
-
*
|
| 26 |
-
* optionally integrating with other modules.
|
| 27 |
*
|
| 28 |
-
* @since
|
| 29 |
*
|
| 30 |
-
* @return
|
| 31 |
-
*
|
| 32 |
-
* @throws ModuleExceptionInterface If module setup failed and/or a service provider instance could not be returned.
|
| 33 |
*/
|
| 34 |
-
public function setup()
|
| 35 |
|
| 36 |
/**
|
| 37 |
* Runs the module.
|
| 38 |
*
|
| 39 |
-
* This method MUST be called
|
| 40 |
-
* container
|
| 41 |
-
*
|
| 42 |
-
*
|
| 43 |
-
* referencing services from other modules.
|
| 44 |
-
*
|
| 45 |
-
* @since 0.2
|
| 46 |
*
|
| 47 |
-
* @
|
| 48 |
*
|
| 49 |
-
* @
|
| 50 |
*/
|
| 51 |
-
public function run(ContainerInterface $c);
|
| 52 |
}
|
| 2 |
|
| 3 |
namespace Dhii\Modular\Module;
|
| 4 |
|
| 5 |
+
use Dhii\Data\KeyAwareInterface;
|
|
|
|
| 6 |
use Psr\Container\ContainerInterface;
|
| 7 |
|
| 8 |
/**
|
| 9 |
+
* Anything that represents a system module.
|
| 10 |
*
|
| 11 |
+
* A module is represented by an key, which is not limited to any type or form. It can be numeric, a slug, a hash or
|
| 12 |
+
* even a user-friendly name. What matters is that it **uniquely** identifies the module.
|
| 13 |
+
*
|
| 14 |
+
* @since [*next-version*]
|
| 15 |
*/
|
| 16 |
+
interface ModuleInterface extends KeyAwareInterface
|
| 17 |
{
|
| 18 |
/**
|
| 19 |
+
* Performs module-specific setup and optionally provides a container.
|
|
|
|
|
|
|
|
|
|
|
|
|
| 20 |
*
|
| 21 |
+
* This method SHOULD be used to allow the module to set up and prepare itself for invocation.
|
| 22 |
+
* If required, the module MAY provide services in a container. However, the usage of this container is dependent on
|
| 23 |
+
* the consumer and as such there is no guarantee that the container will actually be utilized.
|
|
|
|
| 24 |
*
|
| 25 |
+
* @since [*next-version*]
|
| 26 |
*
|
| 27 |
+
* @return ContainerInterface|null A DI container instance, if any.
|
|
|
|
|
|
|
| 28 |
*/
|
| 29 |
+
public function setup();
|
| 30 |
|
| 31 |
/**
|
| 32 |
* Runs the module.
|
| 33 |
*
|
| 34 |
+
* This method MUST be called when the module has been set up and is ready for invocation.
|
| 35 |
+
* A service container MAY be given to this method, which MAY consume its services. This container is not
|
| 36 |
+
* necessarily the same container returned by the instance's `setup()` method. In fact, it is strongly advised to
|
| 37 |
+
* assume that this is not the case.
|
|
|
|
|
|
|
|
|
|
| 38 |
*
|
| 39 |
+
* @since [*next-version*]
|
| 40 |
*
|
| 41 |
+
* @param ContainerInterface|null $c Optional DI container instance.
|
| 42 |
*/
|
| 43 |
+
public function run(ContainerInterface $c = null);
|
| 44 |
}
|
vendor/dhii/module-interface/src/ModuleKeyAwareInterface.php
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
namespace Dhii\Modular\Module;
|
| 4 |
+
|
| 5 |
+
use Dhii\Util\String\StringableInterface as Stringable;
|
| 6 |
+
|
| 7 |
+
/**
|
| 8 |
+
* Something that can have a module key retrieved.
|
| 9 |
+
*
|
| 10 |
+
* @since [*next-version*]
|
| 11 |
+
*/
|
| 12 |
+
interface ModuleKeyAwareInterface
|
| 13 |
+
{
|
| 14 |
+
/**
|
| 15 |
+
* Retrieves the module key associated with this instance.
|
| 16 |
+
*
|
| 17 |
+
* @since [*next-version*]
|
| 18 |
+
*
|
| 19 |
+
* @return string|Stringable|null The key, if applicable; otherwise, null.
|
| 20 |
+
*/
|
| 21 |
+
public function getModuleKey();
|
| 22 |
+
}
|
vendor/dhii/module-interface/test/bootstrap.php
DELETED
|
@@ -1,5 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
|
| 3 |
-
error_reporting(E_ALL | E_STRICT);
|
| 4 |
-
|
| 5 |
-
require_once dirname(__FILE__).'/../vendor/autoload.php';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/dhii/module-interface/test/stubs/GetImplementingMockBuilderCapableTrait.php
DELETED
|
@@ -1,46 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
|
| 3 |
-
namespace Dhii\Modular\Module\Test;
|
| 4 |
-
|
| 5 |
-
use PHPUnit\Framework\MockObject\MockBuilder;
|
| 6 |
-
use Throwable;
|
| 7 |
-
use Exception;
|
| 8 |
-
use Error;
|
| 9 |
-
use PHPUnit\Framework\TestCase;
|
| 10 |
-
|
| 11 |
-
/**
|
| 12 |
-
* Eases development of tests by allowing creation of more complex mocks.
|
| 13 |
-
*
|
| 14 |
-
* The original {@see TestCase::getMockBuilder()} allows mocking only a class or an interface.
|
| 15 |
-
* But sometimes, it is necessary to mock a class that implements one or more interfaces.
|
| 16 |
-
* One such case is with exceptions: testing an interface that extends {@see Throwable} requires the extension
|
| 17 |
-
* of {@see Exception} or {@see Error} by the mock.
|
| 18 |
-
*/
|
| 19 |
-
trait GetImplementingMockBuilderCapableTrait
|
| 20 |
-
{
|
| 21 |
-
/**
|
| 22 |
-
* Retrieves a builder for a class that extends the specified base class, while implementing the specified interfaces.
|
| 23 |
-
*
|
| 24 |
-
* @param string $baseClassName The name of the base class to extend.
|
| 25 |
-
* @param array $interfaceNames The names of interfaces to implement
|
| 26 |
-
* @return MockBuilder A builder for the new class.
|
| 27 |
-
*/
|
| 28 |
-
public function getImplementingMockBuilder(string $baseClassName, array $interfaceNames)
|
| 29 |
-
{
|
| 30 |
-
$className = uniqid("{$baseClassName}_");
|
| 31 |
-
$interfaceNames = implode(', ', $interfaceNames);
|
| 32 |
-
$classString = "abstract class $className extends $baseClassName implements $interfaceNames {}";
|
| 33 |
-
|
| 34 |
-
eval($classString);
|
| 35 |
-
|
| 36 |
-
return $this->getMockBuilder($className);
|
| 37 |
-
}
|
| 38 |
-
|
| 39 |
-
/**
|
| 40 |
-
* Retrieves a mock builder for the specified classname.
|
| 41 |
-
*
|
| 42 |
-
* @param string $className
|
| 43 |
-
* @return MockBuilder The builder.
|
| 44 |
-
*/
|
| 45 |
-
abstract public function getMockBuilder($className): MockBuilder;
|
| 46 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/dhii/module-interface/test/unit/Exception/ModuleExceptionInterfaceTest.php
DELETED
|
@@ -1,64 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
|
| 3 |
-
namespace Dhii\Modular\UnitTest\Exception;
|
| 4 |
-
|
| 5 |
-
use Dhii\Modular\Module\Exception\ModuleExceptionInterface as TestSubject;
|
| 6 |
-
use Dhii\Modular\Module\ModuleAwareInterface;
|
| 7 |
-
use Dhii\Modular\Module\Test\GetImplementingMockBuilderCapableTrait;
|
| 8 |
-
use Exception;
|
| 9 |
-
use PHPUnit\Framework\MockObject\MockObject;
|
| 10 |
-
use PHPUnit\Framework\TestCase;
|
| 11 |
-
|
| 12 |
-
/**
|
| 13 |
-
* Tests {@see TestSubject}.
|
| 14 |
-
*
|
| 15 |
-
* @since 0.2
|
| 16 |
-
*/
|
| 17 |
-
class ModuleExceptionInterfaceTest extends TestCase
|
| 18 |
-
{
|
| 19 |
-
use GetImplementingMockBuilderCapableTrait;
|
| 20 |
-
|
| 21 |
-
/**
|
| 22 |
-
* Creates a new instance of the test subject.
|
| 23 |
-
*
|
| 24 |
-
* @since 0.2
|
| 25 |
-
*
|
| 26 |
-
* @return TestSubject&MockObject
|
| 27 |
-
*/
|
| 28 |
-
public function createInstance()
|
| 29 |
-
{
|
| 30 |
-
$mock = $this->getImplementingMockBuilder(Exception::class, [TestSubject::class])
|
| 31 |
-
->setMethods([])
|
| 32 |
-
->getMock();
|
| 33 |
-
|
| 34 |
-
return $mock;
|
| 35 |
-
}
|
| 36 |
-
|
| 37 |
-
/**
|
| 38 |
-
* Tests whether a valid instance of the test subject can be created.
|
| 39 |
-
*
|
| 40 |
-
* @since 0.2
|
| 41 |
-
*/
|
| 42 |
-
public function testCanBeCreated()
|
| 43 |
-
{
|
| 44 |
-
$subject = $this->createInstance();
|
| 45 |
-
|
| 46 |
-
$this->assertInstanceOf(
|
| 47 |
-
TestSubject::class,
|
| 48 |
-
$subject,
|
| 49 |
-
'A valid instance of the test subject could not be created'
|
| 50 |
-
);
|
| 51 |
-
|
| 52 |
-
$this->assertInstanceOf(
|
| 53 |
-
'Throwable',
|
| 54 |
-
$subject,
|
| 55 |
-
'Exception must be throwable'
|
| 56 |
-
);
|
| 57 |
-
|
| 58 |
-
$this->assertInstanceOf(
|
| 59 |
-
ModuleAwareInterface::class,
|
| 60 |
-
$subject,
|
| 61 |
-
'Subject does not implement required interface'
|
| 62 |
-
);
|
| 63 |
-
}
|
| 64 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/dhii/module-interface/test/unit/ModuleAwareInterfaceTest.php
DELETED
|
@@ -1,46 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
|
| 3 |
-
namespace Dhii\Modular\UnitTest\Module;
|
| 4 |
-
|
| 5 |
-
use Dhii\Modular\Module\ModuleAwareInterface as TestSubject;
|
| 6 |
-
use PHPUnit_Framework_MockObject_MockObject as MockObject;
|
| 7 |
-
use PHPUnit\Framework\TestCase;
|
| 8 |
-
|
| 9 |
-
/**
|
| 10 |
-
* Tests {@see TestSubject}.
|
| 11 |
-
*
|
| 12 |
-
* @since 0.2
|
| 13 |
-
*/
|
| 14 |
-
class ModuleAwareInterfaceTest extends TestCase
|
| 15 |
-
{
|
| 16 |
-
/**
|
| 17 |
-
* Creates a new instance of the test subject.
|
| 18 |
-
*
|
| 19 |
-
* @since 0.2
|
| 20 |
-
*
|
| 21 |
-
* @return TestSubject&MockObject
|
| 22 |
-
*/
|
| 23 |
-
public function createInstance()
|
| 24 |
-
{
|
| 25 |
-
$mock = $this->getMockBuilder(TestSubject::class)
|
| 26 |
-
->getMock();
|
| 27 |
-
|
| 28 |
-
return $mock;
|
| 29 |
-
}
|
| 30 |
-
|
| 31 |
-
/**
|
| 32 |
-
* Tests whether a valid instance of the test subject can be created.
|
| 33 |
-
*
|
| 34 |
-
* @since 0.2
|
| 35 |
-
*/
|
| 36 |
-
public function testCanBeCreated()
|
| 37 |
-
{
|
| 38 |
-
$subject = $this->createInstance();
|
| 39 |
-
|
| 40 |
-
$this->assertInstanceOf(
|
| 41 |
-
TestSubject::class,
|
| 42 |
-
$subject,
|
| 43 |
-
'A valid instance of the test subject could not be created'
|
| 44 |
-
);
|
| 45 |
-
}
|
| 46 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/dhii/module-interface/test/unit/ModuleInterfaceTest.php
DELETED
|
@@ -1,46 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
|
| 3 |
-
namespace Dhii\Modular\UnitTest\Module;
|
| 4 |
-
|
| 5 |
-
use Dhii\Modular\Module\ModuleInterface as TestSubject;
|
| 6 |
-
use PHPUnit\Framework\MockObject\MockObject as MockObject;
|
| 7 |
-
use PHPUnit\Framework\TestCase;
|
| 8 |
-
|
| 9 |
-
/**
|
| 10 |
-
* Tests {@see TestSubject}.
|
| 11 |
-
*
|
| 12 |
-
* @since 0.2
|
| 13 |
-
*/
|
| 14 |
-
class ModuleInterfaceTest extends TestCase
|
| 15 |
-
{
|
| 16 |
-
/**
|
| 17 |
-
* Creates a new instance of the test subject.
|
| 18 |
-
*
|
| 19 |
-
* @since 0.2
|
| 20 |
-
*
|
| 21 |
-
* @return TestSubject&MockObject
|
| 22 |
-
*/
|
| 23 |
-
public function createInstance()
|
| 24 |
-
{
|
| 25 |
-
$mock = $this->getMockBuilder(TestSubject::class)
|
| 26 |
-
->getMock();
|
| 27 |
-
|
| 28 |
-
return $mock;
|
| 29 |
-
}
|
| 30 |
-
|
| 31 |
-
/**
|
| 32 |
-
* Tests whether a valid instance of the test subject can be created.
|
| 33 |
-
*
|
| 34 |
-
* @since 0.2
|
| 35 |
-
*/
|
| 36 |
-
public function testCanBeCreated()
|
| 37 |
-
{
|
| 38 |
-
$subject = $this->createInstance();
|
| 39 |
-
|
| 40 |
-
$this->assertInstanceOf(
|
| 41 |
-
TestSubject::class,
|
| 42 |
-
$subject,
|
| 43 |
-
'A valid instance of the test subject could not be created'
|
| 44 |
-
);
|
| 45 |
-
}
|
| 46 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/dhii/module-interface/travis.php.ini
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
| 1 |
+
memory_limit = 2048M
|
vendor/psr/simple-cache/.editorconfig
DELETED
|
@@ -1,12 +0,0 @@
|
|
| 1 |
-
; This file is for unifying the coding style for different editors and IDEs.
|
| 2 |
-
; More information at http://editorconfig.org
|
| 3 |
-
|
| 4 |
-
root = true
|
| 5 |
-
|
| 6 |
-
[*]
|
| 7 |
-
charset = utf-8
|
| 8 |
-
indent_size = 4
|
| 9 |
-
indent_style = space
|
| 10 |
-
end_of_line = lf
|
| 11 |
-
insert_final_newline = true
|
| 12 |
-
trim_trailing_whitespace = true
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/psr/simple-cache/LICENSE.md
DELETED
|
@@ -1,21 +0,0 @@
|
|
| 1 |
-
# The MIT License (MIT)
|
| 2 |
-
|
| 3 |
-
Copyright (c) 2016 PHP Framework Interoperability Group
|
| 4 |
-
|
| 5 |
-
> Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 6 |
-
> of this software and associated documentation files (the "Software"), to deal
|
| 7 |
-
> in the Software without restriction, including without limitation the rights
|
| 8 |
-
> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 9 |
-
> copies of the Software, and to permit persons to whom the Software is
|
| 10 |
-
> furnished to do so, subject to the following conditions:
|
| 11 |
-
>
|
| 12 |
-
> The above copyright notice and this permission notice shall be included in
|
| 13 |
-
> all copies or substantial portions of the Software.
|
| 14 |
-
>
|
| 15 |
-
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 16 |
-
> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 17 |
-
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 18 |
-
> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| 19 |
-
> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| 20 |
-
> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
| 21 |
-
> THE SOFTWARE.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/psr/simple-cache/README.md
DELETED
|
@@ -1,8 +0,0 @@
|
|
| 1 |
-
PHP FIG Simple Cache PSR
|
| 2 |
-
========================
|
| 3 |
-
|
| 4 |
-
This repository holds all interfaces related to PSR-16.
|
| 5 |
-
|
| 6 |
-
Note that this is not a cache implementation of its own. It is merely an interface that describes a cache implementation. See [the specification](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-16-simple-cache.md) for more details.
|
| 7 |
-
|
| 8 |
-
You can find implementations of the specification by looking for packages providing the [psr/simple-cache-implementation](https://packagist.org/providers/psr/simple-cache-implementation) virtual package.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/psr/simple-cache/composer.json
DELETED
|
@@ -1,25 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"name": "psr/simple-cache",
|
| 3 |
-
"description": "Common interfaces for simple caching",
|
| 4 |
-
"keywords": ["psr", "psr-16", "cache", "simple-cache", "caching"],
|
| 5 |
-
"license": "MIT",
|
| 6 |
-
"authors": [
|
| 7 |
-
{
|
| 8 |
-
"name": "PHP-FIG",
|
| 9 |
-
"homepage": "http://www.php-fig.org/"
|
| 10 |
-
}
|
| 11 |
-
],
|
| 12 |
-
"require": {
|
| 13 |
-
"php": ">=5.3.0"
|
| 14 |
-
},
|
| 15 |
-
"autoload": {
|
| 16 |
-
"psr-4": {
|
| 17 |
-
"Psr\\SimpleCache\\": "src/"
|
| 18 |
-
}
|
| 19 |
-
},
|
| 20 |
-
"extra": {
|
| 21 |
-
"branch-alias": {
|
| 22 |
-
"dev-master": "1.0.x-dev"
|
| 23 |
-
}
|
| 24 |
-
}
|
| 25 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/psr/simple-cache/src/CacheException.php
DELETED
|
@@ -1,10 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
|
| 3 |
-
namespace Psr\SimpleCache;
|
| 4 |
-
|
| 5 |
-
/**
|
| 6 |
-
* Interface used for all types of exceptions thrown by the implementing library.
|
| 7 |
-
*/
|
| 8 |
-
interface CacheException
|
| 9 |
-
{
|
| 10 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/psr/simple-cache/src/CacheInterface.php
DELETED
|
@@ -1,114 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
|
| 3 |
-
namespace Psr\SimpleCache;
|
| 4 |
-
|
| 5 |
-
interface CacheInterface
|
| 6 |
-
{
|
| 7 |
-
/**
|
| 8 |
-
* Fetches a value from the cache.
|
| 9 |
-
*
|
| 10 |
-
* @param string $key The unique key of this item in the cache.
|
| 11 |
-
* @param mixed $default Default value to return if the key does not exist.
|
| 12 |
-
*
|
| 13 |
-
* @return mixed The value of the item from the cache, or $default in case of cache miss.
|
| 14 |
-
*
|
| 15 |
-
* @throws \Psr\SimpleCache\InvalidArgumentException
|
| 16 |
-
* MUST be thrown if the $key string is not a legal value.
|
| 17 |
-
*/
|
| 18 |
-
public function get($key, $default = null);
|
| 19 |
-
|
| 20 |
-
/**
|
| 21 |
-
* Persists data in the cache, uniquely referenced by a key with an optional expiration TTL time.
|
| 22 |
-
*
|
| 23 |
-
* @param string $key The key of the item to store.
|
| 24 |
-
* @param mixed $value The value of the item to store, must be serializable.
|
| 25 |
-
* @param null|int|\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and
|
| 26 |
-
* the driver supports TTL then the library may set a default value
|
| 27 |
-
* for it or let the driver take care of that.
|
| 28 |
-
*
|
| 29 |
-
* @return bool True on success and false on failure.
|
| 30 |
-
*
|
| 31 |
-
* @throws \Psr\SimpleCache\InvalidArgumentException
|
| 32 |
-
* MUST be thrown if the $key string is not a legal value.
|
| 33 |
-
*/
|
| 34 |
-
public function set($key, $value, $ttl = null);
|
| 35 |
-
|
| 36 |
-
/**
|
| 37 |
-
* Delete an item from the cache by its unique key.
|
| 38 |
-
*
|
| 39 |
-
* @param string $key The unique cache key of the item to delete.
|
| 40 |
-
*
|
| 41 |
-
* @return bool True if the item was successfully removed. False if there was an error.
|
| 42 |
-
*
|
| 43 |
-
* @throws \Psr\SimpleCache\InvalidArgumentException
|
| 44 |
-
* MUST be thrown if the $key string is not a legal value.
|
| 45 |
-
*/
|
| 46 |
-
public function delete($key);
|
| 47 |
-
|
| 48 |
-
/**
|
| 49 |
-
* Wipes clean the entire cache's keys.
|
| 50 |
-
*
|
| 51 |
-
* @return bool True on success and false on failure.
|
| 52 |
-
*/
|
| 53 |
-
public function clear();
|
| 54 |
-
|
| 55 |
-
/**
|
| 56 |
-
* Obtains multiple cache items by their unique keys.
|
| 57 |
-
*
|
| 58 |
-
* @param iterable $keys A list of keys that can obtained in a single operation.
|
| 59 |
-
* @param mixed $default Default value to return for keys that do not exist.
|
| 60 |
-
*
|
| 61 |
-
* @return iterable A list of key => value pairs. Cache keys that do not exist or are stale will have $default as value.
|
| 62 |
-
*
|
| 63 |
-
* @throws \Psr\SimpleCache\InvalidArgumentException
|
| 64 |
-
* MUST be thrown if $keys is neither an array nor a Traversable,
|
| 65 |
-
* or if any of the $keys are not a legal value.
|
| 66 |
-
*/
|
| 67 |
-
public function getMultiple($keys, $default = null);
|
| 68 |
-
|
| 69 |
-
/**
|
| 70 |
-
* Persists a set of key => value pairs in the cache, with an optional TTL.
|
| 71 |
-
*
|
| 72 |
-
* @param iterable $values A list of key => value pairs for a multiple-set operation.
|
| 73 |
-
* @param null|int|\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and
|
| 74 |
-
* the driver supports TTL then the library may set a default value
|
| 75 |
-
* for it or let the driver take care of that.
|
| 76 |
-
*
|
| 77 |
-
* @return bool True on success and false on failure.
|
| 78 |
-
*
|
| 79 |
-
* @throws \Psr\SimpleCache\InvalidArgumentException
|
| 80 |
-
* MUST be thrown if $values is neither an array nor a Traversable,
|
| 81 |
-
* or if any of the $values are not a legal value.
|
| 82 |
-
*/
|
| 83 |
-
public function setMultiple($values, $ttl = null);
|
| 84 |
-
|
| 85 |
-
/**
|
| 86 |
-
* Deletes multiple cache items in a single operation.
|
| 87 |
-
*
|
| 88 |
-
* @param iterable $keys A list of string-based keys to be deleted.
|
| 89 |
-
*
|
| 90 |
-
* @return bool True if the items were successfully removed. False if there was an error.
|
| 91 |
-
*
|
| 92 |
-
* @throws \Psr\SimpleCache\InvalidArgumentException
|
| 93 |
-
* MUST be thrown if $keys is neither an array nor a Traversable,
|
| 94 |
-
* or if any of the $keys are not a legal value.
|
| 95 |
-
*/
|
| 96 |
-
public function deleteMultiple($keys);
|
| 97 |
-
|
| 98 |
-
/**
|
| 99 |
-
* Determines whether an item is present in the cache.
|
| 100 |
-
*
|
| 101 |
-
* NOTE: It is recommended that has() is only to be used for cache warming type purposes
|
| 102 |
-
* and not to be used within your live applications operations for get/set, as this method
|
| 103 |
-
* is subject to a race condition where your has() will return true and immediately after,
|
| 104 |
-
* another script can remove it making the state of your app out of date.
|
| 105 |
-
*
|
| 106 |
-
* @param string $key The cache item key.
|
| 107 |
-
*
|
| 108 |
-
* @return bool
|
| 109 |
-
*
|
| 110 |
-
* @throws \Psr\SimpleCache\InvalidArgumentException
|
| 111 |
-
* MUST be thrown if the $key string is not a legal value.
|
| 112 |
-
*/
|
| 113 |
-
public function has($key);
|
| 114 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/psr/simple-cache/src/InvalidArgumentException.php
DELETED
|
@@ -1,13 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
|
| 3 |
-
namespace Psr\SimpleCache;
|
| 4 |
-
|
| 5 |
-
/**
|
| 6 |
-
* Exception interface for invalid cache arguments.
|
| 7 |
-
*
|
| 8 |
-
* When an invalid argument is passed it must throw an exception which implements
|
| 9 |
-
* this interface
|
| 10 |
-
*/
|
| 11 |
-
interface InvalidArgumentException extends CacheException
|
| 12 |
-
{
|
| 13 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/ralouphie/getallheaders/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
The MIT License (MIT)
|
| 2 |
+
|
| 3 |
+
Copyright (c) 2014 Ralph Khattar
|
| 4 |
+
|
| 5 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 6 |
+
of this software and associated documentation files (the "Software"), to deal
|
| 7 |
+
in the Software without restriction, including without limitation the rights
|
| 8 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 9 |
+
copies of the Software, and to permit persons to whom the Software is
|
| 10 |
+
furnished to do so, subject to the following conditions:
|
| 11 |
+
|
| 12 |
+
The above copyright notice and this permission notice shall be included in all
|
| 13 |
+
copies or substantial portions of the Software.
|
| 14 |
+
|
| 15 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 16 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 17 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 18 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| 19 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| 20 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
| 21 |
+
SOFTWARE.
|
vendor/ralouphie/getallheaders/README.md
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
getallheaders
|
| 2 |
+
=============
|
| 3 |
+
|
| 4 |
+
PHP `getallheaders()` polyfill. Compatible with PHP >= 5.3.
|
| 5 |
+
|
| 6 |
+
[](https://travis-ci.org/ralouphie/getallheaders)
|
| 7 |
+
[](https://coveralls.io/r/ralouphie/getallheaders?branch=master)
|
| 8 |
+
[](https://packagist.org/packages/ralouphie/getallheaders)
|
| 9 |
+
[](https://packagist.org/packages/ralouphie/getallheaders)
|
| 10 |
+
[](https://packagist.org/packages/ralouphie/getallheaders)
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
This is a simple polyfill for [`getallheaders()`](http://www.php.net/manual/en/function.getallheaders.php).
|
| 14 |
+
|
| 15 |
+
## Install
|
| 16 |
+
|
| 17 |
+
For PHP version **`>= 5.6`**:
|
| 18 |
+
|
| 19 |
+
```
|
| 20 |
+
composer require ralouphie/getallheaders
|
| 21 |
+
```
|
| 22 |
+
|
| 23 |
+
For PHP version **`< 5.6`**:
|
| 24 |
+
|
| 25 |
+
```
|
| 26 |
+
composer require ralouphie/getallheaders "^2"
|
| 27 |
+
```
|
vendor/ralouphie/getallheaders/composer.json
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "ralouphie/getallheaders",
|
| 3 |
+
"description": "A polyfill for getallheaders.",
|
| 4 |
+
"license": "MIT",
|
| 5 |
+
"authors": [
|
| 6 |
+
{
|
| 7 |
+
"name": "Ralph Khattar",
|
| 8 |
+
"email": "ralph.khattar@gmail.com"
|
| 9 |
+
}
|
| 10 |
+
],
|
| 11 |
+
"require": {
|
| 12 |
+
"php": ">=5.6"
|
| 13 |
+
},
|
| 14 |
+
"require-dev": {
|
| 15 |
+
"phpunit/phpunit": "^5 || ^6.5",
|
| 16 |
+
"php-coveralls/php-coveralls": "^2.1"
|
| 17 |
+
},
|
| 18 |
+
"autoload": {
|
| 19 |
+
"files": ["src/getallheaders.php"]
|
| 20 |
+
},
|
| 21 |
+
"autoload-dev": {
|
| 22 |
+
"psr-4": {
|
| 23 |
+
"getallheaders\\Tests\\": "tests/"
|
| 24 |
+
}
|
| 25 |
+
}
|
| 26 |
+
}
|
vendor/ralouphie/getallheaders/src/getallheaders.php
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
if (!function_exists('getallheaders')) {
|
| 4 |
+
|
| 5 |
+
/**
|
| 6 |
+
* Get all HTTP header key/values as an associative array for the current request.
|
| 7 |
+
*
|
| 8 |
+
* @return string[string] The HTTP header key/value pairs.
|
| 9 |
+
*/
|
| 10 |
+
function getallheaders()
|
| 11 |
+
{
|
| 12 |
+
$headers = array();
|
| 13 |
+
|
| 14 |
+
$copy_server = array(
|
| 15 |
+
'CONTENT_TYPE' => 'Content-Type',
|
| 16 |
+
'CONTENT_LENGTH' => 'Content-Length',
|
| 17 |
+
'CONTENT_MD5' => 'Content-Md5',
|
| 18 |
+
);
|
| 19 |
+
|
| 20 |
+
foreach ($_SERVER as $key => $value) {
|
| 21 |
+
if (substr($key, 0, 5) === 'HTTP_') {
|
| 22 |
+
$key = substr($key, 5);
|
| 23 |
+
if (!isset($copy_server[$key]) || !isset($_SERVER[$key])) {
|
| 24 |
+
$key = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', $key))));
|
| 25 |
+
$headers[$key] = $value;
|
| 26 |
+
}
|
| 27 |
+
} elseif (isset($copy_server[$key])) {
|
| 28 |
+
$headers[$copy_server[$key]] = $value;
|
| 29 |
+
}
|
| 30 |
+
}
|
| 31 |
+
|
| 32 |
+
if (!isset($headers['Authorization'])) {
|
| 33 |
+
if (isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) {
|
| 34 |
+
$headers['Authorization'] = $_SERVER['REDIRECT_HTTP_AUTHORIZATION'];
|
| 35 |
+
} elseif (isset($_SERVER['PHP_AUTH_USER'])) {
|
| 36 |
+
$basic_pass = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : '';
|
| 37 |
+
$headers['Authorization'] = 'Basic ' . base64_encode($_SERVER['PHP_AUTH_USER'] . ':' . $basic_pass);
|
| 38 |
+
} elseif (isset($_SERVER['PHP_AUTH_DIGEST'])) {
|
| 39 |
+
$headers['Authorization'] = $_SERVER['PHP_AUTH_DIGEST'];
|
| 40 |
+
}
|
| 41 |
+
}
|
| 42 |
+
|
| 43 |
+
return $headers;
|
| 44 |
+
}
|
| 45 |
+
|
| 46 |
+
}
|
vendor/wp-oop/transient-cache/CHANGELOG.md
DELETED
|
@@ -1,30 +0,0 @@
|
|
| 1 |
-
# Change log
|
| 2 |
-
All notable changes to this project will be documented in this file.
|
| 3 |
-
|
| 4 |
-
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
| 5 |
-
and this project adheres to [Semantic Versioning](http://semver.org/).
|
| 6 |
-
|
| 7 |
-
## [[*next-version*]] - YYYY-MM-DD
|
| 8 |
-
|
| 9 |
-
## [0.1.0-alpha3] - 2020-07-08
|
| 10 |
-
### Added
|
| 11 |
-
- Missing function imports.
|
| 12 |
-
|
| 13 |
-
### Changed
|
| 14 |
-
- (#13) Improved exception messages
|
| 15 |
-
|
| 16 |
-
## [0.1.0-alpha2] - 2020-04-19
|
| 17 |
-
### Fixed
|
| 18 |
-
- False-negative check used to confirm the negative because of wrong option name.
|
| 19 |
-
- Non-getter interface methods of `CachePool` now return `true` on success.
|
| 20 |
-
- Non-getter interface methods of `CachePool` now declare and throw proper exceptions.
|
| 21 |
-
|
| 22 |
-
### Added
|
| 23 |
-
- `SilentPool`, which wraps cache pools that throw non-PSR-16 exceptions and suppress them, making the pool compatible (#7).
|
| 24 |
-
- Missing documentation.
|
| 25 |
-
|
| 26 |
-
### Changed
|
| 27 |
-
- Centralized behaviour like option deletion, and option/transient retrieval/assignment.
|
| 28 |
-
|
| 29 |
-
## [0.1.0-alpha1] - 2020-04-14
|
| 30 |
-
Initial version.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/wp-oop/transient-cache/README.md
DELETED
|
@@ -1,105 +0,0 @@
|
|
| 1 |
-
# WP Transient Cache
|
| 2 |
-
|
| 3 |
-
[](https://travis-ci.org/wp-oop/transient-cache)
|
| 4 |
-
[](https://packagist.org/packages/wp-oop/transient-cache)
|
| 5 |
-
|
| 6 |
-
A fully compliant [PSR-16][] wrapper for WP transients.
|
| 7 |
-
|
| 8 |
-
## Details
|
| 9 |
-
A common means of caching values in WordPress is by using [transients][transients-api]. However, this approach suffers
|
| 10 |
-
from several problems:
|
| 11 |
-
|
| 12 |
-
1. Coupling to WordPress. You can't just suddenly substitute the caching mechanism you are using for another mechanism,
|
| 13 |
-
and everything still works.
|
| 14 |
-
2. No namespacing. All transients live in the same namespace, and independent consumers cannot reliably use
|
| 15 |
-
arbitrary keys without the risk of possible conflict.
|
| 16 |
-
3. No true modularity. Due to the above, if your application is [modular][`dhii/module-interface`], it cannot
|
| 17 |
-
decide which caching mechanisms to use for what, because that would have already been decided by your modules.
|
| 18 |
-
4. Missing features. For example, it is not possible to clear all values related to a particular thing in one go.
|
| 19 |
-
Exceptions are missing too, and you have to rely on ambiguous return values.
|
| 20 |
-
|
| 21 |
-
This standards-compliant wrapper addresses all of the above. It is a true PSR-16 cache, which uses WordPress
|
| 22 |
-
transients as storage. Exceptions are raised, interfaces implemented, and true false-negative detection is in place.
|
| 23 |
-
Each instance of the cache pool is logically independent from other instances, provided that it is given a unique
|
| 24 |
-
name. The application is once again in control, and modules that use cache can become platform agnostic.
|
| 25 |
-
|
| 26 |
-
### Compatibility
|
| 27 |
-
- `CachePool` and `CachePoolFactory` offer best-practices error handling, throwing meaningful exceptions
|
| 28 |
-
when something goes wrong. This violates PSR-16, but allows you to know what is failing.
|
| 29 |
-
- `SilentPool` and `SilentPoolFactory` offer PSR-16 compatibility at the cost of error handling,
|
| 30 |
-
hiding exceptions, and returning standards-compatible values. This complies with PSR-16, but at the cost of
|
| 31 |
-
clarity and verbosity.
|
| 32 |
-
|
| 33 |
-
### Usage
|
| 34 |
-
```php
|
| 35 |
-
/*
|
| 36 |
-
* Set up the factory - usually in a service definition
|
| 37 |
-
*/
|
| 38 |
-
use wpdb;
|
| 39 |
-
use Psr\SimpleCache\CacheInterface;
|
| 40 |
-
use WpOop\TransientCache\CachePoolFactory;
|
| 41 |
-
use WpOop\TransientCache\SilentPoolFactory;
|
| 42 |
-
|
| 43 |
-
/* @var $wpdb wpdb */
|
| 44 |
-
$factory = new CachePoolFactory($wpdb);
|
| 45 |
-
// Optionally hide exceptions for PSR-16 compatibility
|
| 46 |
-
$factory = new SilentPoolFactory($factory); // Optional, and not recommended for testing environments!
|
| 47 |
-
|
| 48 |
-
/*
|
| 49 |
-
* Create cache pools - usually somewhere else
|
| 50 |
-
*/
|
| 51 |
-
// Same wpdb instance used, default value generated automatically
|
| 52 |
-
$pool1 = $factory->createCachePool('client-access-tokens');
|
| 53 |
-
$pool2 = $factory->createCachePool('remote-api-responses');
|
| 54 |
-
$pool3 = $factory->createCachePool('other-stuff');
|
| 55 |
-
|
| 56 |
-
/*
|
| 57 |
-
* Use cache pools - usually injected into a client class
|
| 58 |
-
*/
|
| 59 |
-
|
| 60 |
-
// No collision of key between different pools
|
| 61 |
-
$pool1->set('123', $someToken);
|
| 62 |
-
$pool2->set('123', $someResponseBody);
|
| 63 |
-
$pool3->set('123', false);
|
| 64 |
-
|
| 65 |
-
// Depend on an interop standard
|
| 66 |
-
(function (CacheInterface $cache) {
|
| 67 |
-
// False negative detection: correctly determines that the value is actually `false`
|
| 68 |
-
$cache->has('123'); // true
|
| 69 |
-
$cache->get('123', uniqid('default')) === false; // true
|
| 70 |
-
})($pool3);
|
| 71 |
-
|
| 72 |
-
// Clear all values within a pool
|
| 73 |
-
$pool2->clear();
|
| 74 |
-
$pool2->has('123'); // false
|
| 75 |
-
$pool1->has('123'); // true
|
| 76 |
-
```
|
| 77 |
-
|
| 78 |
-
### Limitations
|
| 79 |
-
#### Key Length
|
| 80 |
-
Due to the way the underlying backend (the WordPress transients via options) works, **the combined length of the
|
| 81 |
-
pool name and cache key MUST NOT exceed a 171 char limit**. This is because (at least in WP 5.0+)
|
| 82 |
-
the [length of the `option_name` field of the `options` table is 191 chars][1], and transients require the longest
|
| 83 |
-
prefix of `_transient_timeout_` to the option name, which together with the 1-char separator is 20 chars. Using
|
| 84 |
-
anything greater than this length will result in potentially devastating behaviour described in [Trac #15058][].
|
| 85 |
-
|
| 86 |
-
In any case, the general recommendation is that **consumers SHOULD NOT use cache keys longer than 64 chars**,
|
| 87 |
-
as this is the minimal length required for support by the PSR-16 spec. Using anything longer than that will
|
| 88 |
-
cause consumers to become dependent on implementation detail, which breaks interoperability.
|
| 89 |
-
Given that, **the cache pool name SHOULD NOT exceed 107 chars**.
|
| 90 |
-
|
| 91 |
-
#### Value Length
|
| 92 |
-
The storage backend (WP options) [declares][2] the corresponding field to be of type [`LONGTEXT`][], which
|
| 93 |
-
[allows][3] up to **4 GB** (2<sup>32</sup>) of data. This is therefore the limit on cache values.
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
[transients-api]: https://codex.wordpress.org/Transients_API
|
| 97 |
-
[`dhii/module-interface`]: https://github.com/Dhii/module-interface
|
| 98 |
-
|
| 99 |
-
[PSR-16]: https://www.php-fig.org/psr/psr-16/
|
| 100 |
-
[`LONGTEXT`]: https://dev.mysql.com/doc/refman/8.0/en/blob.html
|
| 101 |
-
|
| 102 |
-
[1]: https://github.com/WordPress/WordPress/blob/5.0-branch/wp-admin/includes/schema.php#L142
|
| 103 |
-
[2]: https://github.com/WordPress/WordPress/blob/master/wp-admin/includes/schema.php#L144
|
| 104 |
-
[3]: https://dev.mysql.com/doc/refman/8.0/en/storage-requirements.html#data-types-storage-reqs-strings
|
| 105 |
-
[Trac #15058]: https://core.trac.wordpress.org/ticket/15058
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/wp-oop/transient-cache/composer.json
DELETED
|
@@ -1,37 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
"name": "wp-oop/transient-cache",
|
| 3 |
-
"description": "A PSR-16 wrapper for WP transients.",
|
| 4 |
-
"minimum-stability": "dev",
|
| 5 |
-
"license": "MIT",
|
| 6 |
-
"authors": [
|
| 7 |
-
{
|
| 8 |
-
"name": "Anton Ukhanev",
|
| 9 |
-
"email": "xedin.unknown@gmail.com",
|
| 10 |
-
"role": "Developer"
|
| 11 |
-
}
|
| 12 |
-
],
|
| 13 |
-
"require": {
|
| 14 |
-
"php": "^7.1",
|
| 15 |
-
"psr/simple-cache": "^1.0"
|
| 16 |
-
},
|
| 17 |
-
"require-dev": {
|
| 18 |
-
"phpunit/phpunit": "^7.1",
|
| 19 |
-
"johnpbloch/wordpress-core": "^5.0",
|
| 20 |
-
"brain/monkey": "^2.3"
|
| 21 |
-
},
|
| 22 |
-
"autoload": {
|
| 23 |
-
"psr-4": {
|
| 24 |
-
"WpOop\\TransientCache\\": "src"
|
| 25 |
-
}
|
| 26 |
-
},
|
| 27 |
-
"autoload-dev": {
|
| 28 |
-
"psr-4": {
|
| 29 |
-
"WpOop\\TransientCache\\Tests\\Func\\": "tests/functional"
|
| 30 |
-
}
|
| 31 |
-
},
|
| 32 |
-
"extra": {
|
| 33 |
-
"branch-alias": {
|
| 34 |
-
"dev-develop": "0.1.x-dev"
|
| 35 |
-
}
|
| 36 |
-
}
|
| 37 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/wp-oop/transient-cache/src/CachePool.php
DELETED
|
@@ -1,609 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
declare(strict_types=1);
|
| 3 |
-
|
| 4 |
-
namespace WpOop\TransientCache;
|
| 5 |
-
|
| 6 |
-
use DateInterval;
|
| 7 |
-
use DateTimeImmutable;
|
| 8 |
-
use Exception;
|
| 9 |
-
use Psr\SimpleCache\CacheInterface;
|
| 10 |
-
use RangeException;
|
| 11 |
-
use RuntimeException;
|
| 12 |
-
use wpdb;
|
| 13 |
-
use WpOop\TransientCache\Exception\CacheException;
|
| 14 |
-
use WpOop\TransientCache\Exception\InvalidArgumentException;
|
| 15 |
-
use Psr\SimpleCache\InvalidArgumentException as InvalidArgumentExceptionInterface;
|
| 16 |
-
|
| 17 |
-
use function is_int;
|
| 18 |
-
use function is_iterable;
|
| 19 |
-
use function is_null;
|
| 20 |
-
use function sprintf;
|
| 21 |
-
use function strlen;
|
| 22 |
-
use function strpos;
|
| 23 |
-
use function str_split;
|
| 24 |
-
use function substr;
|
| 25 |
-
use function delete_transient;
|
| 26 |
-
use function get_option;
|
| 27 |
-
use function get_transient;
|
| 28 |
-
use function set_transient;
|
| 29 |
-
|
| 30 |
-
/**
|
| 31 |
-
* {@inheritDoc}
|
| 32 |
-
*
|
| 33 |
-
* Uses WordPress transients as storage medium.
|
| 34 |
-
*/
|
| 35 |
-
class CachePool implements CacheInterface
|
| 36 |
-
{
|
| 37 |
-
public const RESERVED_KEY_SYMBOLS = '{}()/\@:';
|
| 38 |
-
public const NAMESPACE_SEPARATOR = '/';
|
| 39 |
-
|
| 40 |
-
protected const TABLE_NAME_OPTIONS = 'options';
|
| 41 |
-
protected const FIELD_NAME_OPTION_NAME = 'option_name';
|
| 42 |
-
protected const OPTION_NAME_PREFIX_TRANSIENT = '_transient_';
|
| 43 |
-
protected const OPTION_NAME_PREFIX_TIMEOUT = 'timeout_';
|
| 44 |
-
protected const OPTION_NAME_MAX_LENGTH = 191;
|
| 45 |
-
|
| 46 |
-
/**
|
| 47 |
-
* @var wpdb
|
| 48 |
-
*/
|
| 49 |
-
protected $wpdb;
|
| 50 |
-
/**
|
| 51 |
-
* @var string
|
| 52 |
-
*/
|
| 53 |
-
protected $poolName;
|
| 54 |
-
/**
|
| 55 |
-
* @var mixed
|
| 56 |
-
*/
|
| 57 |
-
protected $defaultValue;
|
| 58 |
-
/**
|
| 59 |
-
* @var int|DateInterval
|
| 60 |
-
*/
|
| 61 |
-
protected $defaultTtl;
|
| 62 |
-
|
| 63 |
-
/**
|
| 64 |
-
* @param wpdb $wpdb The WP database object.
|
| 65 |
-
* @param string $poolName The name of this cache pool. Must be unique to this instance.
|
| 66 |
-
* @param mixed $defaultValue A random value. Used for false-negative detection. The more chaotic - the better.
|
| 67 |
-
* @param int|DateInterval $defaultTtl Default TTL to use when caching new entries.
|
| 68 |
-
*/
|
| 69 |
-
public function __construct(wpdb $wpdb, string $poolName, $defaultValue, $defaultTtl = 0)
|
| 70 |
-
{
|
| 71 |
-
if ($poolName === static::OPTION_NAME_PREFIX_TIMEOUT) {
|
| 72 |
-
throw new RangeException(sprintf('Pool name cannot be "%1$s"', static::OPTION_NAME_PREFIX_TIMEOUT));
|
| 73 |
-
}
|
| 74 |
-
|
| 75 |
-
$this->wpdb = $wpdb;
|
| 76 |
-
$this->poolName = $poolName;
|
| 77 |
-
$this->defaultValue = $defaultValue;
|
| 78 |
-
$this->defaultTtl = $defaultTtl;
|
| 79 |
-
}
|
| 80 |
-
|
| 81 |
-
/**
|
| 82 |
-
* @inheritDoc
|
| 83 |
-
*
|
| 84 |
-
* @throws CacheException If problem retrieving.
|
| 85 |
-
*/
|
| 86 |
-
public function get($key, $default = null)
|
| 87 |
-
{
|
| 88 |
-
$this->validateKey($key);
|
| 89 |
-
$transientKey = $this->prepareKey($key);
|
| 90 |
-
|
| 91 |
-
try {
|
| 92 |
-
$value = $this->getTransient($transientKey);
|
| 93 |
-
} catch (RangeException $e) {
|
| 94 |
-
return $default;
|
| 95 |
-
} catch (RuntimeException $e) {
|
| 96 |
-
$message = sprintf('Could not retrieve cache for key "%1$s": %2$s', $key, $e->getMessage());
|
| 97 |
-
throw new CacheException($message, 0, $e);
|
| 98 |
-
}
|
| 99 |
-
|
| 100 |
-
return $value;
|
| 101 |
-
}
|
| 102 |
-
|
| 103 |
-
/**
|
| 104 |
-
* @inheritDoc
|
| 105 |
-
*
|
| 106 |
-
* @throws CacheException If TTL cannot be normalized to a number of seconds.
|
| 107 |
-
* @throws InvalidArgumentException If TTL is invalid.
|
| 108 |
-
*/
|
| 109 |
-
public function set($key, $value, $ttl = null)
|
| 110 |
-
{
|
| 111 |
-
$this->validateKey($key);
|
| 112 |
-
$origKey = $key;
|
| 113 |
-
$key = $this->prepareKey($key);
|
| 114 |
-
|
| 115 |
-
$ttl = is_null($ttl) ? $this->defaultTtl : $ttl;
|
| 116 |
-
|
| 117 |
-
try {
|
| 118 |
-
$ttl = $ttl instanceof DateInterval
|
| 119 |
-
? $this->getIntervalDuration($ttl)
|
| 120 |
-
: $ttl;
|
| 121 |
-
} catch (Exception $e) {
|
| 122 |
-
throw new CacheException(sprintf('Could not normalize cache TTL: %s', $e->getMessage()));
|
| 123 |
-
}
|
| 124 |
-
|
| 125 |
-
if (!is_int($ttl)) {
|
| 126 |
-
throw new InvalidArgumentException('The specified cache TTL is invalid');
|
| 127 |
-
}
|
| 128 |
-
|
| 129 |
-
try {
|
| 130 |
-
$this->setTransient($key, $value, $ttl);
|
| 131 |
-
} catch (RuntimeException $e) {
|
| 132 |
-
$message = sprintf('Could not write value for key "%1$s" to cache: %2$s', $origKey, $e->getMessage());
|
| 133 |
-
throw new CacheException($message, 0, $e);
|
| 134 |
-
}
|
| 135 |
-
|
| 136 |
-
return true;
|
| 137 |
-
}
|
| 138 |
-
|
| 139 |
-
/**
|
| 140 |
-
* @inheritDoc
|
| 141 |
-
*
|
| 142 |
-
* @throws CacheException If problem deleting.
|
| 143 |
-
*/
|
| 144 |
-
public function delete($key)
|
| 145 |
-
{
|
| 146 |
-
$this->validateKey($key);
|
| 147 |
-
$origKey = $key;
|
| 148 |
-
$key = $this->prepareKey($key);
|
| 149 |
-
|
| 150 |
-
try {
|
| 151 |
-
$this->deleteTransient($key);
|
| 152 |
-
} catch (Exception $e) {
|
| 153 |
-
$message = sprintf('Failed to delete cache for key "%1$s": %2$s', $origKey, $e->getMessage());
|
| 154 |
-
throw new CacheException($message, 0, $e);
|
| 155 |
-
}
|
| 156 |
-
|
| 157 |
-
return true;
|
| 158 |
-
}
|
| 159 |
-
|
| 160 |
-
/**
|
| 161 |
-
* @inheritDoc
|
| 162 |
-
*
|
| 163 |
-
* @throws CacheException If problem clearing.
|
| 164 |
-
*/
|
| 165 |
-
public function clear()
|
| 166 |
-
{
|
| 167 |
-
try {
|
| 168 |
-
$keys = $this->getAllKeys();
|
| 169 |
-
$this->deleteMultiple($keys);
|
| 170 |
-
} catch (Exception|InvalidArgumentExceptionInterface $e) {
|
| 171 |
-
throw new CacheException(sprintf('Failed to clear cache: %s', $e->getMessage()), 0, $e);
|
| 172 |
-
}
|
| 173 |
-
|
| 174 |
-
return true;
|
| 175 |
-
}
|
| 176 |
-
|
| 177 |
-
/**
|
| 178 |
-
* @inheritDoc
|
| 179 |
-
*
|
| 180 |
-
* @throws CacheException If problem retrieving.
|
| 181 |
-
*/
|
| 182 |
-
public function getMultiple($keys, $default = null)
|
| 183 |
-
{
|
| 184 |
-
if (!is_iterable($keys)) {
|
| 185 |
-
throw new InvalidArgumentException('List of keys is not an iterable value');
|
| 186 |
-
}
|
| 187 |
-
|
| 188 |
-
$entries = [];
|
| 189 |
-
foreach ($keys as $key) {
|
| 190 |
-
$value = $this->get($key, $default);
|
| 191 |
-
$entries[$key] = $value;
|
| 192 |
-
}
|
| 193 |
-
|
| 194 |
-
return $entries;
|
| 195 |
-
}
|
| 196 |
-
|
| 197 |
-
/**
|
| 198 |
-
* @inheritDoc
|
| 199 |
-
*
|
| 200 |
-
* @throws CacheException If problem persisting.
|
| 201 |
-
*/
|
| 202 |
-
public function setMultiple($values, $ttl = null)
|
| 203 |
-
{
|
| 204 |
-
if (!is_iterable($values)) {
|
| 205 |
-
throw new InvalidArgumentException('List of keys is not an iterable value');
|
| 206 |
-
}
|
| 207 |
-
|
| 208 |
-
try {
|
| 209 |
-
$ttl = $ttl instanceof DateInterval
|
| 210 |
-
? $this->getIntervalDuration($ttl)
|
| 211 |
-
: $ttl;
|
| 212 |
-
} catch (Exception $e) {
|
| 213 |
-
throw new CacheException(sprintf('Could not normalize cache TTL: %s', $e->getMessage()));
|
| 214 |
-
}
|
| 215 |
-
|
| 216 |
-
foreach ($values as $key => $value) {
|
| 217 |
-
$this->set($key, $value, $ttl);
|
| 218 |
-
}
|
| 219 |
-
|
| 220 |
-
return true;
|
| 221 |
-
}
|
| 222 |
-
|
| 223 |
-
/**
|
| 224 |
-
* @inheritDoc
|
| 225 |
-
*
|
| 226 |
-
* @throws CacheException If problem deleting.
|
| 227 |
-
*/
|
| 228 |
-
public function deleteMultiple($keys)
|
| 229 |
-
{
|
| 230 |
-
if (!is_iterable($keys)) {
|
| 231 |
-
throw new InvalidArgumentException('List of keys is not an iterable value');
|
| 232 |
-
}
|
| 233 |
-
|
| 234 |
-
foreach ($keys as $key) {
|
| 235 |
-
$this->delete($key);
|
| 236 |
-
}
|
| 237 |
-
|
| 238 |
-
return true;
|
| 239 |
-
}
|
| 240 |
-
|
| 241 |
-
/**
|
| 242 |
-
* @inheritDoc
|
| 243 |
-
*
|
| 244 |
-
* @throws CacheException If problem determining.
|
| 245 |
-
*/
|
| 246 |
-
public function has($key)
|
| 247 |
-
{
|
| 248 |
-
$default = $this->defaultValue;
|
| 249 |
-
$value = $this->get($key, $default);
|
| 250 |
-
|
| 251 |
-
return $value !== $default;
|
| 252 |
-
}
|
| 253 |
-
|
| 254 |
-
/**
|
| 255 |
-
* Retrieves a transient value, by key.
|
| 256 |
-
*
|
| 257 |
-
* @param string $key The transient key.
|
| 258 |
-
*
|
| 259 |
-
* @return mixed The transient value.
|
| 260 |
-
*
|
| 261 |
-
* @throws RangeException If transient for key not found.
|
| 262 |
-
* @throws RuntimeException If problem retrieving.
|
| 263 |
-
*/
|
| 264 |
-
protected function getTransient(string $key)
|
| 265 |
-
{
|
| 266 |
-
$value = $this->getTransientOriginal($key);
|
| 267 |
-
|
| 268 |
-
if ($value !== false) {
|
| 269 |
-
return $value;
|
| 270 |
-
}
|
| 271 |
-
|
| 272 |
-
$prefix = static::OPTION_NAME_PREFIX_TRANSIENT;
|
| 273 |
-
$optionKey = "{$prefix}{$key}";
|
| 274 |
-
|
| 275 |
-
try {
|
| 276 |
-
$this->getOption($optionKey);
|
| 277 |
-
} catch (RangeException $e) {
|
| 278 |
-
throw new RangeException(sprintf('Transient for key "%1$s" does not exist', $key), 0, $e);
|
| 279 |
-
} catch (RuntimeException $e) {
|
| 280 |
-
throw new RuntimeException(sprintf('Could not verify existence of transient "%1$s"', $key), 0, $e);
|
| 281 |
-
}
|
| 282 |
-
|
| 283 |
-
return $value;
|
| 284 |
-
}
|
| 285 |
-
|
| 286 |
-
/**
|
| 287 |
-
* Retrieves a transient value as is.
|
| 288 |
-
*
|
| 289 |
-
* @param string $key The transient key.
|
| 290 |
-
*
|
| 291 |
-
* @return mixed The transient value.
|
| 292 |
-
*/
|
| 293 |
-
protected function getTransientOriginal(string $key)
|
| 294 |
-
{
|
| 295 |
-
$value = get_transient($key);
|
| 296 |
-
|
| 297 |
-
return $value;
|
| 298 |
-
}
|
| 299 |
-
|
| 300 |
-
/**
|
| 301 |
-
* Assigns a transient value, by key.
|
| 302 |
-
*
|
| 303 |
-
* @param string $key The transient key.
|
| 304 |
-
* @param mixed $value The transient value. Any serializable object.
|
| 305 |
-
* @param int $ttl The amount of seconds after which the transient will expire.
|
| 306 |
-
*
|
| 307 |
-
* @throws RangeException If key invalid.
|
| 308 |
-
* @throws RuntimeException If problem setting.
|
| 309 |
-
*/
|
| 310 |
-
protected function setTransient(string $key, $value, int $ttl): void
|
| 311 |
-
{
|
| 312 |
-
$this->validateTransientKey($key);
|
| 313 |
-
|
| 314 |
-
if(!set_transient($key, $value, $ttl)) {
|
| 315 |
-
throw new RuntimeException(sprintf('set_transient() failed with key "%1$s" with TTL %2$ss', $key, $ttl));
|
| 316 |
-
}
|
| 317 |
-
}
|
| 318 |
-
|
| 319 |
-
/**
|
| 320 |
-
* Retrieves an option value by name.
|
| 321 |
-
*
|
| 322 |
-
* @param string $key The option name.
|
| 323 |
-
*
|
| 324 |
-
* @return mixed The option value.
|
| 325 |
-
*
|
| 326 |
-
* @throws RangeException If option value does not exist.
|
| 327 |
-
* @throws RuntimeException If problem retrieving option.
|
| 328 |
-
*/
|
| 329 |
-
protected function getOption(string $key)
|
| 330 |
-
{
|
| 331 |
-
$errorValue = $this->defaultValue;
|
| 332 |
-
$value = $this->getOptionOriginal($key, $errorValue);
|
| 333 |
-
|
| 334 |
-
if ($value === $errorValue) {
|
| 335 |
-
throw new RangeException(sprintf('Option for key "%1$s" does not exist', $key));
|
| 336 |
-
}
|
| 337 |
-
|
| 338 |
-
return $value;
|
| 339 |
-
}
|
| 340 |
-
|
| 341 |
-
/**
|
| 342 |
-
* Retrieves an option value by name.
|
| 343 |
-
*
|
| 344 |
-
* @param string $key The option key.
|
| 345 |
-
* @param null $default The value to return if option not found.
|
| 346 |
-
*
|
| 347 |
-
* @return mixed The option value.
|
| 348 |
-
*/
|
| 349 |
-
protected function getOptionOriginal(string $key, $default = null)
|
| 350 |
-
{
|
| 351 |
-
return get_option($key, $default);
|
| 352 |
-
}
|
| 353 |
-
|
| 354 |
-
/**
|
| 355 |
-
* Deletes a transient with the specified key.
|
| 356 |
-
*
|
| 357 |
-
* @param string $key The key to delete a transient for.
|
| 358 |
-
*
|
| 359 |
-
* @throws RuntimeException If problem deleting.
|
| 360 |
-
*/
|
| 361 |
-
protected function deleteTransient(string $key): void
|
| 362 |
-
{
|
| 363 |
-
if (!delete_transient($key)) {
|
| 364 |
-
throw new RuntimeException(sprintf('delete_transient() failed for key "%1$s"', $key));
|
| 365 |
-
}
|
| 366 |
-
}
|
| 367 |
-
|
| 368 |
-
/**
|
| 369 |
-
* Validates a cache key.
|
| 370 |
-
*
|
| 371 |
-
* @param string $key The key to validate.
|
| 372 |
-
*
|
| 373 |
-
* @throws InvalidArgumentException If key is invalid.
|
| 374 |
-
*/
|
| 375 |
-
protected function validateKey(string $key)
|
| 376 |
-
{
|
| 377 |
-
$prefix = $this->getTimeoutOptionNamePrefix();
|
| 378 |
-
if (strlen("{$prefix}{$key}") > static::OPTION_NAME_MAX_LENGTH) {
|
| 379 |
-
throw new InvalidArgumentException(sprintf(
|
| 380 |
-
'Given the %1$d char length of this cache pool\'s name, the key length must not exceed %2$d chars',
|
| 381 |
-
strlen($this->poolName),
|
| 382 |
-
static::OPTION_NAME_MAX_LENGTH - strlen($prefix)
|
| 383 |
-
));
|
| 384 |
-
}
|
| 385 |
-
|
| 386 |
-
$reservedSymbols = str_split(static::RESERVED_KEY_SYMBOLS, 1);
|
| 387 |
-
|
| 388 |
-
foreach ($reservedSymbols as $symbol) {
|
| 389 |
-
if (strpos($key, $symbol) !== false) {
|
| 390 |
-
throw new InvalidArgumentException(sprintf('Cache key "%1$s" is invalid', $key));
|
| 391 |
-
}
|
| 392 |
-
}
|
| 393 |
-
}
|
| 394 |
-
|
| 395 |
-
/**
|
| 396 |
-
* Validates a transient key.
|
| 397 |
-
*
|
| 398 |
-
* @param string $key The key to validate.
|
| 399 |
-
*
|
| 400 |
-
* @throws RangeException If key is invalid.
|
| 401 |
-
*/
|
| 402 |
-
protected function validateTransientKey(string $key): void
|
| 403 |
-
{
|
| 404 |
-
$maxLength = $this->getTransientKeyMaxLength();
|
| 405 |
-
$keyLength = strlen($key);
|
| 406 |
-
if ($keyLength > $maxLength) {
|
| 407 |
-
throw new RangeException(sprintf('Transient key "%1$s" length is %2$d chars, which exceeds max length of %3$d chars', $key, $keyLength, $maxLength));
|
| 408 |
-
}
|
| 409 |
-
}
|
| 410 |
-
|
| 411 |
-
/**
|
| 412 |
-
* Retrieves the amount of characters at most allowed in a transient key.
|
| 413 |
-
*
|
| 414 |
-
* @return int The amount of characters.
|
| 415 |
-
*/
|
| 416 |
-
protected function getTransientKeyMaxLength(): int
|
| 417 |
-
{
|
| 418 |
-
$longestPrefix = $this->getTransientTimeoutOptionNamePrefix();
|
| 419 |
-
$keyMaxLength = static::OPTION_NAME_MAX_LENGTH - strlen($longestPrefix);
|
| 420 |
-
|
| 421 |
-
return $keyMaxLength;
|
| 422 |
-
}
|
| 423 |
-
|
| 424 |
-
/**
|
| 425 |
-
* Prepares a cache key, giving it a namespace.
|
| 426 |
-
*
|
| 427 |
-
* @param string $key The key to prepare.
|
| 428 |
-
*
|
| 429 |
-
* @return string The prepared key.
|
| 430 |
-
*/
|
| 431 |
-
protected function prepareKey(string $key): string
|
| 432 |
-
{
|
| 433 |
-
$namespace = $this->poolName;
|
| 434 |
-
$separator = static::NAMESPACE_SEPARATOR;
|
| 435 |
-
return "{$namespace}{$separator}{$key}";
|
| 436 |
-
}
|
| 437 |
-
|
| 438 |
-
/**
|
| 439 |
-
* Retrieves all keys that correspond to this cache pool.
|
| 440 |
-
*
|
| 441 |
-
* @throws Exception If problem retrieving.
|
| 442 |
-
*
|
| 443 |
-
* @return iterable A list of keys.
|
| 444 |
-
*/
|
| 445 |
-
protected function getAllKeys(): iterable
|
| 446 |
-
{
|
| 447 |
-
$tableName = $this->getTableName(static::TABLE_NAME_OPTIONS);
|
| 448 |
-
$fieldName = static::FIELD_NAME_OPTION_NAME;
|
| 449 |
-
$prefix = $this->getOptionNamePrefix();
|
| 450 |
-
$query = "SELECT `$fieldName` FROM `$tableName` WHERE `$fieldName` LIKE '%$prefix'";
|
| 451 |
-
$results = $this->selectColumn($query, $fieldName);
|
| 452 |
-
$keys = $this->getCacheKeysFromOptionNames($results);
|
| 453 |
-
|
| 454 |
-
return $keys;
|
| 455 |
-
}
|
| 456 |
-
|
| 457 |
-
/**
|
| 458 |
-
* Runs a SELECT query, and retrieves a list of values for a field with the specified name.
|
| 459 |
-
*
|
| 460 |
-
* @param string $query The SELECT query.
|
| 461 |
-
* @param string $columnName The name of the field to retrieve.
|
| 462 |
-
* @param array $args Query parameters.
|
| 463 |
-
*
|
| 464 |
-
* @return iterable The list of values for the specified field.
|
| 465 |
-
*/
|
| 466 |
-
protected function selectColumn(string $query, string $columnName, array $args = []): iterable
|
| 467 |
-
{
|
| 468 |
-
$query = $this->prepareQuery($query, $args);
|
| 469 |
-
$results = $this->wpdb->get_col($query, $columnName);
|
| 470 |
-
|
| 471 |
-
return $results;
|
| 472 |
-
}
|
| 473 |
-
|
| 474 |
-
/**
|
| 475 |
-
* Retrieve the name of a DB table by its identifier.
|
| 476 |
-
*
|
| 477 |
-
* @param string $identifier The table identifier.
|
| 478 |
-
*
|
| 479 |
-
* @return string The table name in the DB.
|
| 480 |
-
*/
|
| 481 |
-
protected function getTableName(string $identifier): string
|
| 482 |
-
{
|
| 483 |
-
$prefix = $this->wpdb->prefix;
|
| 484 |
-
$tableName = "{$prefix}{$identifier}";
|
| 485 |
-
|
| 486 |
-
return $tableName;
|
| 487 |
-
}
|
| 488 |
-
|
| 489 |
-
/**
|
| 490 |
-
* Prepares a parameterized query.
|
| 491 |
-
*
|
| 492 |
-
* @param string $query The query to prepare. May include placeholders.
|
| 493 |
-
* @param array $params The parameters that will replace corresponding placeholders in the query.
|
| 494 |
-
*
|
| 495 |
-
* @return string The prepared query. Parameters will be interpolated.
|
| 496 |
-
*/
|
| 497 |
-
protected function prepareQuery(string $query, array $params = []): string
|
| 498 |
-
{
|
| 499 |
-
if (empty($params)) {
|
| 500 |
-
return $query;
|
| 501 |
-
}
|
| 502 |
-
|
| 503 |
-
$prepared = $this->wpdb->prepare($query, ...$params);
|
| 504 |
-
|
| 505 |
-
return $prepared;
|
| 506 |
-
}
|
| 507 |
-
|
| 508 |
-
/**
|
| 509 |
-
* Retrieves all cache keys that correspond to the given list of option names
|
| 510 |
-
*
|
| 511 |
-
* @param iterable $optionNames
|
| 512 |
-
*
|
| 513 |
-
* @throws Exception If problem retrieving.
|
| 514 |
-
*
|
| 515 |
-
* @return iterable A list of cache keys.
|
| 516 |
-
*/
|
| 517 |
-
protected function getCacheKeysFromOptionNames(iterable $optionNames): iterable
|
| 518 |
-
{
|
| 519 |
-
$keys = [];
|
| 520 |
-
|
| 521 |
-
foreach ($optionNames as $name) {
|
| 522 |
-
$key = $this->getCacheKeyFromOptionName($name);
|
| 523 |
-
$keys[] = $key;
|
| 524 |
-
}
|
| 525 |
-
|
| 526 |
-
return $keys;
|
| 527 |
-
}
|
| 528 |
-
|
| 529 |
-
/**
|
| 530 |
-
* Retrieves the prefix of option names that represent transients of this cache pool.
|
| 531 |
-
*
|
| 532 |
-
* @return string The prefix.
|
| 533 |
-
*/
|
| 534 |
-
protected function getOptionNamePrefix(): string
|
| 535 |
-
{
|
| 536 |
-
$transientPrefix = static::OPTION_NAME_PREFIX_TRANSIENT;
|
| 537 |
-
$separator = static::NAMESPACE_SEPARATOR;
|
| 538 |
-
$namespace = $this->poolName;
|
| 539 |
-
$prefix = "{$transientPrefix}{$namespace}{$separator}";
|
| 540 |
-
|
| 541 |
-
return $prefix;
|
| 542 |
-
}
|
| 543 |
-
|
| 544 |
-
/**
|
| 545 |
-
* Retrieves the prefix of option names that represent transient timeouts of this cache pool.
|
| 546 |
-
*
|
| 547 |
-
* @return string The prefix.
|
| 548 |
-
*/
|
| 549 |
-
protected function getTimeoutOptionNamePrefix(): string
|
| 550 |
-
{
|
| 551 |
-
$transientPrefix = $this->getTransientTimeoutOptionNamePrefix();
|
| 552 |
-
$separator = static::NAMESPACE_SEPARATOR;
|
| 553 |
-
$namespace = $this->poolName;
|
| 554 |
-
$prefix = "{$transientPrefix}{$namespace}{$separator}";
|
| 555 |
-
|
| 556 |
-
return $prefix;
|
| 557 |
-
}
|
| 558 |
-
|
| 559 |
-
/**
|
| 560 |
-
* Retrieves the prefix of an option name that represents a transient timeout.
|
| 561 |
-
*
|
| 562 |
-
* This is the longest prefix of transient options.
|
| 563 |
-
*
|
| 564 |
-
* @return string The prefix.
|
| 565 |
-
*/
|
| 566 |
-
protected function getTransientTimeoutOptionNamePrefix(): string
|
| 567 |
-
{
|
| 568 |
-
return static::OPTION_NAME_PREFIX_TRANSIENT . static::OPTION_NAME_PREFIX_TIMEOUT;
|
| 569 |
-
}
|
| 570 |
-
|
| 571 |
-
/**
|
| 572 |
-
* Retrieves the cache key that corresponds to the specified option name.
|
| 573 |
-
*
|
| 574 |
-
* @param string $name The option name.
|
| 575 |
-
*
|
| 576 |
-
* @return string The cache key.
|
| 577 |
-
*
|
| 578 |
-
* @throws Exception If problem determining key.
|
| 579 |
-
*/
|
| 580 |
-
protected function getCacheKeyFromOptionName(string $name): string
|
| 581 |
-
{
|
| 582 |
-
$prefix = $this->getOptionNamePrefix();
|
| 583 |
-
|
| 584 |
-
if (strpos($name, $prefix) !== 0) {
|
| 585 |
-
throw new RangeException(sprintf('Option name "%1$s" is not formed according to this cache pool', $name));
|
| 586 |
-
}
|
| 587 |
-
|
| 588 |
-
$key = substr($name, strlen($prefix));
|
| 589 |
-
|
| 590 |
-
return $key;
|
| 591 |
-
}
|
| 592 |
-
|
| 593 |
-
/**
|
| 594 |
-
* Retrieves the total duration from an interval.
|
| 595 |
-
*
|
| 596 |
-
* @param DateInterval $interval The interval.
|
| 597 |
-
*
|
| 598 |
-
* @throws Exception If problem retrieving.
|
| 599 |
-
*
|
| 600 |
-
* @return int The duration in seconds.
|
| 601 |
-
*/
|
| 602 |
-
protected function getIntervalDuration(DateInterval $interval): int
|
| 603 |
-
{
|
| 604 |
-
$reference = new DateTimeImmutable();
|
| 605 |
-
$endTime = $reference->add($interval);
|
| 606 |
-
|
| 607 |
-
return $endTime->getTimestamp() - $reference->getTimestamp();
|
| 608 |
-
}
|
| 609 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/wp-oop/transient-cache/src/CachePoolFactory.php
DELETED
|
@@ -1,46 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
declare(strict_types=1);
|
| 3 |
-
|
| 4 |
-
namespace WpOop\TransientCache;
|
| 5 |
-
|
| 6 |
-
use DateInterval;
|
| 7 |
-
use Psr\SimpleCache\CacheInterface;
|
| 8 |
-
use wpdb;
|
| 9 |
-
|
| 10 |
-
use function uniqid;
|
| 11 |
-
|
| 12 |
-
/**
|
| 13 |
-
* @inheritDoc
|
| 14 |
-
*/
|
| 15 |
-
class CachePoolFactory implements CachePoolFactoryInterface
|
| 16 |
-
{
|
| 17 |
-
/**
|
| 18 |
-
* @var wpdb
|
| 19 |
-
*/
|
| 20 |
-
protected $wpdb;
|
| 21 |
-
/**
|
| 22 |
-
* @var int|DateInterval
|
| 23 |
-
*/
|
| 24 |
-
protected $defaultTtl;
|
| 25 |
-
|
| 26 |
-
/**
|
| 27 |
-
* @param wpdb $wpdb The WP database adapter.
|
| 28 |
-
* @param int $defaultTtl The TTL to use if no TTL is supplied at consumption time.
|
| 29 |
-
*/
|
| 30 |
-
public function __construct(wpdb $wpdb, $defaultTtl = 0)
|
| 31 |
-
{
|
| 32 |
-
$this->wpdb = $wpdb;
|
| 33 |
-
$this->defaultTtl = $defaultTtl;
|
| 34 |
-
}
|
| 35 |
-
|
| 36 |
-
/**
|
| 37 |
-
* @inheritDoc
|
| 38 |
-
*/
|
| 39 |
-
public function createCachePool(string $poolName): CacheInterface
|
| 40 |
-
{
|
| 41 |
-
$default = uniqid('default');
|
| 42 |
-
$pool = new CachePool($this->wpdb, $poolName, $default, $this->defaultTtl);
|
| 43 |
-
|
| 44 |
-
return $pool;
|
| 45 |
-
}
|
| 46 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/wp-oop/transient-cache/src/CachePoolFactoryInterface.php
DELETED
|
@@ -1,21 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
declare(strict_types=1);
|
| 3 |
-
|
| 4 |
-
namespace WpOop\TransientCache;
|
| 5 |
-
|
| 6 |
-
use Psr\SimpleCache\CacheInterface;
|
| 7 |
-
|
| 8 |
-
/**
|
| 9 |
-
* A factory that can create cache pool.
|
| 10 |
-
*/
|
| 11 |
-
interface CachePoolFactoryInterface
|
| 12 |
-
{
|
| 13 |
-
/**
|
| 14 |
-
* Creates a new cache pool.
|
| 15 |
-
*
|
| 16 |
-
* @param string $poolName The unique pool name.
|
| 17 |
-
*
|
| 18 |
-
* @return CacheInterface The new pool.
|
| 19 |
-
*/
|
| 20 |
-
public function createCachePool(string $poolName): CacheInterface;
|
| 21 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/wp-oop/transient-cache/src/Exception/CacheException.php
DELETED
|
@@ -1,14 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
declare(strict_types=1);
|
| 3 |
-
|
| 4 |
-
namespace WpOop\TransientCache\Exception;
|
| 5 |
-
|
| 6 |
-
use Exception;
|
| 7 |
-
use Psr\SimpleCache\CacheException as CacheExceptionInterface;
|
| 8 |
-
|
| 9 |
-
/**
|
| 10 |
-
* @inheritDoc
|
| 11 |
-
*/
|
| 12 |
-
class CacheException extends Exception implements CacheExceptionInterface
|
| 13 |
-
{
|
| 14 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/wp-oop/transient-cache/src/Exception/InvalidArgumentException.php
DELETED
|
@@ -1,14 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
declare(strict_types=1);
|
| 3 |
-
|
| 4 |
-
namespace WpOop\TransientCache\Exception;
|
| 5 |
-
|
| 6 |
-
use InvalidArgumentException as NativeInvalidArgumentException;
|
| 7 |
-
use Psr\SimpleCache\InvalidArgumentException as PsrInvalidArgumentException;
|
| 8 |
-
|
| 9 |
-
/**
|
| 10 |
-
* @inheritDoc
|
| 11 |
-
*/
|
| 12 |
-
class InvalidArgumentException extends NativeInvalidArgumentException implements PsrInvalidArgumentException
|
| 13 |
-
{
|
| 14 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/wp-oop/transient-cache/src/SilentPool.php
DELETED
|
@@ -1,154 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
declare(strict_types=1);
|
| 3 |
-
|
| 4 |
-
namespace WpOop\TransientCache;
|
| 5 |
-
|
| 6 |
-
use Exception;
|
| 7 |
-
use Psr\SimpleCache\InvalidArgumentException as InvalidArgumentExceptionInterface;
|
| 8 |
-
use Psr\SimpleCache\CacheInterface;
|
| 9 |
-
|
| 10 |
-
/**
|
| 11 |
-
* Wraps a pool that throws wrong exceptions in a 100% PSR-compliant one by hiding exceptions :(
|
| 12 |
-
*
|
| 13 |
-
* Homage to excellent SilentPool gin.
|
| 14 |
-
*/
|
| 15 |
-
class SilentPool implements CacheInterface
|
| 16 |
-
{
|
| 17 |
-
/**
|
| 18 |
-
* @var CacheInterface
|
| 19 |
-
*/
|
| 20 |
-
protected $cache;
|
| 21 |
-
|
| 22 |
-
/**
|
| 23 |
-
* @param CacheInterface $cache A possibly non-compliant cache pool.
|
| 24 |
-
*/
|
| 25 |
-
public function __construct(CacheInterface $cache)
|
| 26 |
-
{
|
| 27 |
-
$this->cache = $cache;
|
| 28 |
-
}
|
| 29 |
-
|
| 30 |
-
/**
|
| 31 |
-
* @inheritDoc
|
| 32 |
-
*/
|
| 33 |
-
public function get($key, $default = null)
|
| 34 |
-
{
|
| 35 |
-
try {
|
| 36 |
-
return $this->cache->get($key);
|
| 37 |
-
} catch (Exception $e) {
|
| 38 |
-
if ($e instanceof InvalidArgumentExceptionInterface) {
|
| 39 |
-
throw $e;
|
| 40 |
-
}
|
| 41 |
-
|
| 42 |
-
return $default;
|
| 43 |
-
}
|
| 44 |
-
}
|
| 45 |
-
|
| 46 |
-
/**
|
| 47 |
-
* @inheritDoc
|
| 48 |
-
*/
|
| 49 |
-
public function set($key, $value, $ttl = null)
|
| 50 |
-
{
|
| 51 |
-
try {
|
| 52 |
-
return $this->cache->set($key, $value, $ttl);
|
| 53 |
-
} catch (Exception $e) {
|
| 54 |
-
if ($e instanceof InvalidArgumentExceptionInterface) {
|
| 55 |
-
throw $e;
|
| 56 |
-
}
|
| 57 |
-
|
| 58 |
-
return false;
|
| 59 |
-
}
|
| 60 |
-
}
|
| 61 |
-
|
| 62 |
-
/**
|
| 63 |
-
* @inheritDoc
|
| 64 |
-
*/
|
| 65 |
-
public function delete($key)
|
| 66 |
-
{
|
| 67 |
-
try {
|
| 68 |
-
return $this->cache->delete($key);
|
| 69 |
-
} catch (Exception $e) {
|
| 70 |
-
if ($e instanceof InvalidArgumentExceptionInterface) {
|
| 71 |
-
throw $e;
|
| 72 |
-
}
|
| 73 |
-
|
| 74 |
-
return false;
|
| 75 |
-
}
|
| 76 |
-
}
|
| 77 |
-
|
| 78 |
-
/**
|
| 79 |
-
* @inheritDoc
|
| 80 |
-
*/
|
| 81 |
-
public function clear()
|
| 82 |
-
{
|
| 83 |
-
try {
|
| 84 |
-
return $this->cache->clear();
|
| 85 |
-
} catch (Exception $e) {
|
| 86 |
-
|
| 87 |
-
return false;
|
| 88 |
-
}
|
| 89 |
-
}
|
| 90 |
-
|
| 91 |
-
/**
|
| 92 |
-
* @inheritDoc
|
| 93 |
-
*/
|
| 94 |
-
public function getMultiple($keys, $default = null)
|
| 95 |
-
{
|
| 96 |
-
try {
|
| 97 |
-
return $this->cache->getMultiple($keys, $default);
|
| 98 |
-
} catch (Exception $e) {
|
| 99 |
-
if ($e instanceof InvalidArgumentExceptionInterface) {
|
| 100 |
-
throw $e;
|
| 101 |
-
}
|
| 102 |
-
|
| 103 |
-
return [];
|
| 104 |
-
}
|
| 105 |
-
}
|
| 106 |
-
|
| 107 |
-
/**
|
| 108 |
-
* @inheritDoc
|
| 109 |
-
*/
|
| 110 |
-
public function setMultiple($values, $ttl = null)
|
| 111 |
-
{
|
| 112 |
-
try {
|
| 113 |
-
return $this->cache->setMultiple($values, $ttl);
|
| 114 |
-
} catch (Exception $e) {
|
| 115 |
-
if ($e instanceof InvalidArgumentExceptionInterface) {
|
| 116 |
-
throw $e;
|
| 117 |
-
}
|
| 118 |
-
|
| 119 |
-
return false;
|
| 120 |
-
}
|
| 121 |
-
}
|
| 122 |
-
|
| 123 |
-
/**
|
| 124 |
-
* @inheritDoc
|
| 125 |
-
*/
|
| 126 |
-
public function deleteMultiple($keys)
|
| 127 |
-
{
|
| 128 |
-
try {
|
| 129 |
-
return $this->cache->deleteMultiple($keys);
|
| 130 |
-
} catch (Exception $e) {
|
| 131 |
-
if ($e instanceof InvalidArgumentExceptionInterface) {
|
| 132 |
-
throw $e;
|
| 133 |
-
}
|
| 134 |
-
|
| 135 |
-
return false;
|
| 136 |
-
}
|
| 137 |
-
}
|
| 138 |
-
|
| 139 |
-
/**
|
| 140 |
-
* @inheritDoc
|
| 141 |
-
*/
|
| 142 |
-
public function has($key)
|
| 143 |
-
{
|
| 144 |
-
try {
|
| 145 |
-
return $this->cache->has($key);
|
| 146 |
-
} catch (Exception $e) {
|
| 147 |
-
if ($e instanceof InvalidArgumentExceptionInterface) {
|
| 148 |
-
throw $e;
|
| 149 |
-
}
|
| 150 |
-
|
| 151 |
-
return false;
|
| 152 |
-
}
|
| 153 |
-
}
|
| 154 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/wp-oop/transient-cache/src/SilentPoolFactory.php
DELETED
|
@@ -1,33 +0,0 @@
|
|
| 1 |
-
<?php
|
| 2 |
-
declare(strict_types=1);
|
| 3 |
-
|
| 4 |
-
namespace WpOop\TransientCache;
|
| 5 |
-
|
| 6 |
-
use Psr\SimpleCache\CacheInterface;
|
| 7 |
-
|
| 8 |
-
/**
|
| 9 |
-
* Creates cache pools that throw only PSR-legal exceptions.
|
| 10 |
-
*/
|
| 11 |
-
class SilentPoolFactory implements CachePoolFactoryInterface
|
| 12 |
-
{
|
| 13 |
-
/**
|
| 14 |
-
* @var CachePoolFactoryInterface
|
| 15 |
-
*/
|
| 16 |
-
protected $factory;
|
| 17 |
-
|
| 18 |
-
/**
|
| 19 |
-
* @param CachePoolFactoryInterface $factory A factory of possibly non-compliant cache pools.
|
| 20 |
-
*/
|
| 21 |
-
public function __construct(CachePoolFactoryInterface $factory)
|
| 22 |
-
{
|
| 23 |
-
$this->factory = $factory;
|
| 24 |
-
}
|
| 25 |
-
|
| 26 |
-
/**
|
| 27 |
-
* @inheritDoc
|
| 28 |
-
*/
|
| 29 |
-
public function createCachePool(string $poolName): CacheInterface
|
| 30 |
-
{
|
| 31 |
-
return new SilentPool($this->factory->createCachePool($poolName));
|
| 32 |
-
}
|
| 33 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
woocommerce-paypal-payments.php
CHANGED
|
@@ -3,7 +3,7 @@
|
|
| 3 |
* Plugin Name: WooCommerce PayPal Payments
|
| 4 |
* Plugin URI: https://woocommerce.com/products/woocommerce-paypal-payments/
|
| 5 |
* Description: PayPal's latest complete payments processing solution. Accept PayPal, PayPal Credit, credit/debit cards, alternative digital wallets local payment types and bank accounts. Turn on only PayPal options or process a full suite of payment methods. Enable global transaction with extensive currency and country coverage.
|
| 6 |
-
* Version: 1.0.
|
| 7 |
* Author: WooCommerce
|
| 8 |
* Author URI: https://woocommerce.com/
|
| 9 |
* License: GPL-2.0
|
| 3 |
* Plugin Name: WooCommerce PayPal Payments
|
| 4 |
* Plugin URI: https://woocommerce.com/products/woocommerce-paypal-payments/
|
| 5 |
* Description: PayPal's latest complete payments processing solution. Accept PayPal, PayPal Credit, credit/debit cards, alternative digital wallets local payment types and bank accounts. Turn on only PayPal options or process a full suite of payment methods. Enable global transaction with extensive currency and country coverage.
|
| 6 |
+
* Version: 1.0.2
|
| 7 |
* Author: WooCommerce
|
| 8 |
* Author URI: https://woocommerce.com/
|
| 9 |
* License: GPL-2.0
|
