├── .gitignore ├── README.md ├── composer.json ├── composer.lock ├── docker-compose.yml ├── phpunit.xml ├── src └── Logger │ └── MyLogger.php ├── strategy_image.png └── tests ├── MyLoggerTest.php └── fixtures ├── log_error.txt └── log_warning.txt /.gitignore: -------------------------------------------------------------------------------- 1 | vendor/ 2 | .phpunit.cache -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DesignPatternsPHP-Strategy 2 | Exemplo de implementação Strategy para o canal DifferDev 3 | 4 | ## Link do vídeo 5 | [Strategy em PHP 8](https://youtu.be/DTgzrHxUnaU) 6 | 7 | ## Imagem de exemplo 8 | ![Strategy Imagem](strategy_image.png) 9 | 10 | ## Link do cadastro para o material 11 | [Design Patterns Catálogo](https://docs.google.com/forms/d/1yN3KJBi_uRGy5yZbV1q4flnAlG-LfbcdRrwnmBra2-0) -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "autoload": { 3 | "psr-4": { 4 | "DifferDev\\": "src/" 5 | } 6 | }, 7 | "require": { 8 | "phpunit/phpunit": "^9.5" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "de098541b0cfbf244e2152476853564e", 8 | "packages": [ 9 | { 10 | "name": "doctrine/instantiator", 11 | "version": "1.4.1", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/doctrine/instantiator.git", 15 | "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", 20 | "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": "^7.1 || ^8.0" 25 | }, 26 | "require-dev": { 27 | "doctrine/coding-standard": "^9", 28 | "ext-pdo": "*", 29 | "ext-phar": "*", 30 | "phpbench/phpbench": "^0.16 || ^1", 31 | "phpstan/phpstan": "^1.4", 32 | "phpstan/phpstan-phpunit": "^1", 33 | "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", 34 | "vimeo/psalm": "^4.22" 35 | }, 36 | "type": "library", 37 | "autoload": { 38 | "psr-4": { 39 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 40 | } 41 | }, 42 | "notification-url": "https://packagist.org/downloads/", 43 | "license": [ 44 | "MIT" 45 | ], 46 | "authors": [ 47 | { 48 | "name": "Marco Pivetta", 49 | "email": "ocramius@gmail.com", 50 | "homepage": "https://ocramius.github.io/" 51 | } 52 | ], 53 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 54 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html", 55 | "keywords": [ 56 | "constructor", 57 | "instantiate" 58 | ], 59 | "support": { 60 | "issues": "https://github.com/doctrine/instantiator/issues", 61 | "source": "https://github.com/doctrine/instantiator/tree/1.4.1" 62 | }, 63 | "funding": [ 64 | { 65 | "url": "https://www.doctrine-project.org/sponsorship.html", 66 | "type": "custom" 67 | }, 68 | { 69 | "url": "https://www.patreon.com/phpdoctrine", 70 | "type": "patreon" 71 | }, 72 | { 73 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", 74 | "type": "tidelift" 75 | } 76 | ], 77 | "time": "2022-03-03T08:28:38+00:00" 78 | }, 79 | { 80 | "name": "myclabs/deep-copy", 81 | "version": "1.11.0", 82 | "source": { 83 | "type": "git", 84 | "url": "https://github.com/myclabs/DeepCopy.git", 85 | "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" 86 | }, 87 | "dist": { 88 | "type": "zip", 89 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", 90 | "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", 91 | "shasum": "" 92 | }, 93 | "require": { 94 | "php": "^7.1 || ^8.0" 95 | }, 96 | "conflict": { 97 | "doctrine/collections": "<1.6.8", 98 | "doctrine/common": "<2.13.3 || >=3,<3.2.2" 99 | }, 100 | "require-dev": { 101 | "doctrine/collections": "^1.6.8", 102 | "doctrine/common": "^2.13.3 || ^3.2.2", 103 | "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" 104 | }, 105 | "type": "library", 106 | "autoload": { 107 | "files": [ 108 | "src/DeepCopy/deep_copy.php" 109 | ], 110 | "psr-4": { 111 | "DeepCopy\\": "src/DeepCopy/" 112 | } 113 | }, 114 | "notification-url": "https://packagist.org/downloads/", 115 | "license": [ 116 | "MIT" 117 | ], 118 | "description": "Create deep copies (clones) of your objects", 119 | "keywords": [ 120 | "clone", 121 | "copy", 122 | "duplicate", 123 | "object", 124 | "object graph" 125 | ], 126 | "support": { 127 | "issues": "https://github.com/myclabs/DeepCopy/issues", 128 | "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" 129 | }, 130 | "funding": [ 131 | { 132 | "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", 133 | "type": "tidelift" 134 | } 135 | ], 136 | "time": "2022-03-03T13:19:32+00:00" 137 | }, 138 | { 139 | "name": "nikic/php-parser", 140 | "version": "v4.13.2", 141 | "source": { 142 | "type": "git", 143 | "url": "https://github.com/nikic/PHP-Parser.git", 144 | "reference": "210577fe3cf7badcc5814d99455df46564f3c077" 145 | }, 146 | "dist": { 147 | "type": "zip", 148 | "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", 149 | "reference": "210577fe3cf7badcc5814d99455df46564f3c077", 150 | "shasum": "" 151 | }, 152 | "require": { 153 | "ext-tokenizer": "*", 154 | "php": ">=7.0" 155 | }, 156 | "require-dev": { 157 | "ircmaxell/php-yacc": "^0.0.7", 158 | "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" 159 | }, 160 | "bin": [ 161 | "bin/php-parse" 162 | ], 163 | "type": "library", 164 | "extra": { 165 | "branch-alias": { 166 | "dev-master": "4.9-dev" 167 | } 168 | }, 169 | "autoload": { 170 | "psr-4": { 171 | "PhpParser\\": "lib/PhpParser" 172 | } 173 | }, 174 | "notification-url": "https://packagist.org/downloads/", 175 | "license": [ 176 | "BSD-3-Clause" 177 | ], 178 | "authors": [ 179 | { 180 | "name": "Nikita Popov" 181 | } 182 | ], 183 | "description": "A PHP parser written in PHP", 184 | "keywords": [ 185 | "parser", 186 | "php" 187 | ], 188 | "support": { 189 | "issues": "https://github.com/nikic/PHP-Parser/issues", 190 | "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" 191 | }, 192 | "time": "2021-11-30T19:35:32+00:00" 193 | }, 194 | { 195 | "name": "phar-io/manifest", 196 | "version": "2.0.3", 197 | "source": { 198 | "type": "git", 199 | "url": "https://github.com/phar-io/manifest.git", 200 | "reference": "97803eca37d319dfa7826cc2437fc020857acb53" 201 | }, 202 | "dist": { 203 | "type": "zip", 204 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", 205 | "reference": "97803eca37d319dfa7826cc2437fc020857acb53", 206 | "shasum": "" 207 | }, 208 | "require": { 209 | "ext-dom": "*", 210 | "ext-phar": "*", 211 | "ext-xmlwriter": "*", 212 | "phar-io/version": "^3.0.1", 213 | "php": "^7.2 || ^8.0" 214 | }, 215 | "type": "library", 216 | "extra": { 217 | "branch-alias": { 218 | "dev-master": "2.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 | "support": { 249 | "issues": "https://github.com/phar-io/manifest/issues", 250 | "source": "https://github.com/phar-io/manifest/tree/2.0.3" 251 | }, 252 | "time": "2021-07-20T11:28:43+00:00" 253 | }, 254 | { 255 | "name": "phar-io/version", 256 | "version": "3.2.1", 257 | "source": { 258 | "type": "git", 259 | "url": "https://github.com/phar-io/version.git", 260 | "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" 261 | }, 262 | "dist": { 263 | "type": "zip", 264 | "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", 265 | "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", 266 | "shasum": "" 267 | }, 268 | "require": { 269 | "php": "^7.2 || ^8.0" 270 | }, 271 | "type": "library", 272 | "autoload": { 273 | "classmap": [ 274 | "src/" 275 | ] 276 | }, 277 | "notification-url": "https://packagist.org/downloads/", 278 | "license": [ 279 | "BSD-3-Clause" 280 | ], 281 | "authors": [ 282 | { 283 | "name": "Arne Blankerts", 284 | "email": "arne@blankerts.de", 285 | "role": "Developer" 286 | }, 287 | { 288 | "name": "Sebastian Heuer", 289 | "email": "sebastian@phpeople.de", 290 | "role": "Developer" 291 | }, 292 | { 293 | "name": "Sebastian Bergmann", 294 | "email": "sebastian@phpunit.de", 295 | "role": "Developer" 296 | } 297 | ], 298 | "description": "Library for handling version information and constraints", 299 | "support": { 300 | "issues": "https://github.com/phar-io/version/issues", 301 | "source": "https://github.com/phar-io/version/tree/3.2.1" 302 | }, 303 | "time": "2022-02-21T01:04:05+00:00" 304 | }, 305 | { 306 | "name": "phpdocumentor/reflection-common", 307 | "version": "2.2.0", 308 | "source": { 309 | "type": "git", 310 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 311 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" 312 | }, 313 | "dist": { 314 | "type": "zip", 315 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", 316 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", 317 | "shasum": "" 318 | }, 319 | "require": { 320 | "php": "^7.2 || ^8.0" 321 | }, 322 | "type": "library", 323 | "extra": { 324 | "branch-alias": { 325 | "dev-2.x": "2.x-dev" 326 | } 327 | }, 328 | "autoload": { 329 | "psr-4": { 330 | "phpDocumentor\\Reflection\\": "src/" 331 | } 332 | }, 333 | "notification-url": "https://packagist.org/downloads/", 334 | "license": [ 335 | "MIT" 336 | ], 337 | "authors": [ 338 | { 339 | "name": "Jaap van Otterdijk", 340 | "email": "opensource@ijaap.nl" 341 | } 342 | ], 343 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 344 | "homepage": "http://www.phpdoc.org", 345 | "keywords": [ 346 | "FQSEN", 347 | "phpDocumentor", 348 | "phpdoc", 349 | "reflection", 350 | "static analysis" 351 | ], 352 | "support": { 353 | "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", 354 | "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" 355 | }, 356 | "time": "2020-06-27T09:03:43+00:00" 357 | }, 358 | { 359 | "name": "phpdocumentor/reflection-docblock", 360 | "version": "5.3.0", 361 | "source": { 362 | "type": "git", 363 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 364 | "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" 365 | }, 366 | "dist": { 367 | "type": "zip", 368 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", 369 | "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", 370 | "shasum": "" 371 | }, 372 | "require": { 373 | "ext-filter": "*", 374 | "php": "^7.2 || ^8.0", 375 | "phpdocumentor/reflection-common": "^2.2", 376 | "phpdocumentor/type-resolver": "^1.3", 377 | "webmozart/assert": "^1.9.1" 378 | }, 379 | "require-dev": { 380 | "mockery/mockery": "~1.3.2", 381 | "psalm/phar": "^4.8" 382 | }, 383 | "type": "library", 384 | "extra": { 385 | "branch-alias": { 386 | "dev-master": "5.x-dev" 387 | } 388 | }, 389 | "autoload": { 390 | "psr-4": { 391 | "phpDocumentor\\Reflection\\": "src" 392 | } 393 | }, 394 | "notification-url": "https://packagist.org/downloads/", 395 | "license": [ 396 | "MIT" 397 | ], 398 | "authors": [ 399 | { 400 | "name": "Mike van Riel", 401 | "email": "me@mikevanriel.com" 402 | }, 403 | { 404 | "name": "Jaap van Otterdijk", 405 | "email": "account@ijaap.nl" 406 | } 407 | ], 408 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 409 | "support": { 410 | "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", 411 | "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" 412 | }, 413 | "time": "2021-10-19T17:43:47+00:00" 414 | }, 415 | { 416 | "name": "phpdocumentor/type-resolver", 417 | "version": "1.6.1", 418 | "source": { 419 | "type": "git", 420 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 421 | "reference": "77a32518733312af16a44300404e945338981de3" 422 | }, 423 | "dist": { 424 | "type": "zip", 425 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", 426 | "reference": "77a32518733312af16a44300404e945338981de3", 427 | "shasum": "" 428 | }, 429 | "require": { 430 | "php": "^7.2 || ^8.0", 431 | "phpdocumentor/reflection-common": "^2.0" 432 | }, 433 | "require-dev": { 434 | "ext-tokenizer": "*", 435 | "psalm/phar": "^4.8" 436 | }, 437 | "type": "library", 438 | "extra": { 439 | "branch-alias": { 440 | "dev-1.x": "1.x-dev" 441 | } 442 | }, 443 | "autoload": { 444 | "psr-4": { 445 | "phpDocumentor\\Reflection\\": "src" 446 | } 447 | }, 448 | "notification-url": "https://packagist.org/downloads/", 449 | "license": [ 450 | "MIT" 451 | ], 452 | "authors": [ 453 | { 454 | "name": "Mike van Riel", 455 | "email": "me@mikevanriel.com" 456 | } 457 | ], 458 | "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", 459 | "support": { 460 | "issues": "https://github.com/phpDocumentor/TypeResolver/issues", 461 | "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" 462 | }, 463 | "time": "2022-03-15T21:29:03+00:00" 464 | }, 465 | { 466 | "name": "phpspec/prophecy", 467 | "version": "v1.15.0", 468 | "source": { 469 | "type": "git", 470 | "url": "https://github.com/phpspec/prophecy.git", 471 | "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" 472 | }, 473 | "dist": { 474 | "type": "zip", 475 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", 476 | "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", 477 | "shasum": "" 478 | }, 479 | "require": { 480 | "doctrine/instantiator": "^1.2", 481 | "php": "^7.2 || ~8.0, <8.2", 482 | "phpdocumentor/reflection-docblock": "^5.2", 483 | "sebastian/comparator": "^3.0 || ^4.0", 484 | "sebastian/recursion-context": "^3.0 || ^4.0" 485 | }, 486 | "require-dev": { 487 | "phpspec/phpspec": "^6.0 || ^7.0", 488 | "phpunit/phpunit": "^8.0 || ^9.0" 489 | }, 490 | "type": "library", 491 | "extra": { 492 | "branch-alias": { 493 | "dev-master": "1.x-dev" 494 | } 495 | }, 496 | "autoload": { 497 | "psr-4": { 498 | "Prophecy\\": "src/Prophecy" 499 | } 500 | }, 501 | "notification-url": "https://packagist.org/downloads/", 502 | "license": [ 503 | "MIT" 504 | ], 505 | "authors": [ 506 | { 507 | "name": "Konstantin Kudryashov", 508 | "email": "ever.zet@gmail.com", 509 | "homepage": "http://everzet.com" 510 | }, 511 | { 512 | "name": "Marcello Duarte", 513 | "email": "marcello.duarte@gmail.com" 514 | } 515 | ], 516 | "description": "Highly opinionated mocking framework for PHP 5.3+", 517 | "homepage": "https://github.com/phpspec/prophecy", 518 | "keywords": [ 519 | "Double", 520 | "Dummy", 521 | "fake", 522 | "mock", 523 | "spy", 524 | "stub" 525 | ], 526 | "support": { 527 | "issues": "https://github.com/phpspec/prophecy/issues", 528 | "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" 529 | }, 530 | "time": "2021-12-08T12:19:24+00:00" 531 | }, 532 | { 533 | "name": "phpunit/php-code-coverage", 534 | "version": "9.2.15", 535 | "source": { 536 | "type": "git", 537 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 538 | "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" 539 | }, 540 | "dist": { 541 | "type": "zip", 542 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", 543 | "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", 544 | "shasum": "" 545 | }, 546 | "require": { 547 | "ext-dom": "*", 548 | "ext-libxml": "*", 549 | "ext-xmlwriter": "*", 550 | "nikic/php-parser": "^4.13.0", 551 | "php": ">=7.3", 552 | "phpunit/php-file-iterator": "^3.0.3", 553 | "phpunit/php-text-template": "^2.0.2", 554 | "sebastian/code-unit-reverse-lookup": "^2.0.2", 555 | "sebastian/complexity": "^2.0", 556 | "sebastian/environment": "^5.1.2", 557 | "sebastian/lines-of-code": "^1.0.3", 558 | "sebastian/version": "^3.0.1", 559 | "theseer/tokenizer": "^1.2.0" 560 | }, 561 | "require-dev": { 562 | "phpunit/phpunit": "^9.3" 563 | }, 564 | "suggest": { 565 | "ext-pcov": "*", 566 | "ext-xdebug": "*" 567 | }, 568 | "type": "library", 569 | "extra": { 570 | "branch-alias": { 571 | "dev-master": "9.2-dev" 572 | } 573 | }, 574 | "autoload": { 575 | "classmap": [ 576 | "src/" 577 | ] 578 | }, 579 | "notification-url": "https://packagist.org/downloads/", 580 | "license": [ 581 | "BSD-3-Clause" 582 | ], 583 | "authors": [ 584 | { 585 | "name": "Sebastian Bergmann", 586 | "email": "sebastian@phpunit.de", 587 | "role": "lead" 588 | } 589 | ], 590 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 591 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 592 | "keywords": [ 593 | "coverage", 594 | "testing", 595 | "xunit" 596 | ], 597 | "support": { 598 | "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", 599 | "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" 600 | }, 601 | "funding": [ 602 | { 603 | "url": "https://github.com/sebastianbergmann", 604 | "type": "github" 605 | } 606 | ], 607 | "time": "2022-03-07T09:28:20+00:00" 608 | }, 609 | { 610 | "name": "phpunit/php-file-iterator", 611 | "version": "3.0.6", 612 | "source": { 613 | "type": "git", 614 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 615 | "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" 616 | }, 617 | "dist": { 618 | "type": "zip", 619 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", 620 | "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", 621 | "shasum": "" 622 | }, 623 | "require": { 624 | "php": ">=7.3" 625 | }, 626 | "require-dev": { 627 | "phpunit/phpunit": "^9.3" 628 | }, 629 | "type": "library", 630 | "extra": { 631 | "branch-alias": { 632 | "dev-master": "3.0-dev" 633 | } 634 | }, 635 | "autoload": { 636 | "classmap": [ 637 | "src/" 638 | ] 639 | }, 640 | "notification-url": "https://packagist.org/downloads/", 641 | "license": [ 642 | "BSD-3-Clause" 643 | ], 644 | "authors": [ 645 | { 646 | "name": "Sebastian Bergmann", 647 | "email": "sebastian@phpunit.de", 648 | "role": "lead" 649 | } 650 | ], 651 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 652 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 653 | "keywords": [ 654 | "filesystem", 655 | "iterator" 656 | ], 657 | "support": { 658 | "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", 659 | "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" 660 | }, 661 | "funding": [ 662 | { 663 | "url": "https://github.com/sebastianbergmann", 664 | "type": "github" 665 | } 666 | ], 667 | "time": "2021-12-02T12:48:52+00:00" 668 | }, 669 | { 670 | "name": "phpunit/php-invoker", 671 | "version": "3.1.1", 672 | "source": { 673 | "type": "git", 674 | "url": "https://github.com/sebastianbergmann/php-invoker.git", 675 | "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" 676 | }, 677 | "dist": { 678 | "type": "zip", 679 | "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", 680 | "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", 681 | "shasum": "" 682 | }, 683 | "require": { 684 | "php": ">=7.3" 685 | }, 686 | "require-dev": { 687 | "ext-pcntl": "*", 688 | "phpunit/phpunit": "^9.3" 689 | }, 690 | "suggest": { 691 | "ext-pcntl": "*" 692 | }, 693 | "type": "library", 694 | "extra": { 695 | "branch-alias": { 696 | "dev-master": "3.1-dev" 697 | } 698 | }, 699 | "autoload": { 700 | "classmap": [ 701 | "src/" 702 | ] 703 | }, 704 | "notification-url": "https://packagist.org/downloads/", 705 | "license": [ 706 | "BSD-3-Clause" 707 | ], 708 | "authors": [ 709 | { 710 | "name": "Sebastian Bergmann", 711 | "email": "sebastian@phpunit.de", 712 | "role": "lead" 713 | } 714 | ], 715 | "description": "Invoke callables with a timeout", 716 | "homepage": "https://github.com/sebastianbergmann/php-invoker/", 717 | "keywords": [ 718 | "process" 719 | ], 720 | "support": { 721 | "issues": "https://github.com/sebastianbergmann/php-invoker/issues", 722 | "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" 723 | }, 724 | "funding": [ 725 | { 726 | "url": "https://github.com/sebastianbergmann", 727 | "type": "github" 728 | } 729 | ], 730 | "time": "2020-09-28T05:58:55+00:00" 731 | }, 732 | { 733 | "name": "phpunit/php-text-template", 734 | "version": "2.0.4", 735 | "source": { 736 | "type": "git", 737 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 738 | "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" 739 | }, 740 | "dist": { 741 | "type": "zip", 742 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", 743 | "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", 744 | "shasum": "" 745 | }, 746 | "require": { 747 | "php": ">=7.3" 748 | }, 749 | "require-dev": { 750 | "phpunit/phpunit": "^9.3" 751 | }, 752 | "type": "library", 753 | "extra": { 754 | "branch-alias": { 755 | "dev-master": "2.0-dev" 756 | } 757 | }, 758 | "autoload": { 759 | "classmap": [ 760 | "src/" 761 | ] 762 | }, 763 | "notification-url": "https://packagist.org/downloads/", 764 | "license": [ 765 | "BSD-3-Clause" 766 | ], 767 | "authors": [ 768 | { 769 | "name": "Sebastian Bergmann", 770 | "email": "sebastian@phpunit.de", 771 | "role": "lead" 772 | } 773 | ], 774 | "description": "Simple template engine.", 775 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 776 | "keywords": [ 777 | "template" 778 | ], 779 | "support": { 780 | "issues": "https://github.com/sebastianbergmann/php-text-template/issues", 781 | "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" 782 | }, 783 | "funding": [ 784 | { 785 | "url": "https://github.com/sebastianbergmann", 786 | "type": "github" 787 | } 788 | ], 789 | "time": "2020-10-26T05:33:50+00:00" 790 | }, 791 | { 792 | "name": "phpunit/php-timer", 793 | "version": "5.0.3", 794 | "source": { 795 | "type": "git", 796 | "url": "https://github.com/sebastianbergmann/php-timer.git", 797 | "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" 798 | }, 799 | "dist": { 800 | "type": "zip", 801 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", 802 | "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", 803 | "shasum": "" 804 | }, 805 | "require": { 806 | "php": ">=7.3" 807 | }, 808 | "require-dev": { 809 | "phpunit/phpunit": "^9.3" 810 | }, 811 | "type": "library", 812 | "extra": { 813 | "branch-alias": { 814 | "dev-master": "5.0-dev" 815 | } 816 | }, 817 | "autoload": { 818 | "classmap": [ 819 | "src/" 820 | ] 821 | }, 822 | "notification-url": "https://packagist.org/downloads/", 823 | "license": [ 824 | "BSD-3-Clause" 825 | ], 826 | "authors": [ 827 | { 828 | "name": "Sebastian Bergmann", 829 | "email": "sebastian@phpunit.de", 830 | "role": "lead" 831 | } 832 | ], 833 | "description": "Utility class for timing", 834 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 835 | "keywords": [ 836 | "timer" 837 | ], 838 | "support": { 839 | "issues": "https://github.com/sebastianbergmann/php-timer/issues", 840 | "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" 841 | }, 842 | "funding": [ 843 | { 844 | "url": "https://github.com/sebastianbergmann", 845 | "type": "github" 846 | } 847 | ], 848 | "time": "2020-10-26T13:16:10+00:00" 849 | }, 850 | { 851 | "name": "phpunit/phpunit", 852 | "version": "9.5.20", 853 | "source": { 854 | "type": "git", 855 | "url": "https://github.com/sebastianbergmann/phpunit.git", 856 | "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba" 857 | }, 858 | "dist": { 859 | "type": "zip", 860 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba", 861 | "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba", 862 | "shasum": "" 863 | }, 864 | "require": { 865 | "doctrine/instantiator": "^1.3.1", 866 | "ext-dom": "*", 867 | "ext-json": "*", 868 | "ext-libxml": "*", 869 | "ext-mbstring": "*", 870 | "ext-xml": "*", 871 | "ext-xmlwriter": "*", 872 | "myclabs/deep-copy": "^1.10.1", 873 | "phar-io/manifest": "^2.0.3", 874 | "phar-io/version": "^3.0.2", 875 | "php": ">=7.3", 876 | "phpspec/prophecy": "^1.12.1", 877 | "phpunit/php-code-coverage": "^9.2.13", 878 | "phpunit/php-file-iterator": "^3.0.5", 879 | "phpunit/php-invoker": "^3.1.1", 880 | "phpunit/php-text-template": "^2.0.3", 881 | "phpunit/php-timer": "^5.0.2", 882 | "sebastian/cli-parser": "^1.0.1", 883 | "sebastian/code-unit": "^1.0.6", 884 | "sebastian/comparator": "^4.0.5", 885 | "sebastian/diff": "^4.0.3", 886 | "sebastian/environment": "^5.1.3", 887 | "sebastian/exporter": "^4.0.3", 888 | "sebastian/global-state": "^5.0.1", 889 | "sebastian/object-enumerator": "^4.0.3", 890 | "sebastian/resource-operations": "^3.0.3", 891 | "sebastian/type": "^3.0", 892 | "sebastian/version": "^3.0.2" 893 | }, 894 | "require-dev": { 895 | "ext-pdo": "*", 896 | "phpspec/prophecy-phpunit": "^2.0.1" 897 | }, 898 | "suggest": { 899 | "ext-soap": "*", 900 | "ext-xdebug": "*" 901 | }, 902 | "bin": [ 903 | "phpunit" 904 | ], 905 | "type": "library", 906 | "extra": { 907 | "branch-alias": { 908 | "dev-master": "9.5-dev" 909 | } 910 | }, 911 | "autoload": { 912 | "files": [ 913 | "src/Framework/Assert/Functions.php" 914 | ], 915 | "classmap": [ 916 | "src/" 917 | ] 918 | }, 919 | "notification-url": "https://packagist.org/downloads/", 920 | "license": [ 921 | "BSD-3-Clause" 922 | ], 923 | "authors": [ 924 | { 925 | "name": "Sebastian Bergmann", 926 | "email": "sebastian@phpunit.de", 927 | "role": "lead" 928 | } 929 | ], 930 | "description": "The PHP Unit Testing framework.", 931 | "homepage": "https://phpunit.de/", 932 | "keywords": [ 933 | "phpunit", 934 | "testing", 935 | "xunit" 936 | ], 937 | "support": { 938 | "issues": "https://github.com/sebastianbergmann/phpunit/issues", 939 | "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20" 940 | }, 941 | "funding": [ 942 | { 943 | "url": "https://phpunit.de/sponsors.html", 944 | "type": "custom" 945 | }, 946 | { 947 | "url": "https://github.com/sebastianbergmann", 948 | "type": "github" 949 | } 950 | ], 951 | "time": "2022-04-01T12:37:26+00:00" 952 | }, 953 | { 954 | "name": "sebastian/cli-parser", 955 | "version": "1.0.1", 956 | "source": { 957 | "type": "git", 958 | "url": "https://github.com/sebastianbergmann/cli-parser.git", 959 | "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" 960 | }, 961 | "dist": { 962 | "type": "zip", 963 | "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", 964 | "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", 965 | "shasum": "" 966 | }, 967 | "require": { 968 | "php": ">=7.3" 969 | }, 970 | "require-dev": { 971 | "phpunit/phpunit": "^9.3" 972 | }, 973 | "type": "library", 974 | "extra": { 975 | "branch-alias": { 976 | "dev-master": "1.0-dev" 977 | } 978 | }, 979 | "autoload": { 980 | "classmap": [ 981 | "src/" 982 | ] 983 | }, 984 | "notification-url": "https://packagist.org/downloads/", 985 | "license": [ 986 | "BSD-3-Clause" 987 | ], 988 | "authors": [ 989 | { 990 | "name": "Sebastian Bergmann", 991 | "email": "sebastian@phpunit.de", 992 | "role": "lead" 993 | } 994 | ], 995 | "description": "Library for parsing CLI options", 996 | "homepage": "https://github.com/sebastianbergmann/cli-parser", 997 | "support": { 998 | "issues": "https://github.com/sebastianbergmann/cli-parser/issues", 999 | "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" 1000 | }, 1001 | "funding": [ 1002 | { 1003 | "url": "https://github.com/sebastianbergmann", 1004 | "type": "github" 1005 | } 1006 | ], 1007 | "time": "2020-09-28T06:08:49+00:00" 1008 | }, 1009 | { 1010 | "name": "sebastian/code-unit", 1011 | "version": "1.0.8", 1012 | "source": { 1013 | "type": "git", 1014 | "url": "https://github.com/sebastianbergmann/code-unit.git", 1015 | "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" 1016 | }, 1017 | "dist": { 1018 | "type": "zip", 1019 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", 1020 | "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", 1021 | "shasum": "" 1022 | }, 1023 | "require": { 1024 | "php": ">=7.3" 1025 | }, 1026 | "require-dev": { 1027 | "phpunit/phpunit": "^9.3" 1028 | }, 1029 | "type": "library", 1030 | "extra": { 1031 | "branch-alias": { 1032 | "dev-master": "1.0-dev" 1033 | } 1034 | }, 1035 | "autoload": { 1036 | "classmap": [ 1037 | "src/" 1038 | ] 1039 | }, 1040 | "notification-url": "https://packagist.org/downloads/", 1041 | "license": [ 1042 | "BSD-3-Clause" 1043 | ], 1044 | "authors": [ 1045 | { 1046 | "name": "Sebastian Bergmann", 1047 | "email": "sebastian@phpunit.de", 1048 | "role": "lead" 1049 | } 1050 | ], 1051 | "description": "Collection of value objects that represent the PHP code units", 1052 | "homepage": "https://github.com/sebastianbergmann/code-unit", 1053 | "support": { 1054 | "issues": "https://github.com/sebastianbergmann/code-unit/issues", 1055 | "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" 1056 | }, 1057 | "funding": [ 1058 | { 1059 | "url": "https://github.com/sebastianbergmann", 1060 | "type": "github" 1061 | } 1062 | ], 1063 | "time": "2020-10-26T13:08:54+00:00" 1064 | }, 1065 | { 1066 | "name": "sebastian/code-unit-reverse-lookup", 1067 | "version": "2.0.3", 1068 | "source": { 1069 | "type": "git", 1070 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 1071 | "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" 1072 | }, 1073 | "dist": { 1074 | "type": "zip", 1075 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", 1076 | "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", 1077 | "shasum": "" 1078 | }, 1079 | "require": { 1080 | "php": ">=7.3" 1081 | }, 1082 | "require-dev": { 1083 | "phpunit/phpunit": "^9.3" 1084 | }, 1085 | "type": "library", 1086 | "extra": { 1087 | "branch-alias": { 1088 | "dev-master": "2.0-dev" 1089 | } 1090 | }, 1091 | "autoload": { 1092 | "classmap": [ 1093 | "src/" 1094 | ] 1095 | }, 1096 | "notification-url": "https://packagist.org/downloads/", 1097 | "license": [ 1098 | "BSD-3-Clause" 1099 | ], 1100 | "authors": [ 1101 | { 1102 | "name": "Sebastian Bergmann", 1103 | "email": "sebastian@phpunit.de" 1104 | } 1105 | ], 1106 | "description": "Looks up which function or method a line of code belongs to", 1107 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 1108 | "support": { 1109 | "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", 1110 | "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" 1111 | }, 1112 | "funding": [ 1113 | { 1114 | "url": "https://github.com/sebastianbergmann", 1115 | "type": "github" 1116 | } 1117 | ], 1118 | "time": "2020-09-28T05:30:19+00:00" 1119 | }, 1120 | { 1121 | "name": "sebastian/comparator", 1122 | "version": "4.0.6", 1123 | "source": { 1124 | "type": "git", 1125 | "url": "https://github.com/sebastianbergmann/comparator.git", 1126 | "reference": "55f4261989e546dc112258c7a75935a81a7ce382" 1127 | }, 1128 | "dist": { 1129 | "type": "zip", 1130 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", 1131 | "reference": "55f4261989e546dc112258c7a75935a81a7ce382", 1132 | "shasum": "" 1133 | }, 1134 | "require": { 1135 | "php": ">=7.3", 1136 | "sebastian/diff": "^4.0", 1137 | "sebastian/exporter": "^4.0" 1138 | }, 1139 | "require-dev": { 1140 | "phpunit/phpunit": "^9.3" 1141 | }, 1142 | "type": "library", 1143 | "extra": { 1144 | "branch-alias": { 1145 | "dev-master": "4.0-dev" 1146 | } 1147 | }, 1148 | "autoload": { 1149 | "classmap": [ 1150 | "src/" 1151 | ] 1152 | }, 1153 | "notification-url": "https://packagist.org/downloads/", 1154 | "license": [ 1155 | "BSD-3-Clause" 1156 | ], 1157 | "authors": [ 1158 | { 1159 | "name": "Sebastian Bergmann", 1160 | "email": "sebastian@phpunit.de" 1161 | }, 1162 | { 1163 | "name": "Jeff Welch", 1164 | "email": "whatthejeff@gmail.com" 1165 | }, 1166 | { 1167 | "name": "Volker Dusch", 1168 | "email": "github@wallbash.com" 1169 | }, 1170 | { 1171 | "name": "Bernhard Schussek", 1172 | "email": "bschussek@2bepublished.at" 1173 | } 1174 | ], 1175 | "description": "Provides the functionality to compare PHP values for equality", 1176 | "homepage": "https://github.com/sebastianbergmann/comparator", 1177 | "keywords": [ 1178 | "comparator", 1179 | "compare", 1180 | "equality" 1181 | ], 1182 | "support": { 1183 | "issues": "https://github.com/sebastianbergmann/comparator/issues", 1184 | "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" 1185 | }, 1186 | "funding": [ 1187 | { 1188 | "url": "https://github.com/sebastianbergmann", 1189 | "type": "github" 1190 | } 1191 | ], 1192 | "time": "2020-10-26T15:49:45+00:00" 1193 | }, 1194 | { 1195 | "name": "sebastian/complexity", 1196 | "version": "2.0.2", 1197 | "source": { 1198 | "type": "git", 1199 | "url": "https://github.com/sebastianbergmann/complexity.git", 1200 | "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" 1201 | }, 1202 | "dist": { 1203 | "type": "zip", 1204 | "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", 1205 | "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", 1206 | "shasum": "" 1207 | }, 1208 | "require": { 1209 | "nikic/php-parser": "^4.7", 1210 | "php": ">=7.3" 1211 | }, 1212 | "require-dev": { 1213 | "phpunit/phpunit": "^9.3" 1214 | }, 1215 | "type": "library", 1216 | "extra": { 1217 | "branch-alias": { 1218 | "dev-master": "2.0-dev" 1219 | } 1220 | }, 1221 | "autoload": { 1222 | "classmap": [ 1223 | "src/" 1224 | ] 1225 | }, 1226 | "notification-url": "https://packagist.org/downloads/", 1227 | "license": [ 1228 | "BSD-3-Clause" 1229 | ], 1230 | "authors": [ 1231 | { 1232 | "name": "Sebastian Bergmann", 1233 | "email": "sebastian@phpunit.de", 1234 | "role": "lead" 1235 | } 1236 | ], 1237 | "description": "Library for calculating the complexity of PHP code units", 1238 | "homepage": "https://github.com/sebastianbergmann/complexity", 1239 | "support": { 1240 | "issues": "https://github.com/sebastianbergmann/complexity/issues", 1241 | "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" 1242 | }, 1243 | "funding": [ 1244 | { 1245 | "url": "https://github.com/sebastianbergmann", 1246 | "type": "github" 1247 | } 1248 | ], 1249 | "time": "2020-10-26T15:52:27+00:00" 1250 | }, 1251 | { 1252 | "name": "sebastian/diff", 1253 | "version": "4.0.4", 1254 | "source": { 1255 | "type": "git", 1256 | "url": "https://github.com/sebastianbergmann/diff.git", 1257 | "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" 1258 | }, 1259 | "dist": { 1260 | "type": "zip", 1261 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", 1262 | "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", 1263 | "shasum": "" 1264 | }, 1265 | "require": { 1266 | "php": ">=7.3" 1267 | }, 1268 | "require-dev": { 1269 | "phpunit/phpunit": "^9.3", 1270 | "symfony/process": "^4.2 || ^5" 1271 | }, 1272 | "type": "library", 1273 | "extra": { 1274 | "branch-alias": { 1275 | "dev-master": "4.0-dev" 1276 | } 1277 | }, 1278 | "autoload": { 1279 | "classmap": [ 1280 | "src/" 1281 | ] 1282 | }, 1283 | "notification-url": "https://packagist.org/downloads/", 1284 | "license": [ 1285 | "BSD-3-Clause" 1286 | ], 1287 | "authors": [ 1288 | { 1289 | "name": "Sebastian Bergmann", 1290 | "email": "sebastian@phpunit.de" 1291 | }, 1292 | { 1293 | "name": "Kore Nordmann", 1294 | "email": "mail@kore-nordmann.de" 1295 | } 1296 | ], 1297 | "description": "Diff implementation", 1298 | "homepage": "https://github.com/sebastianbergmann/diff", 1299 | "keywords": [ 1300 | "diff", 1301 | "udiff", 1302 | "unidiff", 1303 | "unified diff" 1304 | ], 1305 | "support": { 1306 | "issues": "https://github.com/sebastianbergmann/diff/issues", 1307 | "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" 1308 | }, 1309 | "funding": [ 1310 | { 1311 | "url": "https://github.com/sebastianbergmann", 1312 | "type": "github" 1313 | } 1314 | ], 1315 | "time": "2020-10-26T13:10:38+00:00" 1316 | }, 1317 | { 1318 | "name": "sebastian/environment", 1319 | "version": "5.1.3", 1320 | "source": { 1321 | "type": "git", 1322 | "url": "https://github.com/sebastianbergmann/environment.git", 1323 | "reference": "388b6ced16caa751030f6a69e588299fa09200ac" 1324 | }, 1325 | "dist": { 1326 | "type": "zip", 1327 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", 1328 | "reference": "388b6ced16caa751030f6a69e588299fa09200ac", 1329 | "shasum": "" 1330 | }, 1331 | "require": { 1332 | "php": ">=7.3" 1333 | }, 1334 | "require-dev": { 1335 | "phpunit/phpunit": "^9.3" 1336 | }, 1337 | "suggest": { 1338 | "ext-posix": "*" 1339 | }, 1340 | "type": "library", 1341 | "extra": { 1342 | "branch-alias": { 1343 | "dev-master": "5.1-dev" 1344 | } 1345 | }, 1346 | "autoload": { 1347 | "classmap": [ 1348 | "src/" 1349 | ] 1350 | }, 1351 | "notification-url": "https://packagist.org/downloads/", 1352 | "license": [ 1353 | "BSD-3-Clause" 1354 | ], 1355 | "authors": [ 1356 | { 1357 | "name": "Sebastian Bergmann", 1358 | "email": "sebastian@phpunit.de" 1359 | } 1360 | ], 1361 | "description": "Provides functionality to handle HHVM/PHP environments", 1362 | "homepage": "http://www.github.com/sebastianbergmann/environment", 1363 | "keywords": [ 1364 | "Xdebug", 1365 | "environment", 1366 | "hhvm" 1367 | ], 1368 | "support": { 1369 | "issues": "https://github.com/sebastianbergmann/environment/issues", 1370 | "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" 1371 | }, 1372 | "funding": [ 1373 | { 1374 | "url": "https://github.com/sebastianbergmann", 1375 | "type": "github" 1376 | } 1377 | ], 1378 | "time": "2020-09-28T05:52:38+00:00" 1379 | }, 1380 | { 1381 | "name": "sebastian/exporter", 1382 | "version": "4.0.4", 1383 | "source": { 1384 | "type": "git", 1385 | "url": "https://github.com/sebastianbergmann/exporter.git", 1386 | "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" 1387 | }, 1388 | "dist": { 1389 | "type": "zip", 1390 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", 1391 | "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", 1392 | "shasum": "" 1393 | }, 1394 | "require": { 1395 | "php": ">=7.3", 1396 | "sebastian/recursion-context": "^4.0" 1397 | }, 1398 | "require-dev": { 1399 | "ext-mbstring": "*", 1400 | "phpunit/phpunit": "^9.3" 1401 | }, 1402 | "type": "library", 1403 | "extra": { 1404 | "branch-alias": { 1405 | "dev-master": "4.0-dev" 1406 | } 1407 | }, 1408 | "autoload": { 1409 | "classmap": [ 1410 | "src/" 1411 | ] 1412 | }, 1413 | "notification-url": "https://packagist.org/downloads/", 1414 | "license": [ 1415 | "BSD-3-Clause" 1416 | ], 1417 | "authors": [ 1418 | { 1419 | "name": "Sebastian Bergmann", 1420 | "email": "sebastian@phpunit.de" 1421 | }, 1422 | { 1423 | "name": "Jeff Welch", 1424 | "email": "whatthejeff@gmail.com" 1425 | }, 1426 | { 1427 | "name": "Volker Dusch", 1428 | "email": "github@wallbash.com" 1429 | }, 1430 | { 1431 | "name": "Adam Harvey", 1432 | "email": "aharvey@php.net" 1433 | }, 1434 | { 1435 | "name": "Bernhard Schussek", 1436 | "email": "bschussek@gmail.com" 1437 | } 1438 | ], 1439 | "description": "Provides the functionality to export PHP variables for visualization", 1440 | "homepage": "https://www.github.com/sebastianbergmann/exporter", 1441 | "keywords": [ 1442 | "export", 1443 | "exporter" 1444 | ], 1445 | "support": { 1446 | "issues": "https://github.com/sebastianbergmann/exporter/issues", 1447 | "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" 1448 | }, 1449 | "funding": [ 1450 | { 1451 | "url": "https://github.com/sebastianbergmann", 1452 | "type": "github" 1453 | } 1454 | ], 1455 | "time": "2021-11-11T14:18:36+00:00" 1456 | }, 1457 | { 1458 | "name": "sebastian/global-state", 1459 | "version": "5.0.5", 1460 | "source": { 1461 | "type": "git", 1462 | "url": "https://github.com/sebastianbergmann/global-state.git", 1463 | "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" 1464 | }, 1465 | "dist": { 1466 | "type": "zip", 1467 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", 1468 | "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", 1469 | "shasum": "" 1470 | }, 1471 | "require": { 1472 | "php": ">=7.3", 1473 | "sebastian/object-reflector": "^2.0", 1474 | "sebastian/recursion-context": "^4.0" 1475 | }, 1476 | "require-dev": { 1477 | "ext-dom": "*", 1478 | "phpunit/phpunit": "^9.3" 1479 | }, 1480 | "suggest": { 1481 | "ext-uopz": "*" 1482 | }, 1483 | "type": "library", 1484 | "extra": { 1485 | "branch-alias": { 1486 | "dev-master": "5.0-dev" 1487 | } 1488 | }, 1489 | "autoload": { 1490 | "classmap": [ 1491 | "src/" 1492 | ] 1493 | }, 1494 | "notification-url": "https://packagist.org/downloads/", 1495 | "license": [ 1496 | "BSD-3-Clause" 1497 | ], 1498 | "authors": [ 1499 | { 1500 | "name": "Sebastian Bergmann", 1501 | "email": "sebastian@phpunit.de" 1502 | } 1503 | ], 1504 | "description": "Snapshotting of global state", 1505 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 1506 | "keywords": [ 1507 | "global state" 1508 | ], 1509 | "support": { 1510 | "issues": "https://github.com/sebastianbergmann/global-state/issues", 1511 | "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" 1512 | }, 1513 | "funding": [ 1514 | { 1515 | "url": "https://github.com/sebastianbergmann", 1516 | "type": "github" 1517 | } 1518 | ], 1519 | "time": "2022-02-14T08:28:10+00:00" 1520 | }, 1521 | { 1522 | "name": "sebastian/lines-of-code", 1523 | "version": "1.0.3", 1524 | "source": { 1525 | "type": "git", 1526 | "url": "https://github.com/sebastianbergmann/lines-of-code.git", 1527 | "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" 1528 | }, 1529 | "dist": { 1530 | "type": "zip", 1531 | "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", 1532 | "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", 1533 | "shasum": "" 1534 | }, 1535 | "require": { 1536 | "nikic/php-parser": "^4.6", 1537 | "php": ">=7.3" 1538 | }, 1539 | "require-dev": { 1540 | "phpunit/phpunit": "^9.3" 1541 | }, 1542 | "type": "library", 1543 | "extra": { 1544 | "branch-alias": { 1545 | "dev-master": "1.0-dev" 1546 | } 1547 | }, 1548 | "autoload": { 1549 | "classmap": [ 1550 | "src/" 1551 | ] 1552 | }, 1553 | "notification-url": "https://packagist.org/downloads/", 1554 | "license": [ 1555 | "BSD-3-Clause" 1556 | ], 1557 | "authors": [ 1558 | { 1559 | "name": "Sebastian Bergmann", 1560 | "email": "sebastian@phpunit.de", 1561 | "role": "lead" 1562 | } 1563 | ], 1564 | "description": "Library for counting the lines of code in PHP source code", 1565 | "homepage": "https://github.com/sebastianbergmann/lines-of-code", 1566 | "support": { 1567 | "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", 1568 | "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" 1569 | }, 1570 | "funding": [ 1571 | { 1572 | "url": "https://github.com/sebastianbergmann", 1573 | "type": "github" 1574 | } 1575 | ], 1576 | "time": "2020-11-28T06:42:11+00:00" 1577 | }, 1578 | { 1579 | "name": "sebastian/object-enumerator", 1580 | "version": "4.0.4", 1581 | "source": { 1582 | "type": "git", 1583 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 1584 | "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" 1585 | }, 1586 | "dist": { 1587 | "type": "zip", 1588 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", 1589 | "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", 1590 | "shasum": "" 1591 | }, 1592 | "require": { 1593 | "php": ">=7.3", 1594 | "sebastian/object-reflector": "^2.0", 1595 | "sebastian/recursion-context": "^4.0" 1596 | }, 1597 | "require-dev": { 1598 | "phpunit/phpunit": "^9.3" 1599 | }, 1600 | "type": "library", 1601 | "extra": { 1602 | "branch-alias": { 1603 | "dev-master": "4.0-dev" 1604 | } 1605 | }, 1606 | "autoload": { 1607 | "classmap": [ 1608 | "src/" 1609 | ] 1610 | }, 1611 | "notification-url": "https://packagist.org/downloads/", 1612 | "license": [ 1613 | "BSD-3-Clause" 1614 | ], 1615 | "authors": [ 1616 | { 1617 | "name": "Sebastian Bergmann", 1618 | "email": "sebastian@phpunit.de" 1619 | } 1620 | ], 1621 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 1622 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 1623 | "support": { 1624 | "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", 1625 | "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" 1626 | }, 1627 | "funding": [ 1628 | { 1629 | "url": "https://github.com/sebastianbergmann", 1630 | "type": "github" 1631 | } 1632 | ], 1633 | "time": "2020-10-26T13:12:34+00:00" 1634 | }, 1635 | { 1636 | "name": "sebastian/object-reflector", 1637 | "version": "2.0.4", 1638 | "source": { 1639 | "type": "git", 1640 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 1641 | "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" 1642 | }, 1643 | "dist": { 1644 | "type": "zip", 1645 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", 1646 | "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", 1647 | "shasum": "" 1648 | }, 1649 | "require": { 1650 | "php": ">=7.3" 1651 | }, 1652 | "require-dev": { 1653 | "phpunit/phpunit": "^9.3" 1654 | }, 1655 | "type": "library", 1656 | "extra": { 1657 | "branch-alias": { 1658 | "dev-master": "2.0-dev" 1659 | } 1660 | }, 1661 | "autoload": { 1662 | "classmap": [ 1663 | "src/" 1664 | ] 1665 | }, 1666 | "notification-url": "https://packagist.org/downloads/", 1667 | "license": [ 1668 | "BSD-3-Clause" 1669 | ], 1670 | "authors": [ 1671 | { 1672 | "name": "Sebastian Bergmann", 1673 | "email": "sebastian@phpunit.de" 1674 | } 1675 | ], 1676 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 1677 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 1678 | "support": { 1679 | "issues": "https://github.com/sebastianbergmann/object-reflector/issues", 1680 | "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" 1681 | }, 1682 | "funding": [ 1683 | { 1684 | "url": "https://github.com/sebastianbergmann", 1685 | "type": "github" 1686 | } 1687 | ], 1688 | "time": "2020-10-26T13:14:26+00:00" 1689 | }, 1690 | { 1691 | "name": "sebastian/recursion-context", 1692 | "version": "4.0.4", 1693 | "source": { 1694 | "type": "git", 1695 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 1696 | "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" 1697 | }, 1698 | "dist": { 1699 | "type": "zip", 1700 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", 1701 | "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", 1702 | "shasum": "" 1703 | }, 1704 | "require": { 1705 | "php": ">=7.3" 1706 | }, 1707 | "require-dev": { 1708 | "phpunit/phpunit": "^9.3" 1709 | }, 1710 | "type": "library", 1711 | "extra": { 1712 | "branch-alias": { 1713 | "dev-master": "4.0-dev" 1714 | } 1715 | }, 1716 | "autoload": { 1717 | "classmap": [ 1718 | "src/" 1719 | ] 1720 | }, 1721 | "notification-url": "https://packagist.org/downloads/", 1722 | "license": [ 1723 | "BSD-3-Clause" 1724 | ], 1725 | "authors": [ 1726 | { 1727 | "name": "Sebastian Bergmann", 1728 | "email": "sebastian@phpunit.de" 1729 | }, 1730 | { 1731 | "name": "Jeff Welch", 1732 | "email": "whatthejeff@gmail.com" 1733 | }, 1734 | { 1735 | "name": "Adam Harvey", 1736 | "email": "aharvey@php.net" 1737 | } 1738 | ], 1739 | "description": "Provides functionality to recursively process PHP variables", 1740 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 1741 | "support": { 1742 | "issues": "https://github.com/sebastianbergmann/recursion-context/issues", 1743 | "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" 1744 | }, 1745 | "funding": [ 1746 | { 1747 | "url": "https://github.com/sebastianbergmann", 1748 | "type": "github" 1749 | } 1750 | ], 1751 | "time": "2020-10-26T13:17:30+00:00" 1752 | }, 1753 | { 1754 | "name": "sebastian/resource-operations", 1755 | "version": "3.0.3", 1756 | "source": { 1757 | "type": "git", 1758 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 1759 | "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" 1760 | }, 1761 | "dist": { 1762 | "type": "zip", 1763 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", 1764 | "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", 1765 | "shasum": "" 1766 | }, 1767 | "require": { 1768 | "php": ">=7.3" 1769 | }, 1770 | "require-dev": { 1771 | "phpunit/phpunit": "^9.0" 1772 | }, 1773 | "type": "library", 1774 | "extra": { 1775 | "branch-alias": { 1776 | "dev-master": "3.0-dev" 1777 | } 1778 | }, 1779 | "autoload": { 1780 | "classmap": [ 1781 | "src/" 1782 | ] 1783 | }, 1784 | "notification-url": "https://packagist.org/downloads/", 1785 | "license": [ 1786 | "BSD-3-Clause" 1787 | ], 1788 | "authors": [ 1789 | { 1790 | "name": "Sebastian Bergmann", 1791 | "email": "sebastian@phpunit.de" 1792 | } 1793 | ], 1794 | "description": "Provides a list of PHP built-in functions that operate on resources", 1795 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 1796 | "support": { 1797 | "issues": "https://github.com/sebastianbergmann/resource-operations/issues", 1798 | "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" 1799 | }, 1800 | "funding": [ 1801 | { 1802 | "url": "https://github.com/sebastianbergmann", 1803 | "type": "github" 1804 | } 1805 | ], 1806 | "time": "2020-09-28T06:45:17+00:00" 1807 | }, 1808 | { 1809 | "name": "sebastian/type", 1810 | "version": "3.0.0", 1811 | "source": { 1812 | "type": "git", 1813 | "url": "https://github.com/sebastianbergmann/type.git", 1814 | "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" 1815 | }, 1816 | "dist": { 1817 | "type": "zip", 1818 | "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", 1819 | "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", 1820 | "shasum": "" 1821 | }, 1822 | "require": { 1823 | "php": ">=7.3" 1824 | }, 1825 | "require-dev": { 1826 | "phpunit/phpunit": "^9.5" 1827 | }, 1828 | "type": "library", 1829 | "extra": { 1830 | "branch-alias": { 1831 | "dev-master": "3.0-dev" 1832 | } 1833 | }, 1834 | "autoload": { 1835 | "classmap": [ 1836 | "src/" 1837 | ] 1838 | }, 1839 | "notification-url": "https://packagist.org/downloads/", 1840 | "license": [ 1841 | "BSD-3-Clause" 1842 | ], 1843 | "authors": [ 1844 | { 1845 | "name": "Sebastian Bergmann", 1846 | "email": "sebastian@phpunit.de", 1847 | "role": "lead" 1848 | } 1849 | ], 1850 | "description": "Collection of value objects that represent the types of the PHP type system", 1851 | "homepage": "https://github.com/sebastianbergmann/type", 1852 | "support": { 1853 | "issues": "https://github.com/sebastianbergmann/type/issues", 1854 | "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" 1855 | }, 1856 | "funding": [ 1857 | { 1858 | "url": "https://github.com/sebastianbergmann", 1859 | "type": "github" 1860 | } 1861 | ], 1862 | "time": "2022-03-15T09:54:48+00:00" 1863 | }, 1864 | { 1865 | "name": "sebastian/version", 1866 | "version": "3.0.2", 1867 | "source": { 1868 | "type": "git", 1869 | "url": "https://github.com/sebastianbergmann/version.git", 1870 | "reference": "c6c1022351a901512170118436c764e473f6de8c" 1871 | }, 1872 | "dist": { 1873 | "type": "zip", 1874 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", 1875 | "reference": "c6c1022351a901512170118436c764e473f6de8c", 1876 | "shasum": "" 1877 | }, 1878 | "require": { 1879 | "php": ">=7.3" 1880 | }, 1881 | "type": "library", 1882 | "extra": { 1883 | "branch-alias": { 1884 | "dev-master": "3.0-dev" 1885 | } 1886 | }, 1887 | "autoload": { 1888 | "classmap": [ 1889 | "src/" 1890 | ] 1891 | }, 1892 | "notification-url": "https://packagist.org/downloads/", 1893 | "license": [ 1894 | "BSD-3-Clause" 1895 | ], 1896 | "authors": [ 1897 | { 1898 | "name": "Sebastian Bergmann", 1899 | "email": "sebastian@phpunit.de", 1900 | "role": "lead" 1901 | } 1902 | ], 1903 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 1904 | "homepage": "https://github.com/sebastianbergmann/version", 1905 | "support": { 1906 | "issues": "https://github.com/sebastianbergmann/version/issues", 1907 | "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" 1908 | }, 1909 | "funding": [ 1910 | { 1911 | "url": "https://github.com/sebastianbergmann", 1912 | "type": "github" 1913 | } 1914 | ], 1915 | "time": "2020-09-28T06:39:44+00:00" 1916 | }, 1917 | { 1918 | "name": "symfony/polyfill-ctype", 1919 | "version": "v1.25.0", 1920 | "source": { 1921 | "type": "git", 1922 | "url": "https://github.com/symfony/polyfill-ctype.git", 1923 | "reference": "30885182c981ab175d4d034db0f6f469898070ab" 1924 | }, 1925 | "dist": { 1926 | "type": "zip", 1927 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", 1928 | "reference": "30885182c981ab175d4d034db0f6f469898070ab", 1929 | "shasum": "" 1930 | }, 1931 | "require": { 1932 | "php": ">=7.1" 1933 | }, 1934 | "provide": { 1935 | "ext-ctype": "*" 1936 | }, 1937 | "suggest": { 1938 | "ext-ctype": "For best performance" 1939 | }, 1940 | "type": "library", 1941 | "extra": { 1942 | "branch-alias": { 1943 | "dev-main": "1.23-dev" 1944 | }, 1945 | "thanks": { 1946 | "name": "symfony/polyfill", 1947 | "url": "https://github.com/symfony/polyfill" 1948 | } 1949 | }, 1950 | "autoload": { 1951 | "files": [ 1952 | "bootstrap.php" 1953 | ], 1954 | "psr-4": { 1955 | "Symfony\\Polyfill\\Ctype\\": "" 1956 | } 1957 | }, 1958 | "notification-url": "https://packagist.org/downloads/", 1959 | "license": [ 1960 | "MIT" 1961 | ], 1962 | "authors": [ 1963 | { 1964 | "name": "Gert de Pagter", 1965 | "email": "BackEndTea@gmail.com" 1966 | }, 1967 | { 1968 | "name": "Symfony Community", 1969 | "homepage": "https://symfony.com/contributors" 1970 | } 1971 | ], 1972 | "description": "Symfony polyfill for ctype functions", 1973 | "homepage": "https://symfony.com", 1974 | "keywords": [ 1975 | "compatibility", 1976 | "ctype", 1977 | "polyfill", 1978 | "portable" 1979 | ], 1980 | "support": { 1981 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" 1982 | }, 1983 | "funding": [ 1984 | { 1985 | "url": "https://symfony.com/sponsor", 1986 | "type": "custom" 1987 | }, 1988 | { 1989 | "url": "https://github.com/fabpot", 1990 | "type": "github" 1991 | }, 1992 | { 1993 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1994 | "type": "tidelift" 1995 | } 1996 | ], 1997 | "time": "2021-10-20T20:35:02+00:00" 1998 | }, 1999 | { 2000 | "name": "theseer/tokenizer", 2001 | "version": "1.2.1", 2002 | "source": { 2003 | "type": "git", 2004 | "url": "https://github.com/theseer/tokenizer.git", 2005 | "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" 2006 | }, 2007 | "dist": { 2008 | "type": "zip", 2009 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", 2010 | "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", 2011 | "shasum": "" 2012 | }, 2013 | "require": { 2014 | "ext-dom": "*", 2015 | "ext-tokenizer": "*", 2016 | "ext-xmlwriter": "*", 2017 | "php": "^7.2 || ^8.0" 2018 | }, 2019 | "type": "library", 2020 | "autoload": { 2021 | "classmap": [ 2022 | "src/" 2023 | ] 2024 | }, 2025 | "notification-url": "https://packagist.org/downloads/", 2026 | "license": [ 2027 | "BSD-3-Clause" 2028 | ], 2029 | "authors": [ 2030 | { 2031 | "name": "Arne Blankerts", 2032 | "email": "arne@blankerts.de", 2033 | "role": "Developer" 2034 | } 2035 | ], 2036 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 2037 | "support": { 2038 | "issues": "https://github.com/theseer/tokenizer/issues", 2039 | "source": "https://github.com/theseer/tokenizer/tree/1.2.1" 2040 | }, 2041 | "funding": [ 2042 | { 2043 | "url": "https://github.com/theseer", 2044 | "type": "github" 2045 | } 2046 | ], 2047 | "time": "2021-07-28T10:34:58+00:00" 2048 | }, 2049 | { 2050 | "name": "webmozart/assert", 2051 | "version": "1.10.0", 2052 | "source": { 2053 | "type": "git", 2054 | "url": "https://github.com/webmozarts/assert.git", 2055 | "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" 2056 | }, 2057 | "dist": { 2058 | "type": "zip", 2059 | "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", 2060 | "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", 2061 | "shasum": "" 2062 | }, 2063 | "require": { 2064 | "php": "^7.2 || ^8.0", 2065 | "symfony/polyfill-ctype": "^1.8" 2066 | }, 2067 | "conflict": { 2068 | "phpstan/phpstan": "<0.12.20", 2069 | "vimeo/psalm": "<4.6.1 || 4.6.2" 2070 | }, 2071 | "require-dev": { 2072 | "phpunit/phpunit": "^8.5.13" 2073 | }, 2074 | "type": "library", 2075 | "extra": { 2076 | "branch-alias": { 2077 | "dev-master": "1.10-dev" 2078 | } 2079 | }, 2080 | "autoload": { 2081 | "psr-4": { 2082 | "Webmozart\\Assert\\": "src/" 2083 | } 2084 | }, 2085 | "notification-url": "https://packagist.org/downloads/", 2086 | "license": [ 2087 | "MIT" 2088 | ], 2089 | "authors": [ 2090 | { 2091 | "name": "Bernhard Schussek", 2092 | "email": "bschussek@gmail.com" 2093 | } 2094 | ], 2095 | "description": "Assertions to validate method input/output with nice error messages.", 2096 | "keywords": [ 2097 | "assert", 2098 | "check", 2099 | "validate" 2100 | ], 2101 | "support": { 2102 | "issues": "https://github.com/webmozarts/assert/issues", 2103 | "source": "https://github.com/webmozarts/assert/tree/1.10.0" 2104 | }, 2105 | "time": "2021-03-09T10:59:23+00:00" 2106 | } 2107 | ], 2108 | "packages-dev": [], 2109 | "aliases": [], 2110 | "minimum-stability": "stable", 2111 | "stability-flags": [], 2112 | "prefer-stable": false, 2113 | "prefer-lowest": false, 2114 | "platform": [], 2115 | "platform-dev": [], 2116 | "plugin-api-version": "2.1.0" 2117 | } 2118 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.7" 2 | services: 3 | mysql: 4 | image: mysql:8.0.28 5 | ports: 6 | - 3306:3306 7 | command: --default-authentication-plugin=mysql_native_password 8 | environment: 9 | - MYSQL_ROOT_PASSWORD=123456 10 | - MYSQL_DATABASE=strategydb 11 | -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 20 | tests 21 | 22 | 23 | 24 | 26 | 27 | src 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/Logger/MyLogger.php: -------------------------------------------------------------------------------- 1 | type === 'console') { 18 | echo $formatedMessage; 19 | } 20 | 21 | if ($this->type === 'file') { 22 | file_put_contents('logs.txt', $formatedMessage); 23 | } 24 | } 25 | 26 | public function warning(string $message) 27 | { 28 | $formatedMessage = 'Warning: ' . $message . "\r\n"; 29 | 30 | if ($this->type === 'console') { 31 | echo $formatedMessage; 32 | } 33 | 34 | if ($this->type === 'file') { 35 | file_put_contents('logs.txt', $formatedMessage); 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /strategy_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leoqbc/DesignPatternsPHP-Strategy/32eb867dce4f33f031173926c168638685af7378/strategy_image.png -------------------------------------------------------------------------------- /tests/MyLoggerTest.php: -------------------------------------------------------------------------------- 1 | consoleLog = new MyLogger('console'); 15 | $this->fileLog = new MyLogger('file'); 16 | } 17 | 18 | public function tearDown(): void 19 | { 20 | if (file_exists('logs.txt')) { 21 | unlink('logs.txt'); 22 | } 23 | } 24 | 25 | public function testClassLoggerShouldLogErrorInConsole() 26 | { 27 | $message = 'Olá mundo via logger'; 28 | 29 | $this->expectOutputString("Error: Olá mundo via logger\r\n"); 30 | 31 | $this->consoleLog->error($message); 32 | } 33 | 34 | public function testClassLoggerShouldLogWarningInConsole() 35 | { 36 | $message = 'Olá mundo via logger'; 37 | 38 | $this->expectOutputString("Warning: Olá mundo via logger\r\n"); 39 | 40 | $this->consoleLog->warning($message); 41 | } 42 | 43 | public function testClassLoggerShouldLogErrorInFile() 44 | { 45 | $message = 'Olá mundo via arquivo'; 46 | 47 | $this->fileLog->error($message); 48 | 49 | $this->assertFileEquals('fixtures/log_error.txt', 'logs.txt'); 50 | } 51 | 52 | public function testClassLoggerShouldLogWarningInFile() 53 | { 54 | $message = 'Olá mundo via arquivo'; 55 | 56 | $this->fileLog->warning($message); 57 | 58 | $this->assertFileEquals('fixtures/log_warning.txt', 'logs.txt'); 59 | } 60 | } -------------------------------------------------------------------------------- /tests/fixtures/log_error.txt: -------------------------------------------------------------------------------- 1 | Error: Olá mundo via arquivo 2 | -------------------------------------------------------------------------------- /tests/fixtures/log_warning.txt: -------------------------------------------------------------------------------- 1 | Warning: Olá mundo via arquivo 2 | --------------------------------------------------------------------------------