removal of unnecessary file, and composer update

This commit is contained in:
2019-01-09 23:31:31 -06:00
parent a90688deb6
commit e4380f2ffe
604 changed files with 32070 additions and 26824 deletions

View File

@@ -1,18 +0,0 @@
<?php
namespace App\Library;
use DB;
use App\Models\Corporation\CorpJournal;
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Client;
use GuzzleHttp\RequestOptions;
class SeatHelper {
// Nothing to do here right now
}
?>

188
composer.lock generated
View File

@@ -742,16 +742,16 @@
},
{
"name": "laravel/framework",
"version": "v5.7.19",
"version": "v5.7.20",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
"reference": "5c1d1ec7e8563ea31826fd5eb3f6791acf01160c"
"reference": "10cd20294b5668f90ba91996236834e71f7ff670"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/5c1d1ec7e8563ea31826fd5eb3f6791acf01160c",
"reference": "5c1d1ec7e8563ea31826fd5eb3f6791acf01160c",
"url": "https://api.github.com/repos/laravel/framework/zipball/10cd20294b5668f90ba91996236834e71f7ff670",
"reference": "10cd20294b5668f90ba91996236834e71f7ff670",
"shasum": ""
},
"require": {
@@ -825,7 +825,7 @@
"moontoast/math": "^1.1",
"orchestra/testbench-core": "3.7.*",
"pda/pheanstalk": "^3.0",
"phpunit/phpunit": "^7.0",
"phpunit/phpunit": "^7.5",
"predis/predis": "^1.1.1",
"symfony/css-selector": "^4.1",
"symfony/dom-crawler": "^4.1",
@@ -884,7 +884,7 @@
"framework",
"laravel"
],
"time": "2018-12-18T14:00:38+00:00"
"time": "2019-01-08T14:39:11+00:00"
},
{
"name": "laravel/nexmo-notification-channel",
@@ -1479,16 +1479,16 @@
},
{
"name": "nesbot/carbon",
"version": "1.36.1",
"version": "1.36.2",
"source": {
"type": "git",
"url": "https://github.com/briannesbitt/Carbon.git",
"reference": "63da8cdf89d7a5efe43aabc794365f6e7b7b8983"
"reference": "cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/63da8cdf89d7a5efe43aabc794365f6e7b7b8983",
"reference": "63da8cdf89d7a5efe43aabc794365f6e7b7b8983",
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9",
"reference": "cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9",
"shasum": ""
},
"require": {
@@ -1533,7 +1533,7 @@
"datetime",
"time"
],
"time": "2018-11-22T18:23:02+00:00"
"time": "2018-12-28T10:07:33+00:00"
},
{
"name": "nexmo/client",
@@ -1585,16 +1585,16 @@
},
{
"name": "nikic/php-parser",
"version": "v4.1.0",
"version": "v4.1.1",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "d0230c5c77a7e3cfa69446febf340978540958c0"
"reference": "8aae5b59b83bb4d0dbf07b0a835f2680a658f610"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/d0230c5c77a7e3cfa69446febf340978540958c0",
"reference": "d0230c5c77a7e3cfa69446febf340978540958c0",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8aae5b59b83bb4d0dbf07b0a835f2680a658f610",
"reference": "8aae5b59b83bb4d0dbf07b0a835f2680a658f610",
"shasum": ""
},
"require": {
@@ -1632,7 +1632,7 @@
"parser",
"php"
],
"time": "2018-10-10T09:24:14+00:00"
"time": "2018-12-26T11:32:39+00:00"
},
{
"name": "nullx27/eveonline-socialite",
@@ -1681,16 +1681,16 @@
},
{
"name": "opis/closure",
"version": "3.1.2",
"version": "3.1.3",
"source": {
"type": "git",
"url": "https://github.com/opis/closure.git",
"reference": "de00c69a2328d3ee5baa71fc584dc643222a574c"
"reference": "5e9095ce871a425ab87a854b285b7766de38a7d9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/opis/closure/zipball/de00c69a2328d3ee5baa71fc584dc643222a574c",
"reference": "de00c69a2328d3ee5baa71fc584dc643222a574c",
"url": "https://api.github.com/repos/opis/closure/zipball/5e9095ce871a425ab87a854b285b7766de38a7d9",
"reference": "5e9095ce871a425ab87a854b285b7766de38a7d9",
"shasum": ""
},
"require": {
@@ -1703,7 +1703,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0.x-dev"
"dev-master": "3.1.x-dev"
}
},
"autoload": {
@@ -1738,7 +1738,7 @@
"serialization",
"serialize"
],
"time": "2018-12-16T21:48:23+00:00"
"time": "2019-01-06T22:07:38+00:00"
},
{
"name": "paragonie/random_compat",
@@ -2452,16 +2452,16 @@
},
{
"name": "symfony/console",
"version": "v4.2.1",
"version": "v4.2.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "4dff24e5d01e713818805c1862d2e3f901ee7dd0"
"reference": "b0a03c1bb0fcbe288629956cf2f1dd3f1dc97522"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/4dff24e5d01e713818805c1862d2e3f901ee7dd0",
"reference": "4dff24e5d01e713818805c1862d2e3f901ee7dd0",
"url": "https://api.github.com/repos/symfony/console/zipball/b0a03c1bb0fcbe288629956cf2f1dd3f1dc97522",
"reference": "b0a03c1bb0fcbe288629956cf2f1dd3f1dc97522",
"shasum": ""
},
"require": {
@@ -2517,7 +2517,7 @@
],
"description": "Symfony Console Component",
"homepage": "https://symfony.com",
"time": "2018-11-27T07:40:44+00:00"
"time": "2019-01-04T15:13:53+00:00"
},
{
"name": "symfony/contracts",
@@ -2589,16 +2589,16 @@
},
{
"name": "symfony/css-selector",
"version": "v4.2.1",
"version": "v4.2.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
"reference": "aa9fa526ba1b2ec087ffdfb32753803d999fcfcd"
"reference": "76dac1dbe2830213e95892c7c2ec1edd74113ea4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/css-selector/zipball/aa9fa526ba1b2ec087ffdfb32753803d999fcfcd",
"reference": "aa9fa526ba1b2ec087ffdfb32753803d999fcfcd",
"url": "https://api.github.com/repos/symfony/css-selector/zipball/76dac1dbe2830213e95892c7c2ec1edd74113ea4",
"reference": "76dac1dbe2830213e95892c7c2ec1edd74113ea4",
"shasum": ""
},
"require": {
@@ -2638,20 +2638,20 @@
],
"description": "Symfony CssSelector Component",
"homepage": "https://symfony.com",
"time": "2018-11-11T19:52:12+00:00"
"time": "2019-01-03T09:07:35+00:00"
},
{
"name": "symfony/debug",
"version": "v4.2.1",
"version": "v4.2.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
"reference": "e0a2b92ee0b5b934f973d90c2f58e18af109d276"
"reference": "64cb33c81e37d19b7715d4a6a4d49c1c382066dd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/debug/zipball/e0a2b92ee0b5b934f973d90c2f58e18af109d276",
"reference": "e0a2b92ee0b5b934f973d90c2f58e18af109d276",
"url": "https://api.github.com/repos/symfony/debug/zipball/64cb33c81e37d19b7715d4a6a4d49c1c382066dd",
"reference": "64cb33c81e37d19b7715d4a6a4d49c1c382066dd",
"shasum": ""
},
"require": {
@@ -2694,20 +2694,20 @@
],
"description": "Symfony Debug Component",
"homepage": "https://symfony.com",
"time": "2018-11-28T18:24:18+00:00"
"time": "2019-01-03T09:07:35+00:00"
},
{
"name": "symfony/event-dispatcher",
"version": "v4.2.1",
"version": "v4.2.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
"reference": "921f49c3158a276d27c0d770a5a347a3b718b328"
"reference": "887de6d34c86cf0cb6cbf910afb170cdb743cb5e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/921f49c3158a276d27c0d770a5a347a3b718b328",
"reference": "921f49c3158a276d27c0d770a5a347a3b718b328",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/887de6d34c86cf0cb6cbf910afb170cdb743cb5e",
"reference": "887de6d34c86cf0cb6cbf910afb170cdb743cb5e",
"shasum": ""
},
"require": {
@@ -2758,20 +2758,20 @@
],
"description": "Symfony EventDispatcher Component",
"homepage": "https://symfony.com",
"time": "2018-12-01T08:52:38+00:00"
"time": "2019-01-05T16:37:49+00:00"
},
{
"name": "symfony/finder",
"version": "v4.2.1",
"version": "v4.2.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
"reference": "e53d477d7b5c4982d0e1bfd2298dbee63d01441d"
"reference": "9094d69e8c6ee3fe186a0ec5a4f1401e506071ce"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/e53d477d7b5c4982d0e1bfd2298dbee63d01441d",
"reference": "e53d477d7b5c4982d0e1bfd2298dbee63d01441d",
"url": "https://api.github.com/repos/symfony/finder/zipball/9094d69e8c6ee3fe186a0ec5a4f1401e506071ce",
"reference": "9094d69e8c6ee3fe186a0ec5a4f1401e506071ce",
"shasum": ""
},
"require": {
@@ -2807,20 +2807,20 @@
],
"description": "Symfony Finder Component",
"homepage": "https://symfony.com",
"time": "2018-11-11T19:52:12+00:00"
"time": "2019-01-03T09:07:35+00:00"
},
{
"name": "symfony/http-foundation",
"version": "v4.2.1",
"version": "v4.2.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
"reference": "1b31f3017fadd8cb05cf2c8aebdbf3b12a943851"
"reference": "a633d422a09242064ba24e44a6e1494c5126de86"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/1b31f3017fadd8cb05cf2c8aebdbf3b12a943851",
"reference": "1b31f3017fadd8cb05cf2c8aebdbf3b12a943851",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/a633d422a09242064ba24e44a6e1494c5126de86",
"reference": "a633d422a09242064ba24e44a6e1494c5126de86",
"shasum": ""
},
"require": {
@@ -2861,20 +2861,20 @@
],
"description": "Symfony HttpFoundation Component",
"homepage": "https://symfony.com",
"time": "2018-11-26T10:55:26+00:00"
"time": "2019-01-05T16:37:49+00:00"
},
{
"name": "symfony/http-kernel",
"version": "v4.2.1",
"version": "v4.2.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
"reference": "b39ceffc0388232c309cbde3a7c3685f2ec0a624"
"reference": "83de6543328917c18d5498eeb6bb6d36f7aab31b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/b39ceffc0388232c309cbde3a7c3685f2ec0a624",
"reference": "b39ceffc0388232c309cbde3a7c3685f2ec0a624",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/83de6543328917c18d5498eeb6bb6d36f7aab31b",
"reference": "83de6543328917c18d5498eeb6bb6d36f7aab31b",
"shasum": ""
},
"require": {
@@ -2950,7 +2950,7 @@
],
"description": "Symfony HttpKernel Component",
"homepage": "https://symfony.com",
"time": "2018-12-06T17:39:52+00:00"
"time": "2019-01-06T16:19:23+00:00"
},
{
"name": "symfony/polyfill-ctype",
@@ -3126,16 +3126,16 @@
},
{
"name": "symfony/process",
"version": "v4.2.1",
"version": "v4.2.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "2b341009ccec76837a7f46f59641b431e4d4c2b0"
"reference": "ea043ab5d8ed13b467a9087d81cb876aee7f689a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/2b341009ccec76837a7f46f59641b431e4d4c2b0",
"reference": "2b341009ccec76837a7f46f59641b431e4d4c2b0",
"url": "https://api.github.com/repos/symfony/process/zipball/ea043ab5d8ed13b467a9087d81cb876aee7f689a",
"reference": "ea043ab5d8ed13b467a9087d81cb876aee7f689a",
"shasum": ""
},
"require": {
@@ -3171,20 +3171,20 @@
],
"description": "Symfony Process Component",
"homepage": "https://symfony.com",
"time": "2018-11-20T16:22:05+00:00"
"time": "2019-01-03T14:48:52+00:00"
},
{
"name": "symfony/routing",
"version": "v4.2.1",
"version": "v4.2.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
"reference": "649460207e77da6c545326c7f53618d23ad2c866"
"reference": "e69b7a13a0b58af378a49b49dd7084462de16cee"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/routing/zipball/649460207e77da6c545326c7f53618d23ad2c866",
"reference": "649460207e77da6c545326c7f53618d23ad2c866",
"url": "https://api.github.com/repos/symfony/routing/zipball/e69b7a13a0b58af378a49b49dd7084462de16cee",
"reference": "e69b7a13a0b58af378a49b49dd7084462de16cee",
"shasum": ""
},
"require": {
@@ -3248,20 +3248,20 @@
"uri",
"url"
],
"time": "2018-12-03T22:08:12+00:00"
"time": "2019-01-03T09:07:35+00:00"
},
{
"name": "symfony/translation",
"version": "v4.2.1",
"version": "v4.2.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
"reference": "c0e2191e9bed845946ab3d99767513b56ca7dcd6"
"reference": "939fb792d73f2ce80e6ae9019d205fc480f1c9a0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/translation/zipball/c0e2191e9bed845946ab3d99767513b56ca7dcd6",
"reference": "c0e2191e9bed845946ab3d99767513b56ca7dcd6",
"url": "https://api.github.com/repos/symfony/translation/zipball/939fb792d73f2ce80e6ae9019d205fc480f1c9a0",
"reference": "939fb792d73f2ce80e6ae9019d205fc480f1c9a0",
"shasum": ""
},
"require": {
@@ -3321,20 +3321,20 @@
],
"description": "Symfony Translation Component",
"homepage": "https://symfony.com",
"time": "2018-12-06T10:45:32+00:00"
"time": "2019-01-03T09:07:35+00:00"
},
{
"name": "symfony/var-dumper",
"version": "v4.2.1",
"version": "v4.2.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
"reference": "db61258540350725f4beb6b84006e32398acd120"
"reference": "85bde661b178173d85c6f11ea9d03b61d1212bb2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/db61258540350725f4beb6b84006e32398acd120",
"reference": "db61258540350725f4beb6b84006e32398acd120",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/85bde661b178173d85c6f11ea9d03b61d1212bb2",
"reference": "85bde661b178173d85c6f11ea9d03b61d1212bb2",
"shasum": ""
},
"require": {
@@ -3348,6 +3348,7 @@
},
"require-dev": {
"ext-iconv": "*",
"symfony/console": "~3.4|~4.0",
"symfony/process": "~3.4|~4.0",
"twig/twig": "~1.34|~2.4"
},
@@ -3396,7 +3397,7 @@
"debug",
"dump"
],
"time": "2018-11-25T12:50:42+00:00"
"time": "2019-01-03T09:07:35+00:00"
},
{
"name": "tijsverkoyen/css-to-inline-styles",
@@ -3447,16 +3448,16 @@
},
{
"name": "twbs/bootstrap",
"version": "v4.1.3",
"version": "v4.2.1",
"source": {
"type": "git",
"url": "https://github.com/twbs/bootstrap.git",
"reference": "3b558734382ce58b51e5fc676453bfd53bba9201"
"reference": "9e4e94747bd698f4f61d48ed54c9c6d4d199bd32"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twbs/bootstrap/zipball/3b558734382ce58b51e5fc676453bfd53bba9201",
"reference": "3b558734382ce58b51e5fc676453bfd53bba9201",
"url": "https://api.github.com/repos/twbs/bootstrap/zipball/9e4e94747bd698f4f61d48ed54c9c6d4d199bd32",
"reference": "9e4e94747bd698f4f61d48ed54c9c6d4d199bd32",
"shasum": ""
},
"replace": {
@@ -3494,20 +3495,20 @@
"sass",
"web"
],
"time": "2018-07-24T15:54:34+00:00"
"time": "2018-12-21T18:55:28+00:00"
},
{
"name": "vlucas/phpdotenv",
"version": "v2.5.1",
"version": "v2.5.2",
"source": {
"type": "git",
"url": "https://github.com/vlucas/phpdotenv.git",
"reference": "8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e"
"reference": "cfd5dc225767ca154853752abc93aeec040fcf36"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e",
"reference": "8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e",
"url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/cfd5dc225767ca154853752abc93aeec040fcf36",
"reference": "cfd5dc225767ca154853752abc93aeec040fcf36",
"shasum": ""
},
"require": {
@@ -3544,7 +3545,7 @@
"env",
"environment"
],
"time": "2018-07-29T20:33:41+00:00"
"time": "2018-10-30T17:29:25+00:00"
},
{
"name": "zendframework/zend-diactoros",
@@ -5321,20 +5322,21 @@
},
{
"name": "webmozart/assert",
"version": "1.3.0",
"version": "1.4.0",
"source": {
"type": "git",
"url": "https://github.com/webmozart/assert.git",
"reference": "0df1908962e7a3071564e857d86874dad1ef204a"
"reference": "83e253c8e0be5b0257b881e1827274667c5c17a9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
"reference": "0df1908962e7a3071564e857d86874dad1ef204a",
"url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9",
"reference": "83e253c8e0be5b0257b881e1827274667c5c17a9",
"shasum": ""
},
"require": {
"php": "^5.3.3 || ^7.0"
"php": "^5.3.3 || ^7.0",
"symfony/polyfill-ctype": "^1.8"
},
"require-dev": {
"phpunit/phpunit": "^4.6",
@@ -5367,7 +5369,7 @@
"check",
"validate"
],
"time": "2018-01-29T19:49:41+00:00"
"time": "2018-12-25T11:19:39+00:00"
}
],
"aliases": [],

View File

@@ -65,7 +65,6 @@ return array(
'App\\Library\\Lookups\\LookupHelper' => $baseDir . '/app/Library/Lookups/LookupHelper.php',
'App\\Library\\Moons\\MoonCalc' => $baseDir . '/app/Library/Moons/MoonCalc.php',
'App\\Library\\Moons\\MoonMine' => $baseDir . '/app/Library/Moons/MoonMine.php',
'App\\Library\\SeatHelper' => $baseDir . '/app/Library/SeatHelper.php',
'App\\Library\\Structures\\JumpBridgeFuel' => $baseDir . '/app/Library/Structures/JumpBridgeFuel.php',
'App\\Library\\Structures\\StructureTaxHelper' => $baseDir . '/app/Library/Structures/StructureTaxHelper.php',
'App\\Models\\Character\\CharacterToCorporation' => $baseDir . '/app/Models/Charcter/CharacterToCorporation.php',

View File

@@ -519,7 +519,6 @@ class ComposerStaticInitc3f953f8a7291d41a76e1664339777c9
'App\\Library\\Lookups\\LookupHelper' => __DIR__ . '/../..' . '/app/Library/Lookups/LookupHelper.php',
'App\\Library\\Moons\\MoonCalc' => __DIR__ . '/../..' . '/app/Library/Moons/MoonCalc.php',
'App\\Library\\Moons\\MoonMine' => __DIR__ . '/../..' . '/app/Library/Moons/MoonMine.php',
'App\\Library\\SeatHelper' => __DIR__ . '/../..' . '/app/Library/SeatHelper.php',
'App\\Library\\Structures\\JumpBridgeFuel' => __DIR__ . '/../..' . '/app/Library/Structures/JumpBridgeFuel.php',
'App\\Library\\Structures\\StructureTaxHelper' => __DIR__ . '/../..' . '/app/Library/Structures/StructureTaxHelper.php',
'App\\Models\\Character\\CharacterToCorporation' => __DIR__ . '/../..' . '/app/Models/Charcter/CharacterToCorporation.php',

View File

@@ -1047,17 +1047,17 @@
},
{
"name": "laravel/framework",
"version": "v5.7.19",
"version_normalized": "5.7.19.0",
"version": "v5.7.20",
"version_normalized": "5.7.20.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
"reference": "5c1d1ec7e8563ea31826fd5eb3f6791acf01160c"
"reference": "10cd20294b5668f90ba91996236834e71f7ff670"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/5c1d1ec7e8563ea31826fd5eb3f6791acf01160c",
"reference": "5c1d1ec7e8563ea31826fd5eb3f6791acf01160c",
"url": "https://api.github.com/repos/laravel/framework/zipball/10cd20294b5668f90ba91996236834e71f7ff670",
"reference": "10cd20294b5668f90ba91996236834e71f7ff670",
"shasum": ""
},
"require": {
@@ -1131,7 +1131,7 @@
"moontoast/math": "^1.1",
"orchestra/testbench-core": "3.7.*",
"pda/pheanstalk": "^3.0",
"phpunit/phpunit": "^7.0",
"phpunit/phpunit": "^7.5",
"predis/predis": "^1.1.1",
"symfony/css-selector": "^4.1",
"symfony/dom-crawler": "^4.1",
@@ -1159,7 +1159,7 @@
"symfony/dom-crawler": "Required to use most of the crawler integration testing tools (^4.1).",
"symfony/psr-http-message-bridge": "Required to psr7 bridging features (^1.0)."
},
"time": "2018-12-18T14:00:38+00:00",
"time": "2019-01-08T14:39:11+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -1921,17 +1921,17 @@
},
{
"name": "nesbot/carbon",
"version": "1.36.1",
"version_normalized": "1.36.1.0",
"version": "1.36.2",
"version_normalized": "1.36.2.0",
"source": {
"type": "git",
"url": "https://github.com/briannesbitt/Carbon.git",
"reference": "63da8cdf89d7a5efe43aabc794365f6e7b7b8983"
"reference": "cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/63da8cdf89d7a5efe43aabc794365f6e7b7b8983",
"reference": "63da8cdf89d7a5efe43aabc794365f6e7b7b8983",
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9",
"reference": "cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9",
"shasum": ""
},
"require": {
@@ -1945,7 +1945,7 @@
"friendsofphp/php-cs-fixer": "Needed for the `composer phpcs` command. Allow to automatically fix code style.",
"phpstan/phpstan": "Needed for the `composer phpstan` command. Allow to detect potential errors."
},
"time": "2018-11-22T18:23:02+00:00",
"time": "2018-12-28T10:07:33+00:00",
"type": "library",
"extra": {
"laravel": {
@@ -2031,17 +2031,17 @@
},
{
"name": "nikic/php-parser",
"version": "v4.1.0",
"version_normalized": "4.1.0.0",
"version": "v4.1.1",
"version_normalized": "4.1.1.0",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "d0230c5c77a7e3cfa69446febf340978540958c0"
"reference": "8aae5b59b83bb4d0dbf07b0a835f2680a658f610"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/d0230c5c77a7e3cfa69446febf340978540958c0",
"reference": "d0230c5c77a7e3cfa69446febf340978540958c0",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8aae5b59b83bb4d0dbf07b0a835f2680a658f610",
"reference": "8aae5b59b83bb4d0dbf07b0a835f2680a658f610",
"shasum": ""
},
"require": {
@@ -2051,7 +2051,7 @@
"require-dev": {
"phpunit/phpunit": "^6.5 || ^7.0"
},
"time": "2018-10-10T09:24:14+00:00",
"time": "2018-12-26T11:32:39+00:00",
"bin": [
"bin/php-parse"
],
@@ -2197,17 +2197,17 @@
},
{
"name": "opis/closure",
"version": "3.1.2",
"version_normalized": "3.1.2.0",
"version": "3.1.3",
"version_normalized": "3.1.3.0",
"source": {
"type": "git",
"url": "https://github.com/opis/closure.git",
"reference": "de00c69a2328d3ee5baa71fc584dc643222a574c"
"reference": "5e9095ce871a425ab87a854b285b7766de38a7d9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/opis/closure/zipball/de00c69a2328d3ee5baa71fc584dc643222a574c",
"reference": "de00c69a2328d3ee5baa71fc584dc643222a574c",
"url": "https://api.github.com/repos/opis/closure/zipball/5e9095ce871a425ab87a854b285b7766de38a7d9",
"reference": "5e9095ce871a425ab87a854b285b7766de38a7d9",
"shasum": ""
},
"require": {
@@ -2217,11 +2217,11 @@
"jeremeamia/superclosure": "^2.0",
"phpunit/phpunit": "^4.0|^5.0|^6.0|^7.0"
},
"time": "2018-12-16T21:48:23+00:00",
"time": "2019-01-06T22:07:38+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0.x-dev"
"dev-master": "3.1.x-dev"
}
},
"installation-source": "dist",
@@ -4258,17 +4258,17 @@
},
{
"name": "symfony/console",
"version": "v4.2.1",
"version_normalized": "4.2.1.0",
"version": "v4.2.2",
"version_normalized": "4.2.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "4dff24e5d01e713818805c1862d2e3f901ee7dd0"
"reference": "b0a03c1bb0fcbe288629956cf2f1dd3f1dc97522"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/4dff24e5d01e713818805c1862d2e3f901ee7dd0",
"reference": "4dff24e5d01e713818805c1862d2e3f901ee7dd0",
"url": "https://api.github.com/repos/symfony/console/zipball/b0a03c1bb0fcbe288629956cf2f1dd3f1dc97522",
"reference": "b0a03c1bb0fcbe288629956cf2f1dd3f1dc97522",
"shasum": ""
},
"require": {
@@ -4294,7 +4294,7 @@
"symfony/lock": "",
"symfony/process": ""
},
"time": "2018-11-27T07:40:44+00:00",
"time": "2019-01-04T15:13:53+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -4399,23 +4399,23 @@
},
{
"name": "symfony/css-selector",
"version": "v4.2.1",
"version_normalized": "4.2.1.0",
"version": "v4.2.2",
"version_normalized": "4.2.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
"reference": "aa9fa526ba1b2ec087ffdfb32753803d999fcfcd"
"reference": "76dac1dbe2830213e95892c7c2ec1edd74113ea4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/css-selector/zipball/aa9fa526ba1b2ec087ffdfb32753803d999fcfcd",
"reference": "aa9fa526ba1b2ec087ffdfb32753803d999fcfcd",
"url": "https://api.github.com/repos/symfony/css-selector/zipball/76dac1dbe2830213e95892c7c2ec1edd74113ea4",
"reference": "76dac1dbe2830213e95892c7c2ec1edd74113ea4",
"shasum": ""
},
"require": {
"php": "^7.1.3"
},
"time": "2018-11-11T19:52:12+00:00",
"time": "2019-01-03T09:07:35+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -4454,17 +4454,17 @@
},
{
"name": "symfony/debug",
"version": "v4.2.1",
"version_normalized": "4.2.1.0",
"version": "v4.2.2",
"version_normalized": "4.2.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
"reference": "e0a2b92ee0b5b934f973d90c2f58e18af109d276"
"reference": "64cb33c81e37d19b7715d4a6a4d49c1c382066dd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/debug/zipball/e0a2b92ee0b5b934f973d90c2f58e18af109d276",
"reference": "e0a2b92ee0b5b934f973d90c2f58e18af109d276",
"url": "https://api.github.com/repos/symfony/debug/zipball/64cb33c81e37d19b7715d4a6a4d49c1c382066dd",
"reference": "64cb33c81e37d19b7715d4a6a4d49c1c382066dd",
"shasum": ""
},
"require": {
@@ -4477,7 +4477,7 @@
"require-dev": {
"symfony/http-kernel": "~3.4|~4.0"
},
"time": "2018-11-28T18:24:18+00:00",
"time": "2019-01-03T09:07:35+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -4512,17 +4512,17 @@
},
{
"name": "symfony/event-dispatcher",
"version": "v4.2.1",
"version_normalized": "4.2.1.0",
"version": "v4.2.2",
"version_normalized": "4.2.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
"reference": "921f49c3158a276d27c0d770a5a347a3b718b328"
"reference": "887de6d34c86cf0cb6cbf910afb170cdb743cb5e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/921f49c3158a276d27c0d770a5a347a3b718b328",
"reference": "921f49c3158a276d27c0d770a5a347a3b718b328",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/887de6d34c86cf0cb6cbf910afb170cdb743cb5e",
"reference": "887de6d34c86cf0cb6cbf910afb170cdb743cb5e",
"shasum": ""
},
"require": {
@@ -4543,7 +4543,7 @@
"symfony/dependency-injection": "",
"symfony/http-kernel": ""
},
"time": "2018-12-01T08:52:38+00:00",
"time": "2019-01-05T16:37:49+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -4578,23 +4578,23 @@
},
{
"name": "symfony/finder",
"version": "v4.2.1",
"version_normalized": "4.2.1.0",
"version": "v4.2.2",
"version_normalized": "4.2.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
"reference": "e53d477d7b5c4982d0e1bfd2298dbee63d01441d"
"reference": "9094d69e8c6ee3fe186a0ec5a4f1401e506071ce"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/e53d477d7b5c4982d0e1bfd2298dbee63d01441d",
"reference": "e53d477d7b5c4982d0e1bfd2298dbee63d01441d",
"url": "https://api.github.com/repos/symfony/finder/zipball/9094d69e8c6ee3fe186a0ec5a4f1401e506071ce",
"reference": "9094d69e8c6ee3fe186a0ec5a4f1401e506071ce",
"shasum": ""
},
"require": {
"php": "^7.1.3"
},
"time": "2018-11-11T19:52:12+00:00",
"time": "2019-01-03T09:07:35+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -4629,17 +4629,17 @@
},
{
"name": "symfony/http-foundation",
"version": "v4.2.1",
"version_normalized": "4.2.1.0",
"version": "v4.2.2",
"version_normalized": "4.2.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
"reference": "1b31f3017fadd8cb05cf2c8aebdbf3b12a943851"
"reference": "a633d422a09242064ba24e44a6e1494c5126de86"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/1b31f3017fadd8cb05cf2c8aebdbf3b12a943851",
"reference": "1b31f3017fadd8cb05cf2c8aebdbf3b12a943851",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/a633d422a09242064ba24e44a6e1494c5126de86",
"reference": "a633d422a09242064ba24e44a6e1494c5126de86",
"shasum": ""
},
"require": {
@@ -4650,7 +4650,7 @@
"predis/predis": "~1.0",
"symfony/expression-language": "~3.4|~4.0"
},
"time": "2018-11-26T10:55:26+00:00",
"time": "2019-01-05T16:37:49+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -4685,17 +4685,17 @@
},
{
"name": "symfony/http-kernel",
"version": "v4.2.1",
"version_normalized": "4.2.1.0",
"version": "v4.2.2",
"version_normalized": "4.2.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
"reference": "b39ceffc0388232c309cbde3a7c3685f2ec0a624"
"reference": "83de6543328917c18d5498eeb6bb6d36f7aab31b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/b39ceffc0388232c309cbde3a7c3685f2ec0a624",
"reference": "b39ceffc0388232c309cbde3a7c3685f2ec0a624",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/83de6543328917c18d5498eeb6bb6d36f7aab31b",
"reference": "83de6543328917c18d5498eeb6bb6d36f7aab31b",
"shasum": ""
},
"require": {
@@ -4741,7 +4741,7 @@
"symfony/dependency-injection": "",
"symfony/var-dumper": ""
},
"time": "2018-12-06T17:39:52+00:00",
"time": "2019-01-06T16:19:23+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -4954,23 +4954,23 @@
},
{
"name": "symfony/process",
"version": "v4.2.1",
"version_normalized": "4.2.1.0",
"version": "v4.2.2",
"version_normalized": "4.2.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "2b341009ccec76837a7f46f59641b431e4d4c2b0"
"reference": "ea043ab5d8ed13b467a9087d81cb876aee7f689a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/2b341009ccec76837a7f46f59641b431e4d4c2b0",
"reference": "2b341009ccec76837a7f46f59641b431e4d4c2b0",
"url": "https://api.github.com/repos/symfony/process/zipball/ea043ab5d8ed13b467a9087d81cb876aee7f689a",
"reference": "ea043ab5d8ed13b467a9087d81cb876aee7f689a",
"shasum": ""
},
"require": {
"php": "^7.1.3"
},
"time": "2018-11-20T16:22:05+00:00",
"time": "2019-01-03T14:48:52+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -5005,17 +5005,17 @@
},
{
"name": "symfony/routing",
"version": "v4.2.1",
"version_normalized": "4.2.1.0",
"version": "v4.2.2",
"version_normalized": "4.2.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
"reference": "649460207e77da6c545326c7f53618d23ad2c866"
"reference": "e69b7a13a0b58af378a49b49dd7084462de16cee"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/routing/zipball/649460207e77da6c545326c7f53618d23ad2c866",
"reference": "649460207e77da6c545326c7f53618d23ad2c866",
"url": "https://api.github.com/repos/symfony/routing/zipball/e69b7a13a0b58af378a49b49dd7084462de16cee",
"reference": "e69b7a13a0b58af378a49b49dd7084462de16cee",
"shasum": ""
},
"require": {
@@ -5043,7 +5043,7 @@
"symfony/http-foundation": "For using a Symfony Request object",
"symfony/yaml": "For using the YAML loader"
},
"time": "2018-12-03T22:08:12+00:00",
"time": "2019-01-03T09:07:35+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -5084,17 +5084,17 @@
},
{
"name": "symfony/translation",
"version": "v4.2.1",
"version_normalized": "4.2.1.0",
"version": "v4.2.2",
"version_normalized": "4.2.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
"reference": "c0e2191e9bed845946ab3d99767513b56ca7dcd6"
"reference": "939fb792d73f2ce80e6ae9019d205fc480f1c9a0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/translation/zipball/c0e2191e9bed845946ab3d99767513b56ca7dcd6",
"reference": "c0e2191e9bed845946ab3d99767513b56ca7dcd6",
"url": "https://api.github.com/repos/symfony/translation/zipball/939fb792d73f2ce80e6ae9019d205fc480f1c9a0",
"reference": "939fb792d73f2ce80e6ae9019d205fc480f1c9a0",
"shasum": ""
},
"require": {
@@ -5124,7 +5124,7 @@
"symfony/config": "",
"symfony/yaml": ""
},
"time": "2018-12-06T10:45:32+00:00",
"time": "2019-01-03T09:07:35+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -5159,17 +5159,17 @@
},
{
"name": "symfony/var-dumper",
"version": "v4.2.1",
"version_normalized": "4.2.1.0",
"version": "v4.2.2",
"version_normalized": "4.2.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
"reference": "db61258540350725f4beb6b84006e32398acd120"
"reference": "85bde661b178173d85c6f11ea9d03b61d1212bb2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/db61258540350725f4beb6b84006e32398acd120",
"reference": "db61258540350725f4beb6b84006e32398acd120",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/85bde661b178173d85c6f11ea9d03b61d1212bb2",
"reference": "85bde661b178173d85c6f11ea9d03b61d1212bb2",
"shasum": ""
},
"require": {
@@ -5183,6 +5183,7 @@
},
"require-dev": {
"ext-iconv": "*",
"symfony/console": "~3.4|~4.0",
"symfony/process": "~3.4|~4.0",
"twig/twig": "~1.34|~2.4"
},
@@ -5191,7 +5192,7 @@
"ext-intl": "To show region name in time zone dump",
"symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script"
},
"time": "2018-11-25T12:50:42+00:00",
"time": "2019-01-03T09:07:35+00:00",
"bin": [
"Resources/bin/var-dump-server"
],
@@ -5327,23 +5328,23 @@
},
{
"name": "twbs/bootstrap",
"version": "v4.1.3",
"version_normalized": "4.1.3.0",
"version": "v4.2.1",
"version_normalized": "4.2.1.0",
"source": {
"type": "git",
"url": "https://github.com/twbs/bootstrap.git",
"reference": "3b558734382ce58b51e5fc676453bfd53bba9201"
"reference": "9e4e94747bd698f4f61d48ed54c9c6d4d199bd32"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twbs/bootstrap/zipball/3b558734382ce58b51e5fc676453bfd53bba9201",
"reference": "3b558734382ce58b51e5fc676453bfd53bba9201",
"url": "https://api.github.com/repos/twbs/bootstrap/zipball/9e4e94747bd698f4f61d48ed54c9c6d4d199bd32",
"reference": "9e4e94747bd698f4f61d48ed54c9c6d4d199bd32",
"shasum": ""
},
"replace": {
"twitter/bootstrap": "self.version"
},
"time": "2018-07-24T15:54:34+00:00",
"time": "2018-12-21T18:55:28+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -5380,17 +5381,17 @@
},
{
"name": "vlucas/phpdotenv",
"version": "v2.5.1",
"version_normalized": "2.5.1.0",
"version": "v2.5.2",
"version_normalized": "2.5.2.0",
"source": {
"type": "git",
"url": "https://github.com/vlucas/phpdotenv.git",
"reference": "8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e"
"reference": "cfd5dc225767ca154853752abc93aeec040fcf36"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e",
"reference": "8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e",
"url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/cfd5dc225767ca154853752abc93aeec040fcf36",
"reference": "cfd5dc225767ca154853752abc93aeec040fcf36",
"shasum": ""
},
"require": {
@@ -5399,7 +5400,7 @@
"require-dev": {
"phpunit/phpunit": "^4.8.35 || ^5.0"
},
"time": "2018-07-29T20:33:41+00:00",
"time": "2018-10-30T17:29:25+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -5432,27 +5433,28 @@
},
{
"name": "webmozart/assert",
"version": "1.3.0",
"version_normalized": "1.3.0.0",
"version": "1.4.0",
"version_normalized": "1.4.0.0",
"source": {
"type": "git",
"url": "https://github.com/webmozart/assert.git",
"reference": "0df1908962e7a3071564e857d86874dad1ef204a"
"reference": "83e253c8e0be5b0257b881e1827274667c5c17a9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
"reference": "0df1908962e7a3071564e857d86874dad1ef204a",
"url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9",
"reference": "83e253c8e0be5b0257b881e1827274667c5c17a9",
"shasum": ""
},
"require": {
"php": "^5.3.3 || ^7.0"
"php": "^5.3.3 || ^7.0",
"symfony/polyfill-ctype": "^1.8"
},
"require-dev": {
"phpunit/phpunit": "^4.6",
"sebastian/version": "^1.0.1"
},
"time": "2018-01-29T19:49:41+00:00",
"time": "2018-12-25T11:19:39+00:00",
"type": "library",
"extra": {
"branch-alias": {

View File

@@ -85,7 +85,7 @@
"moontoast/math": "^1.1",
"orchestra/testbench-core": "3.7.*",
"pda/pheanstalk": "^3.0",
"phpunit/phpunit": "^7.0",
"phpunit/phpunit": "^7.5",
"predis/predis": "^1.1.1",
"symfony/css-selector": "^4.1",
"symfony/dom-crawler": "^4.1",

View File

@@ -223,13 +223,31 @@ class Command extends SymfonyCommand
*/
protected function createInputFromArguments(array $arguments)
{
return tap(new ArrayInput($arguments), function ($input) {
return tap(new ArrayInput(array_merge($this->context(), $arguments)), function ($input) {
if ($input->hasParameterOption(['--no-interaction'], true)) {
$input->setInteractive(false);
}
});
}
/**
* Get all of the context passed to the command.
*
* @return array
*/
protected function context()
{
return collect($this->option())->only([
'ansi',
'no-ansi',
'no-interaction',
'quiet',
'verbose',
])->filter()->mapWithKeys(function ($value, $key) {
return ["--{$key}" => $value];
})->all();
}
/**
* Determine if the given argument is present.
*
@@ -551,6 +569,16 @@ class Command extends SymfonyCommand
return $this->hidden;
}
/**
* {@inheritdoc}
*/
public function setHidden($hidden)
{
parent::setHidden($this->hidden = $hidden);
return $this;
}
/**
* Get the console command arguments.
*

View File

@@ -47,13 +47,13 @@ class FreshCommand extends Command
$this->info('Dropped all tables successfully.');
$this->call('migrate', [
$this->call('migrate', array_filter([
'--database' => $database,
'--path' => $this->input->getOption('path'),
'--realpath' => $this->input->getOption('realpath'),
'--force' => true,
'--step' => $this->option('step'),
]);
]));
if ($this->needsSeeding()) {
$this->runSeeder($database);
@@ -104,11 +104,11 @@ class FreshCommand extends Command
*/
protected function runSeeder($database)
{
$this->call('db:seed', [
$this->call('db:seed', array_filter([
'--database' => $database,
'--class' => $this->option('seeder') ?: 'DatabaseSeeder',
'--force' => $this->option('force'),
]);
'--force' => true,
]));
}
/**

View File

@@ -74,7 +74,7 @@ class MigrateCommand extends BaseCommand
// Finally, if the "seed" option has been given, we will re-run the database
// seed task to re-populate the database, which is convenient when adding
// a migration and a seed at the same time, as it is only this command.
if ($this->option('seed')) {
if ($this->option('seed') && ! $this->option('pretend')) {
$this->call('db:seed', ['--force' => true]);
}
}
@@ -89,9 +89,9 @@ class MigrateCommand extends BaseCommand
$this->migrator->setConnection($this->option('database'));
if (! $this->migrator->repositoryExists()) {
$this->call(
'migrate:install', ['--database' => $this->option('database')]
);
$this->call('migrate:install', array_filter([
'--database' => $this->option('database'),
]));
}
}
}

View File

@@ -42,28 +42,26 @@ class RefreshCommand extends Command
$path = $this->input->getOption('path');
$force = $this->input->getOption('force');
// If the "step" option is specified it means we only want to rollback a small
// number of migrations before migrating again. For example, the user might
// only rollback and remigrate the latest four migrations instead of all.
$step = $this->input->getOption('step') ?: 0;
if ($step > 0) {
$this->runRollback($database, $path, $step, $force);
$this->runRollback($database, $path, $step);
} else {
$this->runReset($database, $path, $force);
$this->runReset($database, $path);
}
// The refresh command is essentially just a brief aggregate of a few other of
// the migration commands and just provides a convenient wrapper to execute
// them in succession. We'll also see if we need to re-seed the database.
$this->call('migrate', [
$this->call('migrate', array_filter([
'--database' => $database,
'--path' => $path,
'--realpath' => $this->input->getOption('realpath'),
'--force' => $force,
]);
'--force' => true,
]));
if ($this->needsSeeding()) {
$this->runSeeder($database);
@@ -75,19 +73,18 @@ class RefreshCommand extends Command
*
* @param string $database
* @param string $path
* @param bool $step
* @param bool $force
* @param int $step
* @return void
*/
protected function runRollback($database, $path, $step, $force)
protected function runRollback($database, $path, $step)
{
$this->call('migrate:rollback', [
$this->call('migrate:rollback', array_filter([
'--database' => $database,
'--path' => $path,
'--realpath' => $this->input->getOption('realpath'),
'--step' => $step,
'--force' => $force,
]);
'--force' => true,
]));
}
/**
@@ -95,17 +92,16 @@ class RefreshCommand extends Command
*
* @param string $database
* @param string $path
* @param bool $force
* @return void
*/
protected function runReset($database, $path, $force)
protected function runReset($database, $path)
{
$this->call('migrate:reset', [
$this->call('migrate:reset', array_filter([
'--database' => $database,
'--path' => $path,
'--realpath' => $this->input->getOption('realpath'),
'--force' => $force,
]);
'--force' => true,
]));
}
/**
@@ -126,11 +122,11 @@ class RefreshCommand extends Command
*/
protected function runSeeder($database)
{
$this->call('db:seed', [
$this->call('db:seed', array_filter([
'--database' => $database,
'--class' => $this->option('seeder') ?: 'DatabaseSeeder',
'--force' => $this->option('force'),
]);
'--force' => true,
]));
}
/**

View File

@@ -34,9 +34,10 @@ trait DetectsLostConnections
'reset by peer',
'Physical connection is not usable',
'TCP Provider: Error code 0x68',
'Name or service not known',
'php_network_getaddresses: getaddrinfo failed: Name or service not known',
'ORA-03114',
'Packets out of order. Expected',
'Adaptive Server connection failed',
]);
}
}

View File

@@ -118,10 +118,14 @@ class Collection extends BaseCollection implements QueueableCollection
$segments[count($segments) - 1] .= ':'.explode(':', $key)[1];
}
$path = array_combine($segments, $segments);
$path = [];
foreach ($segments as $segment) {
$path[] = [$segment => $segment];
}
if (is_callable($value)) {
$path[end($segments)] = $value;
$path[count($segments) - 1][end($segments)] = $value;
}
$this->loadMissingRelation($this, $path);
@@ -139,7 +143,7 @@ class Collection extends BaseCollection implements QueueableCollection
*/
protected function loadMissingRelation(Collection $models, array $path)
{
$relation = array_splice($path, 0, 1);
$relation = array_shift($path);
$name = explode(':', key($relation))[0];
@@ -178,12 +182,8 @@ class Collection extends BaseCollection implements QueueableCollection
->groupBy(function ($model) {
return get_class($model);
})
->filter(function ($models, $className) use ($relations) {
return Arr::has($relations, $className);
})
->each(function ($models, $className) use ($relations) {
$className::with($relations[$className])
->eagerLoadRelations($models->all());
static::make($models)->load($relations[$className] ?? []);
});
return $this;

View File

@@ -1043,7 +1043,7 @@ trait HasAttributes
}
/**
* Determine if the model or given attribute(s) have been modified.
* Determine if the model or any of the given attribute(s) have been modified.
*
* @param array|string|null $attributes
* @return bool
@@ -1056,7 +1056,7 @@ trait HasAttributes
}
/**
* Determine if the model or given attribute(s) have remained the same.
* Determine if the model and all the given attribute(s) have remained the same.
*
* @param array|string|null $attributes
* @return bool
@@ -1067,7 +1067,7 @@ trait HasAttributes
}
/**
* Determine if the model or given attribute(s) have been modified.
* Determine if the model or any of the given attribute(s) have been modified.
*
* @param array|string|null $attributes
* @return bool
@@ -1080,7 +1080,7 @@ trait HasAttributes
}
/**
* Determine if the given attributes were changed.
* Determine if any of the given attributes were changed.
*
* @param array $changes
* @param array|string|null $attributes

View File

@@ -75,6 +75,10 @@ class BelongsTo extends Relation
*/
public function getResults()
{
if (is_null($this->child->{$this->foreignKey})) {
return $this->getDefaultFor($this->parent);
}
return $this->query->first() ?: $this->getDefaultFor($this->parent);
}
@@ -132,13 +136,6 @@ class BelongsTo extends Relation
}
}
// If there are no keys that were not null we will just return an array with null
// so this query wont fail plus returns zero results, which should be what the
// developer expects to happen in this situation. Otherwise we'll sort them.
if (count($keys) === 0) {
return [null];
}
sort($keys);
return array_values(array_unique($keys));

View File

@@ -559,7 +559,9 @@ class BelongsToMany extends Relation
*/
public function getResults()
{
return $this->get();
return ! is_null($this->parent->{$this->parentKey})
? $this->get()
: $this->related->newCollection();
}
/**
@@ -678,6 +680,32 @@ class BelongsToMany extends Relation
});
}
/**
* Chunk the results of a query by comparing numeric IDs.
*
* @param int $count
* @param callable $callback
* @param string|null $column
* @param string|null $alias
* @return bool
*/
public function chunkById($count, callable $callback, $column = null, $alias = null)
{
$this->query->addSelect($this->shouldSelect());
$column = $column ?? $this->getRelated()->qualifyColumn(
$this->getRelatedKeyName()
);
$alias = $alias ?? $this->getRelatedKeyName();
return $this->query->chunkById($count, function ($results) use ($callback) {
$this->hydratePivotRelation($results->all());
return $callback($results);
}, $column, $alias);
}
/**
* Execute a callback over each item while chunking.
*

View File

@@ -13,7 +13,9 @@ class HasMany extends HasOneOrMany
*/
public function getResults()
{
return $this->query->get();
return ! is_null($this->getParentKey())
? $this->query->get()
: $this->related->newCollection();
}
/**

View File

@@ -343,7 +343,9 @@ class HasManyThrough extends Relation
*/
public function getResults()
{
return $this->get();
return ! is_null($this->farParent->{$this->localKey})
? $this->get()
: $this->related->newCollection();
}
/**
@@ -427,6 +429,24 @@ class HasManyThrough extends Relation
return $this->prepareQueryBuilder()->chunk($count, $callback);
}
/**
* Chunk the results of a query by comparing numeric IDs.
*
* @param int $count
* @param callable $callback
* @param string|null $column
* @param string|null $alias
* @return bool
*/
public function chunkById($count, callable $callback, $column = null, $alias = null)
{
$column = $column ?? $this->getRelated()->getQualifiedKeyName();
$alias = $alias ?? $this->getRelated()->getKeyName();
return $this->prepareQueryBuilder()->chunkById($count, $callback, $column, $alias);
}
/**
* Get a generator for the given query.
*

View File

@@ -17,6 +17,10 @@ class HasOne extends HasOneOrMany
*/
public function getResults()
{
if (is_null($this->getParentKey())) {
return $this->getDefaultFor($this->parent);
}
return $this->query->first() ?: $this->getDefaultFor($this->parent);
}

View File

@@ -310,21 +310,6 @@ abstract class HasOneOrMany extends Relation
$model->setAttribute($this->getForeignKeyName(), $this->getParentKey());
}
/**
* Perform an update on all the related models.
*
* @param array $attributes
* @return int
*/
public function update(array $attributes)
{
if ($this->related->usesTimestamps() && ! is_null($this->relatedUpdatedAt())) {
$attributes[$this->relatedUpdatedAt()] = $this->related->freshTimestampString();
}
return $this->query->update($attributes);
}
/**
* Add the constraints for a relationship query.
*

View File

@@ -13,7 +13,9 @@ class MorphMany extends MorphOneOrMany
*/
public function getResults()
{
return $this->query->get();
return ! is_null($this->getParentKey())
? $this->query->get()
: $this->related->newCollection();
}
/**

View File

@@ -17,6 +17,10 @@ class MorphOne extends MorphOneOrMany
*/
public function getResults()
{
if (is_null($this->getParentKey())) {
return $this->getDefaultFor($this->parent);
}
return $this->query->first() ?: $this->getDefaultFor($this->parent);
}

View File

@@ -81,16 +81,6 @@ class MorphTo extends BelongsTo
}
}
/**
* Get the results of the relationship.
*
* @return mixed
*/
public function getResults()
{
return $this->ownerKey ? parent::getResults() : null;
}
/**
* Get the results of the relationship.
*
@@ -227,7 +217,7 @@ class MorphTo extends BelongsTo
*/
public function touch()
{
if (! is_null($this->ownerKey)) {
if (! is_null($this->child->{$this->foreignKey})) {
parent::touch();
}
}

View File

@@ -382,7 +382,7 @@ class Builder
*/
public function join($table, $first, $operator = null, $second = null, $type = 'inner', $where = false)
{
$join = new JoinClause($this, $type, $table);
$join = $this->newJoinClause($this, $type, $table);
// If the first "column" of the join is really a Closure instance the developer
// is trying to build a join with a complex "on" clause containing more than
@@ -550,11 +550,24 @@ class Builder
return $this->join($table, $first, $operator, $second, 'cross');
}
$this->joins[] = new JoinClause($this, 'cross', $table);
$this->joins[] = $this->newJoinClause($this, 'cross', $table);
return $this;
}
/**
* Get a new join clause.
*
* @param \Illuminate\Database\Query\Builder $parentQuery
* @param string $type
* @param string $table
* @return \Illuminate\Database\Query\JoinClause
*/
protected function newJoinClause(self $parentQuery, $type, $table)
{
return new JoinClause($parentQuery, $type, $table);
}
/**
* Merge an array of where clauses and bindings.
*

View File

@@ -4,6 +4,7 @@ namespace Illuminate\Filesystem;
use RuntimeException;
use Illuminate\Http\File;
use Illuminate\Support\Arr;
use Illuminate\Support\Str;
use InvalidArgumentException;
use Illuminate\Support\Carbon;
@@ -50,27 +51,39 @@ class FilesystemAdapter implements FilesystemContract, CloudFilesystemContract
/**
* Assert that the given file exists.
*
* @param string $path
* @return void
* @param string|array $path
* @return $this
*/
public function assertExists($path)
{
PHPUnit::assertTrue(
$this->exists($path), "Unable to find a file at path [{$path}]."
);
$paths = Arr::wrap($path);
foreach ($paths as $path) {
PHPUnit::assertTrue(
$this->exists($path), "Unable to find a file at path [{$path}]."
);
}
return $this;
}
/**
* Assert that the given file does not exist.
*
* @param string $path
* @return void
* @param string|array $path
* @return $this
*/
public function assertMissing($path)
{
PHPUnit::assertFalse(
$this->exists($path), "Found unexpected file at path [{$path}]."
);
$paths = Arr::wrap($path);
foreach ($paths as $path) {
PHPUnit::assertFalse(
$this->exists($path), "Found unexpected file at path [{$path}]."
);
}
return $this;
}
/**

View File

@@ -29,7 +29,7 @@ class Application extends Container implements ApplicationContract, HttpKernelIn
*
* @var string
*/
const VERSION = '5.7.19';
const VERSION = '5.7.20';
/**
* The base path for the Laravel installation.

View File

@@ -36,6 +36,10 @@ trait VerifiesEmails
throw new AuthorizationException;
}
if ($request->user()->hasVerifiedEmail()) {
return redirect($this->redirectPath());
}
if ($request->user()->markEmailAsVerified()) {
event(new Verified($request->user()));
}

View File

@@ -4,8 +4,8 @@
@section('title', __('Unauthorized'))
@section('image')
<div style="background-image: url({{ asset('/svg/403.svg') }});" class="absolute pin bg-cover bg-no-repeat md:bg-left lg:bg-center">
</div>
<div style="background-image: url({{ asset('/svg/403.svg') }});" class="absolute pin bg-cover bg-no-repeat md:bg-left lg:bg-center">
</div>
@endsection
@section('message', __('Sorry, you are not authorized to access this page.'))

View File

@@ -4,8 +4,8 @@
@section('title', __('Forbidden'))
@section('image')
<div style="background-image: url({{ asset('/svg/403.svg') }});" class="absolute pin bg-cover bg-no-repeat md:bg-left lg:bg-center">
</div>
<div style="background-image: url({{ asset('/svg/403.svg') }});" class="absolute pin bg-cover bg-no-repeat md:bg-left lg:bg-center">
</div>
@endsection
@section('message', __($exception->getMessage() ?: __('Sorry, you are forbidden from accessing this page.')))

View File

@@ -4,8 +4,8 @@
@section('title', __('Page Not Found'))
@section('image')
<div style="background-image: url({{ asset('/svg/404.svg') }});" class="absolute pin bg-cover bg-no-repeat md:bg-left lg:bg-center">
</div>
<div style="background-image: url({{ asset('/svg/404.svg') }});" class="absolute pin bg-cover bg-no-repeat md:bg-left lg:bg-center">
</div>
@endsection
@section('message', __('Sorry, the page you are looking for could not be found.'))

View File

@@ -4,8 +4,8 @@
@section('title', __('Page Expired'))
@section('image')
<div style="background-image: url({{ asset('/svg/403.svg') }});" class="absolute pin bg-cover bg-no-repeat md:bg-left lg:bg-center">
</div>
<div style="background-image: url({{ asset('/svg/403.svg') }});" class="absolute pin bg-cover bg-no-repeat md:bg-left lg:bg-center">
</div>
@endsection
@section('message', __('Sorry, your session has expired. Please refresh and try again.'))

View File

@@ -4,8 +4,8 @@
@section('title', __('Too Many Requests'))
@section('image')
<div style="background-image: url({{ asset('/svg/403.svg') }});" class="absolute pin bg-cover bg-no-repeat md:bg-left lg:bg-center">
</div>
<div style="background-image: url({{ asset('/svg/403.svg') }});" class="absolute pin bg-cover bg-no-repeat md:bg-left lg:bg-center">
</div>
@endsection
@section('message', __('Sorry, you are making too many requests to our servers.'))

View File

@@ -4,8 +4,8 @@
@section('title', __('Error'))
@section('image')
<div style="background-image: url({{ asset('/svg/500.svg') }});" class="absolute pin bg-cover bg-no-repeat md:bg-left lg:bg-center">
</div>
<div style="background-image: url({{ asset('/svg/500.svg') }});" class="absolute pin bg-cover bg-no-repeat md:bg-left lg:bg-center">
</div>
@endsection
@section('message', __('Whoops, something went wrong on our servers.'))

View File

@@ -4,8 +4,8 @@
@section('title', __('Service Unavailable'))
@section('image')
<div style="background-image: url({{ asset('/svg/503.svg') }});" class="absolute pin bg-cover bg-no-repeat md:bg-left lg:bg-center">
</div>
<div style="background-image: url({{ asset('/svg/503.svg') }});" class="absolute pin bg-cover bg-no-repeat md:bg-left lg:bg-center">
</div>
@endsection
@section('message', __($exception->getMessage() ?: __('Sorry, we are doing some maintenance. Please check back soon.')))

View File

@@ -243,6 +243,17 @@ class Request extends SymfonyRequest implements Arrayable, ArrayAccess
return $this->headers->get('X-PJAX') == true;
}
/**
* Determine if the request is the result of an prefetch call.
*
* @return bool
*/
public function prefetch()
{
return strcasecmp($this->server->get('HTTP_X_MOZ'), 'prefetch') === 0 ||
strcasecmp($this->headers->get('Purpose'), 'prefetch') === 0;
}
/**
* Determine if the request is over HTTPS.
*

View File

@@ -2,6 +2,7 @@
namespace Illuminate\Http\Resources;
use JsonSerializable;
use Illuminate\Support\Collection;
class MergeValue
@@ -21,6 +22,12 @@ class MergeValue
*/
public function __construct($data)
{
$this->data = $data instanceof Collection ? $data->all() : $data;
if ($data instanceof Collection) {
$this->data = $data->all();
} elseif ($data instanceof JsonSerializable) {
$this->data = $data->jsonSerialize();
} else {
$this->data = $data;
}
}
}

View File

@@ -232,7 +232,7 @@ class LogManager implements LoggerInterface
new StreamHandler(
$config['path'], $this->level($config),
$config['bubble'] ?? true, $config['permission'] ?? null, $config['locking'] ?? false
)
), $config
),
]);
}
@@ -249,7 +249,7 @@ class LogManager implements LoggerInterface
$this->prepareHandler(new RotatingFileHandler(
$config['path'], $config['days'] ?? 7, $this->level($config),
$config['bubble'] ?? true, $config['permission'] ?? null, $config['locking'] ?? false
)),
), $config),
]);
}
@@ -288,7 +288,7 @@ class LogManager implements LoggerInterface
return new Monolog($this->parseChannel($config), [
$this->prepareHandler(new SyslogHandler(
$this->app['config']['app.name'], $config['facility'] ?? LOG_USER, $this->level($config)
)),
), $config),
]);
}

View File

@@ -84,6 +84,13 @@ class Route
*/
public $parameterNames;
/**
* The array of the matched parameters' original values.
*
* @var array
*/
protected $originalParameters;
/**
* The computed gathered middleware.
*
@@ -300,6 +307,8 @@ class Route
$this->parameters = (new RouteParameterBinder($this))
->parameters($request);
$this->originalParameters = $this->parameters;
return $this;
}
@@ -340,6 +349,18 @@ class Route
return Arr::get($this->parameters(), $name, $default);
}
/**
* Get original value of a given parameter from the route.
*
* @param string $name
* @param mixed $default
* @return string
*/
public function originalParameter($name, $default = null)
{
return Arr::get($this->originalParameters(), $name, $default);
}
/**
* Set a parameter to the given value.
*
@@ -383,6 +404,22 @@ class Route
throw new LogicException('Route is not bound.');
}
/**
* Get the key / value list of original parameters for the route.
*
* @return array
*
* @throws \LogicException
*/
public function originalParameters()
{
if (isset($this->originalParameters)) {
return $this->originalParameters;
}
throw new LogicException('Route is not bound.');
}
/**
* Get the key / value list of parameters without null values.
*

View File

@@ -362,7 +362,7 @@ class UrlGenerator implements UrlGeneratorContract
Arr::except($request->query(), 'signature')
), '?');
$expires = Arr::get($request->query(), 'expires');
$expires = $request->query('expires');
$signature = hash_hmac('sha256', $original, call_user_func($this->keyResolver));

View File

@@ -154,7 +154,10 @@ class StartSession
*/
protected function storeCurrentUrl(Request $request, $session)
{
if ($request->method() === 'GET' && $request->route() && ! $request->ajax()) {
if ($request->method() === 'GET' &&
$request->route() &&
! $request->ajax() &&
! $request->prefetch()) {
$session->setPreviousUrl($request->fullUrl());
}
}

View File

@@ -679,7 +679,7 @@ class Collection implements ArrayAccess, Arrayable, Countable, IteratorAggregate
}
/**
* Filter items where the given key between values.
* Filter items such that the value of the given key is between the given values.
*
* @param string $key
* @param array $values
@@ -690,6 +690,20 @@ class Collection implements ArrayAccess, Arrayable, Countable, IteratorAggregate
return $this->where($key, '>=', reset($values))->where($key, '<=', end($values));
}
/**
* Filter items such that the value of the given key is not between the given values.
*
* @param string $key
* @param array $values
* @return static
*/
public function whereNotBetween($key, $values)
{
return $this->filter(function ($item) use ($key, $values) {
return data_get($item, $key) < reset($values) || data_get($item, $key) > end($values);
});
}
/**
* Filter items by the given key value pair.
*

View File

@@ -428,7 +428,7 @@ class Str
$title = str_replace('@', $separator.'at'.$separator, $title);
// Remove all characters that are not the separator, letters, numbers, or whitespace.
$title = preg_replace('![^'.preg_quote($separator).'\pL\pN\s]+!u', '', mb_strtolower($title));
$title = preg_replace('![^'.preg_quote($separator).'\pL\pN\s]+!u', '', static::lower($title));
// Replace all separator characters and whitespace by a single separator
$title = preg_replace('!['.preg_quote($separator).'\s]+!u', $separator, $title);

View File

@@ -327,6 +327,16 @@ class QueueFake extends QueueManager implements Queue
}
}
/**
* Get the jobs that have been pushed.
*
* @return array
*/
public function pushedJobs()
{
return $this->jobs;
}
/**
* Get the connection name for the queue.
*

View File

@@ -3798,7 +3798,7 @@ class Carbon extends DateTime implements JsonSerializable
$diff->i += 60;
$diff->h--;
if ($diff->h < 0) {
$diff->i += 24;
$diff->h += 24;
$diff->d--;
if ($diff->d < 0) {
$diff->d += 30;

View File

@@ -1,5 +1,5 @@
language: php
dist: trusty
dist: xenial
sudo: false
cache:
@@ -10,6 +10,7 @@ php:
- 7.0
- 7.1
- 7.2
- 7.3
- nightly
install:

View File

@@ -1,8 +1,20 @@
Version 4.1.1-dev
Version 4.1.2-dev
-----------------
Nothing yet.
Version 4.1.1 (2018-12-26)
--------------------------
### Fixed
* Fix "undefined offset" notice when parsing specific malformed code (#551).
* Remove assertion when pretty printing anonymous class with a name (#554).
### Added
* Support error recovery for missing return type (`function foo() : {}`) (#544).
Version 4.1.0 (2018-10-10)
--------------------------
@@ -17,7 +29,7 @@ Version 4.1.0 (2018-10-10)
and some cases which we do not expect to occur in practice (such as flexible doc strings being
nested within each other through abuse of variable-variable interpolation syntax) may not be
recognized correctly.
* Added `DONT_TRAVERSER_CURRENT_AND_CHILDREN` to `NodeTraverser` to skip both traversal of child
* Added `DONT_TRAVERSE_CURRENT_AND_CHILDREN` to `NodeTraverser` to skip both traversal of child
nodes, and prevent subsequent visitors from visiting the current node.
Version 4.0.4 (2018-09-18)

View File

@@ -3,7 +3,7 @@ PHP Parser
[![Build Status](https://travis-ci.org/nikic/PHP-Parser.svg?branch=master)](https://travis-ci.org/nikic/PHP-Parser) [![Coverage Status](https://coveralls.io/repos/github/nikic/PHP-Parser/badge.svg?branch=master)](https://coveralls.io/github/nikic/PHP-Parser?branch=master)
This is a PHP 5.2 to PHP 7.2 parser written in PHP. Its purpose is to simplify static code analysis and
This is a PHP 5.2 to PHP 7.3 parser written in PHP. Its purpose is to simplify static code analysis and
manipulation.
[**Documentation for version 4.x**][doc_master] (stable; for running on PHP >= 7.0; for parsing PHP 5.2 to PHP 7.3).

View File

@@ -1,7 +1,7 @@
Introduction
============
This project is a PHP 5.2 to PHP 7.2 parser **written in PHP itself**.
This project is a PHP 5.2 to PHP 7.3 parser **written in PHP itself**.
What is this for?
-----------------
@@ -26,11 +26,11 @@ programmatic PHP code analysis are incidentally PHP developers, not C developers
What can it parse?
------------------
The parser supports parsing PHP 5.2-7.2.
The parser supports parsing PHP 5.2-7.3.
As the parser is based on the tokens returned by `token_get_all` (which is only able to lex the PHP
version it runs on), additionally a wrapper for emulating tokens from newer versions is provided.
This allows to parse PHP 7.2 source code running on PHP 5.5, for example. This emulation is somewhat
This allows to parse PHP 7.3 source code running on PHP 7.0, for example. This emulation is somewhat
hacky and not perfect, but it should work well on any sane code.
What output does it produce?

View File

@@ -339,7 +339,8 @@ All four methods can either return the changed node or not return at all (i.e. `
case the current node is not changed.
The `enterNode()` method can additionally return the value `NodeTraverser::DONT_TRAVERSE_CHILDREN`,
which instructs the traverser to skip all children of the current node.
which instructs the traverser to skip all children of the current node. To furthermore prevent subsequent
visitors from visiting the current node, `NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN` can be used instead.
The `leaveNode()` method can additionally return the value `NodeTraverser::REMOVE_NODE`, in which
case the current node will be removed from the parent array. Furthermore it is possible to return

View File

@@ -116,8 +116,8 @@ The JSON representation may be converted back into an AST using the `JsonDecoder
```php
<?php
$nodeDecoder = new PhpParser\NodeDecoder();
$ast = $nodeDecoder->decode($json);
$jsonDecoder = new PhpParser\JsonDecoder();
$ast = $jsonDecoder->decode($json);
```
Note that not all ASTs can be represented using JSON. In particular:

View File

@@ -215,7 +215,7 @@ once you found it:
private $class = null;
public function enterNode(Node $node) {
if ($node instanceof Node\Stmt\Class_ &&
$node->namespaceName->toString() === 'Foo\Bar\Baz'
$node->namespacedName->toString() === 'Foo\Bar\Baz'
) {
$this->class = $node;
return NodeTraverser::STOP_TRAVERSAL;
@@ -235,7 +235,7 @@ A single traverser can be used with multiple visitors:
$traverser = new NodeTraverser;
$traverser->addVisitor($visitorA);
$traverser->addVisitor($visitorB);
$stmts = $traverser->traverser($stmts);
$stmts = $traverser->traverse($stmts);
```
It is important to understand that if a traverser is run with multiple visitors, the visitors will
@@ -281,6 +281,8 @@ special enterNode/leaveNode return values:
* If *any* visitor returns `DONT_TRAVERSE_CHILDREN`, the children will be skipped for *all*
visitors.
* If *any* visitor returns `DONT_TRAVERSE_CURRENT_AND_CHILDREN`, the children will be skipped for *all*
visitors, and all *subsequent* visitors will not visit the current node.
* If *any* visitor returns `STOP_TRAVERSAL`, traversal is stopped for *all* visitors.
* If a visitor returns a replacement node, subsequent visitors will be passed the replacement node,
not the original one.
@@ -305,7 +307,7 @@ $nodeFinder = new NodeFinder;
$classes = $nodeFinder->findInstanceOf($stmts, Node\Stmt\Class_::class);
// Find all classes that extend another class
$extendingClasses = $nodeFinder->findInstanceOf($stmts, function(Node $node) {
$extendingClasses = $nodeFinder->find($stmts, function(Node $node) {
return $node instanceof Node\Stmt\Class_
&& $node->extends !== null;
});

View File

@@ -477,6 +477,7 @@ optional_param_type:
optional_return_type:
/* empty */ { $$ = null; }
| ':' type_expr { $$ = $2; }
| ':' error { $$ = null; }
;
argument_list:
@@ -958,6 +959,7 @@ array_pair_list:
comma_or_error:
','
| error
{ /* do nothing -- prevent default action of $$=$1. See #551. */ }
;
inner_array_pair_list:

View File

@@ -39,6 +39,8 @@ class PrintableNewAnonClassNode extends Expr
public static function fromNewNode(Expr\New_ $newNode) {
$class = $newNode->class;
assert($class instanceof Node\Stmt\Class_);
// We don't assert that $class->name is null here, to allow consumers to assign unique names
// to anonymous classes for their own purposes. We simplify ignore the name here.
assert($class->name === null);
return new self(
$newNode->args, $class->extends, $class->implements,

View File

@@ -6,7 +6,7 @@ use PhpParser\Node;
class Case_ extends Node\Stmt
{
/** @var null|Node\Expr $cond Condition (null for default) */
/** @var null|Node\Expr Condition (null for default) */
public $cond;
/** @var Node\Stmt[] Statements */
public $stmts;

File diff suppressed because it is too large Load Diff

View File

@@ -1374,3 +1374,36 @@ array(
)
)
)
-----
<?php
function foo() :
{
return $a;
}
-----
!!php7
Syntax error, unexpected '{' from 3:1 to 3:1
array(
0: Stmt_Function(
byRef: false
name: Identifier(
name: foo
)
params: array(
)
returnType: null
stmts: array(
0: Stmt_Return(
expr: Expr_Variable(
name: a
)
)
)
)
)
-----
<?php
$a = ["a "thing"];
-----
!!php7
Syntax error, unexpected T_STRING, expecting ',' or ')' or ']' from 2:11 to 2:15

View File

@@ -1,6 +1,12 @@
CHANGELOG
---------
### v3.1.3, 2019.01.07
- Fixed a bug that prevented traits to be correctly resolved when used by an
anonymous class
- Fixed a bug that occurred when `$this` keyword was used inside an anonymous class
### v3.1.2, 2018.12.16
* Fixed a bug regarding comma trail in group-use statements. See [issue 23](https://github.com/opis/closure/issues/23)

View File

@@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2014-2017 The Opis Project
Copyright (c) 2018 Zindex Software
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in

View File

@@ -1,5 +1,5 @@
Opis Closure
Copyright 2018 Zindex Software
Copyright 2018-2019 Zindex Software
This product includes software developed at
Zindex Software (http://zindex.software).

View File

@@ -34,7 +34,7 @@
},
"extra": {
"branch-alias": {
"dev-master": "3.0.x-dev"
"dev-master": "3.1.x-dev"
}
}
}

View File

@@ -107,6 +107,8 @@ class ReflectionClosure extends ReflectionFunction
$hasTraitSupport = defined('T_TRAIT_C');
$tokens = $this->getTokens();
$state = $lastState = 'start';
$inside_anonymous = false;
$anonymous_mark = 0;
$open = 0;
$code = '';
$id_start = $id_start_ci = $id_name = $context = '';
@@ -248,6 +250,8 @@ class ReflectionClosure extends ReflectionFunction
$code .= '}';
if(--$open === 0){
break 3;
} elseif ($inside_anonymous) {
$inside_anonymous = !($open === $anonymous_mark);
}
break;
case T_LINE:
@@ -285,7 +289,7 @@ class ReflectionClosure extends ReflectionFunction
}
break;
case T_VARIABLE:
if($token[1] == '$this'){
if($token[1] == '$this' && !$inside_anonymous){
$isUsingThisObject = true;
}
$code .= $token[1];
@@ -309,6 +313,12 @@ class ReflectionClosure extends ReflectionFunction
$state = 'id_start';
$lastState = 'closure';
break 2;
case T_USE:
$code .= $token[1];
$context = 'use';
$state = 'id_start';
$lastState = 'closure';
break;
case T_INSTANCEOF:
$code .= $token[1];
$context = 'instanceof';
@@ -453,7 +463,12 @@ class ReflectionClosure extends ReflectionFunction
break;
default:
if($id_start !== '\\'){
if($context === 'instanceof' || $context === 'args' || $context === 'return_type' || $context === 'extends'){
if($context === 'use' ||
$context === 'instanceof' ||
$context === 'args' ||
$context === 'return_type' ||
$context === 'extends'
){
if($id_start_ci === 'self' || $id_start_ci === 'static' || $id_start_ci === 'parent'){
$isUsingScope = true;
} elseif (!($php7 && in_array($id_start_ci, $php7_types))){
@@ -494,6 +509,10 @@ class ReflectionClosure extends ReflectionFunction
break;
case '{':
$state = 'closure';
if (!$inside_anonymous) {
$inside_anonymous = true;
$anonymous_mark = $open;
}
$i--;
break;
default:

View File

@@ -75,7 +75,7 @@ class Application
private $dispatcher;
private $terminal;
private $defaultCommand;
private $singleCommand;
private $singleCommand = false;
private $initialized;
/**
@@ -1098,6 +1098,14 @@ class Application
return $this;
}
/**
* @internal
*/
public function isSingleCommand()
{
return $this->singleCommand;
}
private function splitStringByWidth($string, $width)
{
// str_split is not suitable for multi-byte characters, we should use preg_split to get char array properly.

View File

@@ -250,7 +250,7 @@ class Command
$input->validate();
if ($this->code) {
$statusCode = \call_user_func($this->code, $input, $output);
$statusCode = ($this->code)($input, $output);
} else {
$statusCode = $this->execute($input, $output);
}
@@ -361,9 +361,9 @@ class Command
* Adds an argument.
*
* @param string $name The argument name
* @param int|null $mode The argument mode: self::REQUIRED or self::OPTIONAL
* @param int|null $mode The argument mode: InputArgument::REQUIRED or InputArgument::OPTIONAL
* @param string $description A description text
* @param string|string[]|null $default The default value (for self::OPTIONAL mode only)
* @param string|string[]|null $default The default value (for InputArgument::OPTIONAL mode only)
*
* @throws InvalidArgumentException When argument mode is not valid
*
@@ -381,9 +381,9 @@ class Command
*
* @param string $name The option name
* @param string|array $shortcut The shortcuts, can be null, a string of shortcuts delimited by | or an array of shortcuts
* @param int|null $mode The option mode: One of the VALUE_* constants
* @param int|null $mode The option mode: One of the InputOption::VALUE_* constants
* @param string $description A description text
* @param string|string[]|int|bool|null $default The default value (must be null for self::VALUE_NONE)
* @param string|string[]|int|bool|null $default The default value (must be null for InputOption::VALUE_NONE)
*
* @throws InvalidArgumentException If option mode is invalid or incompatible
*
@@ -525,6 +525,7 @@ class Command
public function getProcessedHelp()
{
$name = $this->name;
$isSingleCommand = $this->application && $this->application->isSingleCommand();
$placeholders = array(
'%command.name%',
@@ -532,7 +533,7 @@ class Command
);
$replacements = array(
$name,
$_SERVER['PHP_SELF'].' '.$name,
$isSingleCommand ? $_SERVER['PHP_SELF'] : $_SERVER['PHP_SELF'].' '.$name,
);
return str_replace($placeholders, $replacements, $this->getHelp() ?: $this->getDescription());

View File

@@ -166,7 +166,7 @@ class OutputFormatter implements WrappableOutputFormatterInterface
if (!$open && !$tag) {
// </>
$this->styleStack->pop();
} elseif (false === $style = $this->createStyleFromString(strtolower($tag))) {
} elseif (false === $style = $this->createStyleFromString($tag)) {
$output .= $this->applyCurrentStyle($text, $output, $width, $currentLineLength);
} elseif ($open) {
$this->styleStack->push($style);
@@ -210,13 +210,14 @@ class OutputFormatter implements WrappableOutputFormatterInterface
$style = new OutputFormatterStyle();
foreach ($matches as $match) {
array_shift($match);
$match[0] = strtolower($match[0]);
if ('fg' == $match[0]) {
$style->setForeground($match[1]);
$style->setForeground(strtolower($match[1]));
} elseif ('bg' == $match[0]) {
$style->setBackground($match[1]);
$style->setBackground(strtolower($match[1]));
} elseif ('options' === $match[0]) {
preg_match_all('([^,;]+)', $match[1], $options);
preg_match_all('([^,;]+)', strtolower($match[1]), $options);
$options = array_shift($options);
foreach ($options as $option) {
$style->setOption($option);

View File

@@ -61,7 +61,7 @@ class ProcessHelper extends Helper
$process = $cmd[0];
unset($cmd[0]);
} else {
throw new \InvalidArgumentException(sprintf('Invalid command provided to "%s()": the command should an array whose first is element is either the path to the binary to run of a "Process" object.', __METHOD__));
throw new \InvalidArgumentException(sprintf('Invalid command provided to "%s()": the command should be an array whose first element is either the path to the binary to run or a "Process" object.', __METHOD__));
}
if ($verbosity <= $output->getVerbosity()) {
@@ -136,7 +136,7 @@ class ProcessHelper extends Helper
$output->write($formatter->progress(spl_object_hash($process), $this->escapeString($buffer), Process::ERR === $type));
if (null !== $callback) {
\call_user_func($callback, $type, $buffer);
$callback($type, $buffer);
}
};
}

View File

@@ -496,7 +496,7 @@ final class ProgressBar
$regex = "{%([a-z\-_]+)(?:\:([^%]+))?%}i";
$callback = function ($matches) {
if ($formatter = $this::getPlaceholderFormatterDefinition($matches[1])) {
$text = \call_user_func($formatter, $this, $this->output);
$text = $formatter($this, $this->output);
} elseif (isset($this->messages[$matches[1]])) {
$text = $this->messages[$matches[1]];
} else {

View File

@@ -196,7 +196,7 @@ class ProgressIndicator
$this->overwrite(preg_replace_callback("{%([a-z\-_]+)(?:\:([^%]+))?%}i", function ($matches) use ($self) {
if ($formatter = $self::getPlaceholderFormatterDefinition($matches[1])) {
return \call_user_func($formatter, $self);
return $formatter($self);
}
return $matches[0];

View File

@@ -381,7 +381,7 @@ class QuestionHelper extends Helper
}
try {
return \call_user_func($question->getValidator(), $interviewer());
return $question->getValidator()($interviewer());
} catch (RuntimeException $e) {
throw $e;
} catch (\Exception $error) {

View File

@@ -1,4 +1,4 @@
Copyright (c) 2004-2018 Fabien Potencier
Copyright (c) 2004-2019 Fabien Potencier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -162,7 +162,10 @@ trait TesterTrait
{
$stream = fopen('php://memory', 'r+', false);
fwrite($stream, implode(PHP_EOL, $inputs));
foreach ($inputs as $input) {
fwrite($stream, $input.PHP_EOL);
}
rewind($stream);
return $stream;

View File

@@ -1003,7 +1003,7 @@ class ApplicationTest extends TestCase
$application->setAutoExit(false);
$application->expects($this->once())
->method('doRun')
->will($this->throwException($exception));
->willThrowException($exception);
$exitCode = $application->run(new ArrayInput(array()), new NullOutput());
@@ -1042,7 +1042,7 @@ class ApplicationTest extends TestCase
$application->setAutoExit(false);
$application->expects($this->once())
->method('doRun')
->will($this->throwException($exception));
->willThrowException($exception);
$exitCode = $application->run(new ArrayInput(array()), new NullOutput());

View File

@@ -166,6 +166,14 @@ class CommandTest extends TestCase
$command = new \TestCommand();
$command->setHelp('');
$this->assertContains('description', $command->getProcessedHelp(), '->getProcessedHelp() falls back to the description');
$command = new \TestCommand();
$command->setHelp('The %command.name% command does... Example: php %command.full_name%.');
$application = new Application();
$application->add($command);
$application->setDefaultCommand('namespace:name', true);
$this->assertContains('The namespace:name command does...', $command->getProcessedHelp(), '->getProcessedHelp() replaces %command.name% correctly in single command applications');
$this->assertNotContains('%command.full_name%', $command->getProcessedHelp(), '->getProcessedHelp() replaces %command.full_name% in single command applications');
}
public function testGetSetAliases()

View File

@@ -112,6 +112,31 @@ class CommandTesterTest extends TestCase
$this->assertEquals(implode('', $questions), $tester->getDisplay(true));
}
public function testCommandWithDefaultInputs()
{
$questions = array(
'What\'s your name?',
'How are you?',
'Where do you come from?',
);
$command = new Command('foo');
$command->setHelperSet(new HelperSet(array(new QuestionHelper())));
$command->setCode(function ($input, $output) use ($questions, $command) {
$helper = $command->getHelper('question');
$helper->ask($input, $output, new Question($questions[0], 'Bobby'));
$helper->ask($input, $output, new Question($questions[1], 'Fine'));
$helper->ask($input, $output, new Question($questions[2], 'France'));
});
$tester = new CommandTester($command);
$tester->setInputs(array('', '', ''));
$tester->execute(array());
$this->assertEquals(0, $tester->getStatusCode());
$this->assertEquals(implode('', $questions), $tester->getDisplay(true));
}
/**
* @expectedException \RuntimeException
* @expectedMessage Aborted

View File

@@ -1,4 +1,4 @@
Copyright (c) 2004-2018 Fabien Potencier
Copyright (c) 2004-2019 Fabien Potencier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -120,6 +120,9 @@ class ParserTest extends TestCase
array('a[name]', array('Attribute[Element[a][name]]')),
array("a[ name\t]", array('Attribute[Element[a][name]]')),
array('a [name]', array('CombinedSelector[Element[a] <followed> Attribute[Element[*][name]]]')),
array('[name="foo"]', array("Attribute[Element[*][name = 'foo']]")),
array("[name='foo[1]']", array("Attribute[Element[*][name = 'foo[1]']]")),
array("[name='foo[0][bar]']", array("Attribute[Element[*][name = 'foo[0][bar]']]")),
array('a[rel="include"]', array("Attribute[Element[a][rel = 'include']]")),
array('a[rel = include]', array("Attribute[Element[a][rel = 'include']]")),
array("a[hreflang |= 'en']", array("Attribute[Element[a][hreflang |= 'en']]")),

View File

@@ -155,7 +155,7 @@ class Translator implements TranslatorInterface
throw new ExpressionErrorException(sprintf('Node "%s" not supported.', $node->getNodeName()));
}
return \call_user_func($this->nodeTranslators[$node->getNodeName()], $node, $this);
return $this->nodeTranslators[$node->getNodeName()]($node, $this);
}
/**
@@ -167,7 +167,7 @@ class Translator implements TranslatorInterface
throw new ExpressionErrorException(sprintf('Combiner "%s" not supported.', $combiner));
}
return \call_user_func($this->combinationTranslators[$combiner], $this->nodeToXPath($xpath), $this->nodeToXPath($combinedXpath));
return $this->combinationTranslators[$combiner]($this->nodeToXPath($xpath), $this->nodeToXPath($combinedXpath));
}
/**
@@ -179,7 +179,7 @@ class Translator implements TranslatorInterface
throw new ExpressionErrorException(sprintf('Function "%s" not supported.', $function->getName()));
}
return \call_user_func($this->functionTranslators[$function->getName()], $xpath, $function);
return $this->functionTranslators[$function->getName()]($xpath, $function);
}
/**
@@ -191,7 +191,7 @@ class Translator implements TranslatorInterface
throw new ExpressionErrorException(sprintf('Pseudo-class "%s" not supported.', $pseudoClass));
}
return \call_user_func($this->pseudoClassTranslators[$pseudoClass], $xpath);
return $this->pseudoClassTranslators[$pseudoClass]($xpath);
}
/**
@@ -203,7 +203,7 @@ class Translator implements TranslatorInterface
throw new ExpressionErrorException(sprintf('Attribute matcher operator "%s" not supported.', $operator));
}
return \call_user_func($this->attributeMatchingTranslators[$operator], $xpath, $attribute, $value);
return $this->attributeMatchingTranslators[$operator]($xpath, $attribute, $value);
}
/**

View File

@@ -151,7 +151,7 @@ class DebugClassLoader
require $file;
}
} else {
\call_user_func($this->classLoader, $class);
($this->classLoader)($class);
$file = false;
}
} finally {
@@ -218,7 +218,7 @@ class DebugClassLoader
$len = 0;
$ns = '';
} else {
$ns = \substr($class, 0, $len);
$ns = \str_replace('_', '\\', \substr($class, 0, $len));
}
// Detect annotations on the class
@@ -249,13 +249,13 @@ class DebugClassLoader
if (!isset(self::$checkedClasses[$use])) {
$this->checkClass($use);
}
if (isset(self::$deprecated[$use]) && \strncmp($ns, $use, $len)) {
if (isset(self::$deprecated[$use]) && \strncmp($ns, \str_replace('_', '\\', $use), $len)) {
$type = class_exists($class, false) ? 'class' : (interface_exists($class, false) ? 'interface' : 'trait');
$verb = class_exists($use, false) || interface_exists($class, false) ? 'extends' : (interface_exists($use, false) ? 'implements' : 'uses');
$deprecations[] = sprintf('The "%s" %s %s "%s" that is deprecated%s.', $class, $type, $verb, $use, self::$deprecated[$use]);
}
if (isset(self::$internal[$use]) && \strncmp($ns, $use, $len)) {
if (isset(self::$internal[$use]) && \strncmp($ns, \str_replace('_', '\\', $use), $len)) {
$deprecations[] = sprintf('The "%s" %s is considered internal%s. It may change without further notice. You should not use it from "%s".', $use, class_exists($use, false) ? 'class' : (interface_exists($use, false) ? 'interface' : 'trait'), self::$internal[$use], $class);
}
}

View File

@@ -560,7 +560,7 @@ class ErrorHandler
$this->exceptionHandler = null;
try {
if (null !== $exceptionHandler) {
return \call_user_func($exceptionHandler, $exception);
return $exceptionHandler($exception);
}
$handlerException = $handlerException ?: $exception;
} catch (\Throwable $handlerException) {

View File

@@ -142,7 +142,7 @@ class ExceptionHandler
$this->caughtBuffer = null;
try {
\call_user_func($this->handler, $exception);
($this->handler)($exception);
$this->caughtLength = $caughtLength;
} catch (\Exception $e) {
if (!$caughtLength) {

View File

@@ -1,4 +1,4 @@
Copyright (c) 2004-2018 Fabien Potencier
Copyright (c) 2004-2019 Fabien Potencier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -29,7 +29,7 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface
protected $logger;
protected $stopwatch;
private $called;
private $callStack;
private $dispatcher;
private $wrappedListeners;
private $orphanedEvents;
@@ -39,7 +39,6 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface
$this->dispatcher = $dispatcher;
$this->stopwatch = $stopwatch;
$this->logger = $logger;
$this->called = array();
$this->wrappedListeners = array();
$this->orphanedEvents = array();
}
@@ -125,6 +124,10 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface
*/
public function dispatch($eventName, Event $event = null)
{
if (null === $this->callStack) {
$this->callStack = new \SplObjectStorage();
}
if (null === $event) {
$event = new Event();
}
@@ -160,11 +163,15 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface
*/
public function getCalledListeners()
{
if (null === $this->callStack) {
return array();
}
$called = array();
foreach ($this->called as $eventName => $listeners) {
foreach ($listeners as $listener) {
$called[$eventName.'.'.$listener->getPretty()] = $listener->getInfo($eventName);
}
foreach ($this->callStack as $listener) {
list($eventName) = $this->callStack->getInfo();
$called[] = $listener->getInfo($eventName);
}
return $called;
@@ -190,9 +197,9 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface
foreach ($allListeners as $eventName => $listeners) {
foreach ($listeners as $listener) {
$called = false;
if (isset($this->called[$eventName])) {
foreach ($this->called[$eventName] as $l) {
if ($l->getWrappedListener() === $listener) {
if (null !== $this->callStack) {
foreach ($this->callStack as $calledListener) {
if ($calledListener->getWrappedListener() === $listener) {
$called = true;
break;
@@ -204,12 +211,12 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface
if (!$listener instanceof WrappedListener) {
$listener = new WrappedListener($listener, null, $this->stopwatch, $this);
}
$notCalled[$eventName.'.'.$listener->getPretty()] = $listener->getInfo($eventName);
$notCalled[] = $listener->getInfo($eventName);
}
}
}
uasort($notCalled, array($this, 'sortListenersByPriority'));
uasort($notCalled, array($this, 'sortNotCalledListeners'));
return $notCalled;
}
@@ -221,7 +228,7 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface
public function reset()
{
$this->called = array();
$this->callStack = null;
$this->orphanedEvents = array();
}
@@ -272,6 +279,7 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface
$this->wrappedListeners[$eventName][] = $wrappedListener;
$this->dispatcher->removeListener($eventName, $listener);
$this->dispatcher->addListener($eventName, $wrappedListener, $priority);
$this->callStack->attach($wrappedListener, array($eventName));
}
}
@@ -300,8 +308,8 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface
if (!isset($this->called[$eventName])) {
$this->called[$eventName] = new \SplObjectStorage();
}
$this->called[$eventName]->attach($listener);
} else {
$this->callStack->detach($listener);
}
if (null !== $this->logger && $skipped) {
@@ -318,8 +326,12 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface
}
}
private function sortListenersByPriority($a, $b)
private function sortNotCalledListeners(array $a, array $b)
{
if (0 !== $cmp = strcmp($a['event'], $b['event'])) {
return $cmp;
}
if (\is_int($a['priority']) && !\is_int($b['priority'])) {
return 1;
}

View File

@@ -108,7 +108,7 @@ class WrappedListener
$e = $this->stopwatch->start($this->name, 'event_listener');
\call_user_func($this->listener, $event, $eventName, $this->dispatcher ?: $dispatcher);
($this->listener)($event, $eventName, $this->dispatcher ?: $dispatcher);
if ($e->isStarted()) {
$e->stop();

View File

@@ -209,7 +209,7 @@ class EventDispatcher implements EventDispatcherInterface
if ($event->isPropagationStopped()) {
break;
}
\call_user_func($listener, $event, $eventName, $this);
$listener($event, $eventName, $this);
}
}

View File

@@ -23,11 +23,11 @@ interface EventDispatcherInterface
/**
* Dispatches an event to all registered listeners.
*
* @param string $eventName The name of the event to dispatch. The name of
* the event is the name of the method that is
* invoked on listeners.
* @param Event $event The event to pass to the event handlers/listeners
* If not supplied, an empty Event instance is created
* @param string $eventName The name of the event to dispatch. The name of
* the event is the name of the method that is
* invoked on listeners.
* @param Event|null $event The event to pass to the event handlers/listeners
* If not supplied, an empty Event instance is created
*
* @return Event
*/
@@ -46,7 +46,7 @@ interface EventDispatcherInterface
/**
* Adds an event subscriber.
*
* The subscriber is asked for all the events he is
* The subscriber is asked for all the events it is
* interested in and added as a listener for these events.
*/
public function addSubscriber(EventSubscriberInterface $subscriber);
@@ -64,7 +64,7 @@ interface EventDispatcherInterface
/**
* Gets the listeners of a specific event or all listeners sorted by descending priority.
*
* @param string $eventName The name of the event
* @param string|null $eventName The name of the event
*
* @return array The event listeners for the specified event, or all event listeners by event name
*/
@@ -85,7 +85,7 @@ interface EventDispatcherInterface
/**
* Checks whether an event has any registered listeners.
*
* @param string $eventName The name of the event
* @param string|null $eventName The name of the event
*
* @return bool true if the specified event has any listeners, false otherwise
*/

View File

@@ -12,7 +12,7 @@
namespace Symfony\Component\EventDispatcher;
/**
* An EventSubscriber knows himself what events he is interested in.
* An EventSubscriber knows itself what events it is interested in.
* If an EventSubscriber is added to an EventDispatcherInterface, the manager invokes
* {@link getSubscribedEvents} and registers the subscriber as a listener for all
* returned events.

View File

@@ -1,4 +1,4 @@
Copyright (c) 2004-2018 Fabien Potencier
Copyright (c) 2004-2019 Fabien Potencier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -110,17 +110,17 @@ class TraceableEventDispatcherTest extends TestCase
$tdispatcher->addListener('foo', function () {}, 5);
$listeners = $tdispatcher->getNotCalledListeners();
$this->assertArrayHasKey('stub', $listeners['foo.closure']);
unset($listeners['foo.closure']['stub']);
$this->assertArrayHasKey('stub', $listeners[0]);
unset($listeners[0]['stub']);
$this->assertEquals(array(), $tdispatcher->getCalledListeners());
$this->assertEquals(array('foo.closure' => array('event' => 'foo', 'pretty' => 'closure', 'priority' => 5)), $listeners);
$this->assertEquals(array(array('event' => 'foo', 'pretty' => 'closure', 'priority' => 5)), $listeners);
$tdispatcher->dispatch('foo');
$listeners = $tdispatcher->getCalledListeners();
$this->assertArrayHasKey('stub', $listeners['foo.closure']);
unset($listeners['foo.closure']['stub']);
$this->assertEquals(array('foo.closure' => array('event' => 'foo', 'pretty' => 'closure', 'priority' => 5)), $listeners);
$this->assertArrayHasKey('stub', $listeners[0]);
unset($listeners[0]['stub']);
$this->assertEquals(array(array('event' => 'foo', 'pretty' => 'closure', 'priority' => 5)), $listeners);
$this->assertEquals(array(), $tdispatcher->getNotCalledListeners());
}
@@ -133,10 +133,22 @@ class TraceableEventDispatcherTest extends TestCase
$tdispatcher->reset();
$listeners = $tdispatcher->getNotCalledListeners();
$this->assertArrayHasKey('stub', $listeners['foo.closure']);
unset($listeners['foo.closure']['stub']);
$this->assertArrayHasKey('stub', $listeners[0]);
unset($listeners[0]['stub']);
$this->assertEquals(array(), $tdispatcher->getCalledListeners());
$this->assertEquals(array('foo.closure' => array('event' => 'foo', 'pretty' => 'closure', 'priority' => 5)), $listeners);
$this->assertEquals(array(array('event' => 'foo', 'pretty' => 'closure', 'priority' => 5)), $listeners);
}
public function testDispatchAfterReset()
{
$tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
$tdispatcher->addListener('foo', function () {}, 5);
$tdispatcher->reset();
$tdispatcher->dispatch('foo');
$listeners = $tdispatcher->getCalledListeners();
$this->assertArrayHasKey('stub', $listeners[0]);
}
public function testGetCalledListenersNested()

View File

@@ -30,21 +30,16 @@ class WrappedListenerTest extends TestCase
public function provideListenersToDescribe()
{
$listeners = array(
return array(
array(new FooListener(), 'Symfony\Component\EventDispatcher\Tests\Debug\FooListener::__invoke'),
array(array(new FooListener(), 'listen'), 'Symfony\Component\EventDispatcher\Tests\Debug\FooListener::listen'),
array(array('Symfony\Component\EventDispatcher\Tests\Debug\FooListener', 'listenStatic'), 'Symfony\Component\EventDispatcher\Tests\Debug\FooListener::listenStatic'),
array('var_dump', 'var_dump'),
array(function () {}, 'closure'),
array(\Closure::fromCallable(array(new FooListener(), 'listen')), 'Symfony\Component\EventDispatcher\Tests\Debug\FooListener::listen'),
array(\Closure::fromCallable(array('Symfony\Component\EventDispatcher\Tests\Debug\FooListener', 'listenStatic')), 'Symfony\Component\EventDispatcher\Tests\Debug\FooListener::listenStatic'),
array(\Closure::fromCallable(function () {}), 'closure'),
);
if (\PHP_VERSION_ID >= 70100) {
$listeners[] = array(\Closure::fromCallable(array(new FooListener(), 'listen')), 'Symfony\Component\EventDispatcher\Tests\Debug\FooListener::listen');
$listeners[] = array(\Closure::fromCallable(array('Symfony\Component\EventDispatcher\Tests\Debug\FooListener', 'listenStatic')), 'Symfony\Component\EventDispatcher\Tests\Debug\FooListener::listenStatic');
$listeners[] = array(\Closure::fromCallable(function () {}), 'closure');
}
return $listeners;
}
}

View File

@@ -51,7 +51,7 @@ class CustomFilterIterator extends \FilterIterator
$fileinfo = $this->current();
foreach ($this->filters as $filter) {
if (false === \call_user_func($filter, $fileinfo)) {
if (false === $filter($fileinfo)) {
return false;
}
}

View File

@@ -73,7 +73,7 @@ class SortableIterator implements \IteratorAggregate
} elseif (self::SORT_BY_NONE === $sort) {
$this->sort = $order;
} elseif (\is_callable($sort)) {
$this->sort = $reverseOrder ? function ($a, $b) use ($sort) { return -\call_user_func($sort, $a, $b); } : $sort;
$this->sort = $reverseOrder ? function ($a, $b) use ($sort) { return -$sort($a, $b); } : $sort;
} else {
throw new \InvalidArgumentException('The SortableIterator takes a PHP callable or a valid built-in sort algorithm as an argument.');
}

View File

@@ -1,4 +1,4 @@
Copyright (c) 2004-2018 Fabien Potencier
Copyright (c) 2004-2019 Fabien Potencier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -1209,7 +1209,7 @@ class FinderTest extends Iterator\RealIteratorTestCase
// restore original permissions
chmod($testDir, 0777);
clearstatcache($testDir);
clearstatcache(true, $testDir);
if ($couldRead) {
$this->markTestSkipped('could read test files while test requires unreadable');
@@ -1248,7 +1248,7 @@ class FinderTest extends Iterator\RealIteratorTestCase
// restore original permissions
chmod($testDir, 0777);
clearstatcache($testDir);
clearstatcache(true, $testDir);
if ($couldRead) {
$this->markTestSkipped('could read test files while test requires unreadable');

View File

@@ -101,9 +101,9 @@ class HeaderBag implements \IteratorAggregate, \Countable
/**
* Returns a header value by name.
*
* @param string $key The header name
* @param string|string[]|null $default The default value
* @param bool $first Whether to return the first value or all header values
* @param string $key The header name
* @param string|null $default The default value
* @param bool $first Whether to return the first value or all header values
*
* @return string|string[]|null The first header value or default value if $first is true, an array of values otherwise
*/

View File

@@ -1,4 +1,4 @@
Copyright (c) 2004-2018 Fabien Potencier
Copyright (c) 2004-2019 Fabien Potencier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -1699,15 +1699,23 @@ class Request
} elseif ($this->server->has('REQUEST_URI')) {
$requestUri = $this->server->get('REQUEST_URI');
// HTTP proxy reqs setup request URI with scheme and host [and port] + the URL path, only use URL path
$uriComponents = parse_url($requestUri);
if ('' !== $requestUri && '/' === $requestUri[0]) {
// To only use path and query remove the fragment.
if (false !== $pos = strpos($requestUri, '#')) {
$requestUri = substr($requestUri, 0, $pos);
}
} else {
// HTTP proxy reqs setup request URI with scheme and host [and port] + the URL path,
// only use URL path.
$uriComponents = parse_url($requestUri);
if (isset($uriComponents['path'])) {
$requestUri = $uriComponents['path'];
}
if (isset($uriComponents['path'])) {
$requestUri = $uriComponents['path'];
}
if (isset($uriComponents['query'])) {
$requestUri .= '?'.$uriComponents['query'];
if (isset($uriComponents['query'])) {
$requestUri .= '?'.$uriComponents['query'];
}
}
} elseif ($this->server->has('ORIG_PATH_INFO')) {
// IIS 5.0, PHP as CGI
@@ -1908,7 +1916,7 @@ class Request
private static function createRequestFromFactory(array $query = array(), array $request = array(), array $attributes = array(), array $cookies = array(), array $files = array(), array $server = array(), $content = null)
{
if (self::$requestFactory) {
$request = \call_user_func(self::$requestFactory, $query, $request, $attributes, $cookies, $files, $server, $content);
$request = (self::$requestFactory)($query, $request, $attributes, $cookies, $files, $server, $content);
if (!$request instanceof self) {
throw new \LogicException('The Request factory must return an instance of Symfony\Component\HttpFoundation\Request.');

View File

@@ -153,7 +153,7 @@ class NativeSessionStorage implements SessionStorageInterface
if (null !== $this->emulateSameSite) {
$originalCookie = SessionUtils::popSessionCookie(session_name(), session_id());
if (null !== $originalCookie) {
header(sprintf('%s; SameSite=%s', $originalCookie, $this->emulateSameSite));
header(sprintf('%s; SameSite=%s', $originalCookie, $this->emulateSameSite), false);
}
}
@@ -225,7 +225,7 @@ class NativeSessionStorage implements SessionStorageInterface
if (null !== $this->emulateSameSite) {
$originalCookie = SessionUtils::popSessionCookie(session_name(), session_id());
if (null !== $originalCookie) {
header(sprintf('%s; SameSite=%s', $originalCookie, $this->emulateSameSite));
header(sprintf('%s; SameSite=%s', $originalCookie, $this->emulateSameSite), false);
}
}

View File

@@ -111,7 +111,7 @@ class StreamedResponse extends Response
throw new \LogicException('The Response callback must not be null.');
}
\call_user_func($this->callback);
($this->callback)();
return $this;
}

View File

@@ -283,6 +283,55 @@ class RequestTest extends TestCase
$this->assertEquals('http://test.com/foo', $request->getUri());
}
/**
* @dataProvider getRequestUriData
*/
public function testGetRequestUri($serverRequestUri, $expected, $message)
{
$request = new Request();
$request->server->add(array(
'REQUEST_URI' => $serverRequestUri,
// For having http://test.com
'SERVER_NAME' => 'test.com',
'SERVER_PORT' => 80,
));
$this->assertSame($expected, $request->getRequestUri(), $message);
$this->assertSame($expected, $request->server->get('REQUEST_URI'), 'Normalize the request URI.');
}
public function getRequestUriData()
{
$message = 'Do not modify the path.';
yield array('/foo', '/foo', $message);
yield array('//bar/foo', '//bar/foo', $message);
yield array('///bar/foo', '///bar/foo', $message);
$message = 'Handle when the scheme, host are on REQUEST_URI.';
yield array('http://test.com/foo?bar=baz', '/foo?bar=baz', $message);
$message = 'Handle when the scheme, host and port are on REQUEST_URI.';
yield array('http://test.com:80/foo', '/foo', $message);
yield array('https://test.com:8080/foo', '/foo', $message);
yield array('https://test.com:443/foo', '/foo', $message);
$message = 'Fragment should not be included in the URI';
yield array('http://test.com/foo#bar', '/foo', $message);
yield array('/foo#bar', '/foo', $message);
}
public function testGetRequestUriWithoutRequiredHeader()
{
$expected = '';
$request = new Request();
$message = 'Fallback to empty URI when headers are missing.';
$this->assertSame($expected, $request->getRequestUri(), $message);
$this->assertSame($expected, $request->server->get('REQUEST_URI'), 'Normalize the request URI.');
}
public function testCreateCheckPrecedence()
{
// server is used by default

View File

@@ -390,7 +390,7 @@ class MockPdo extends \PDO
public function prepare($statement, $driverOptions = array())
{
return \is_callable($this->prepareResult)
? \call_user_func($this->prepareResult, $statement, $driverOptions)
? ($this->prepareResult)($statement, $driverOptions)
: $this->prepareResult;
}

View File

@@ -91,7 +91,7 @@ class FileLinkFormatter implements \Serializable
if ($this->requestStack && $this->baseDir && $this->urlFormat) {
$request = $this->requestStack->getMasterRequest();
if ($request instanceof Request) {
if ($this->urlFormat instanceof \Closure && !$this->urlFormat = \call_user_func($this->urlFormat)) {
if ($this->urlFormat instanceof \Closure && !$this->urlFormat = ($this->urlFormat)()) {
return;
}

View File

@@ -55,7 +55,7 @@ class AddAnnotatedClassesToCachePass implements CompilerPassInterface
* @param array $patterns The class patterns to expand
* @param array $classes The existing classes to match against the patterns
*
* @return array A list of classes derivated from the patterns
* @return array A list of classes derived from the patterns
*/
private function expandClasses(array $patterns, array $classes)
{

Some files were not shown because too many files have changed in this diff Show More