Merge branch '2.8' into 3.4
* 2.8: Another PR template tweak [PropertyInfo] ReflectionExtractor: give a chance to other extractors if no properties Clean calls to http_build_query() [WebProfilerBundle] limit ajax request to 100 and remove the last one [HttpFoundation] Fix missing "throw" in JsonResponse Improve the documentation of Suppress warning from sapi_windows_vt100_support on stream other than STDIO removed extra-verbose comments Fixes #26136: Avoid emitting warning in hasParameterOption() Added a README entry to the PR template [HttpFoundation] Add x-zip-compressed to MimeTypeExtensionGuesser. [DI] Add null check for removeChild
This commit is contained in:
commit
43344598dd
18
.github/PULL_REQUEST_TEMPLATE.md
vendored
18
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -3,16 +3,18 @@
|
|||||||
| Branch? | master for features / 2.7 up to 4.0 for bug fixes <!-- see below -->
|
| Branch? | master for features / 2.7 up to 4.0 for bug fixes <!-- see below -->
|
||||||
| Bug fix? | yes/no
|
| Bug fix? | yes/no
|
||||||
| New feature? | yes/no <!-- don't forget to update src/**/CHANGELOG.md files -->
|
| New feature? | yes/no <!-- don't forget to update src/**/CHANGELOG.md files -->
|
||||||
| BC breaks? | yes/no
|
| BC breaks? | no <!-- see https://symfony.com/bc -->
|
||||||
| Deprecations? | yes/no <!-- don't forget to update UPGRADE-*.md files -->
|
| Deprecations? | yes/no <!-- don't forget to update UPGRADE-*.md files -->
|
||||||
| Tests pass? | yes/no
|
| Tests pass? | yes <!-- please add some, will be required by reviewers -->
|
||||||
| Fixed tickets | #... <!-- #-prefixed issue number(s), if any -->
|
| Fixed tickets | #... <!-- #-prefixed issue number(s), if any -->
|
||||||
| License | MIT
|
| License | MIT
|
||||||
| Doc PR | symfony/symfony-docs#... <!--highly recommended for new features-->
|
| Doc PR | symfony/symfony-docs#... <!-- required for new features -->
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
- Bug fixes must be submitted against the lowest branch where they apply
|
Write a short README entry for your feature/bugfix here (replace this comment block.)
|
||||||
(lowest branches are regularly merged to upper ones so they get the fixes too).
|
This will help people understand your PR and can be used as a start of the Doc PR.
|
||||||
- Features and deprecations must be submitted against the master branch.
|
Additionally:
|
||||||
- Replace this comment by a description of what your PR is solving.
|
- Bug fixes must be submitted against the lowest branch where they apply
|
||||||
|
(lowest branches are regularly merged to upper ones so they get the fixes too).
|
||||||
|
- Features and deprecations must be submitted against the master branch.
|
||||||
-->
|
-->
|
||||||
|
@ -286,7 +286,7 @@ class ArgvInput extends Input
|
|||||||
// For long options, test for '--option=' at beginning
|
// For long options, test for '--option=' at beginning
|
||||||
// For short options, test for '-o' at beginning
|
// For short options, test for '-o' at beginning
|
||||||
$leading = 0 === strpos($value, '--') ? $value.'=' : $value;
|
$leading = 0 === strpos($value, '--') ? $value.'=' : $value;
|
||||||
if ($token === $value || 0 === strpos($token, $leading)) {
|
if ($token === $value || '' !== $leading && 0 === strpos($token, $leading)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -317,7 +317,7 @@ class ArgvInput extends Input
|
|||||||
// For long options, test for '--option=' at beginning
|
// For long options, test for '--option=' at beginning
|
||||||
// For short options, test for '-o' at beginning
|
// For short options, test for '-o' at beginning
|
||||||
$leading = 0 === strpos($value, '--') ? $value.'=' : $value;
|
$leading = 0 === strpos($value, '--') ? $value.'=' : $value;
|
||||||
if (0 === strpos($token, $leading)) {
|
if ('' !== $leading && 0 === strpos($token, $leading)) {
|
||||||
return substr($token, strlen($leading));
|
return substr($token, strlen($leading));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -92,7 +92,7 @@ class StreamOutput extends Output
|
|||||||
{
|
{
|
||||||
if (DIRECTORY_SEPARATOR === '\\') {
|
if (DIRECTORY_SEPARATOR === '\\') {
|
||||||
return
|
return
|
||||||
function_exists('sapi_windows_vt100_support') && sapi_windows_vt100_support($this->stream)
|
function_exists('sapi_windows_vt100_support') && @sapi_windows_vt100_support($this->stream)
|
||||||
|| '10.0.10586' === PHP_WINDOWS_VERSION_MAJOR.'.'.PHP_WINDOWS_VERSION_MINOR.'.'.PHP_WINDOWS_VERSION_BUILD
|
|| '10.0.10586' === PHP_WINDOWS_VERSION_MAJOR.'.'.PHP_WINDOWS_VERSION_MINOR.'.'.PHP_WINDOWS_VERSION_BUILD
|
||||||
|| false !== getenv('ANSICON')
|
|| false !== getenv('ANSICON')
|
||||||
|| 'ON' === getenv('ConEmuANSI')
|
|| 'ON' === getenv('ConEmuANSI')
|
||||||
|
@ -370,6 +370,19 @@ class ArgvInputTest extends TestCase
|
|||||||
$this->assertFalse($input->hasParameterOption('-fh'), '->hasParameterOption() returns true if the given short option is in the raw input');
|
$this->assertFalse($input->hasParameterOption('-fh'), '->hasParameterOption() returns true if the given short option is in the raw input');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testNoWarningOnInvalidParameterOption()
|
||||||
|
{
|
||||||
|
$input = new ArgvInput(array('cli.php', '-edev'));
|
||||||
|
|
||||||
|
$this->assertTrue($input->hasParameterOption(array('-e', '')));
|
||||||
|
// No warning thrown
|
||||||
|
$this->assertFalse($input->hasParameterOption(array('-m', '')));
|
||||||
|
|
||||||
|
$this->assertEquals('dev', $input->getParameterOption(array('-e', '')));
|
||||||
|
// No warning thrown
|
||||||
|
$this->assertFalse($input->getParameterOption(array('-m', '')));
|
||||||
|
}
|
||||||
|
|
||||||
public function testToString()
|
public function testToString()
|
||||||
{
|
{
|
||||||
$input = new ArgvInput(array('cli.php', '-f', 'foo'));
|
$input = new ArgvInput(array('cli.php', '-f', 'foo'));
|
||||||
|
@ -209,7 +209,7 @@ class Form extends Link implements \ArrayAccess
|
|||||||
parse_str($query, $currentParameters);
|
parse_str($query, $currentParameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
$queryString = http_build_query(array_merge($currentParameters, $this->getValues()), null, '&');
|
$queryString = http_build_query(array_merge($currentParameters, $this->getValues()), '', '&');
|
||||||
|
|
||||||
$pos = strpos($uri, '?');
|
$pos = strpos($uri, '?');
|
||||||
$base = false === $pos ? $uri : substr($uri, 0, $pos);
|
$base = false === $pos ? $uri : substr($uri, 0, $pos);
|
||||||
|
@ -519,13 +519,18 @@ class Filesystem
|
|||||||
/**
|
/**
|
||||||
* Mirrors a directory to another.
|
* Mirrors a directory to another.
|
||||||
*
|
*
|
||||||
|
* Copies files and directories from the origin directory into the target directory. By default:
|
||||||
|
*
|
||||||
|
* - existing files in the target directory will be overwritten, except if they are newer (see the `override` option)
|
||||||
|
* - files in the target directory that do not exist in the source directory will not be deleted (see the `delete` option)
|
||||||
|
*
|
||||||
* @param string $originDir The origin directory
|
* @param string $originDir The origin directory
|
||||||
* @param string $targetDir The target directory
|
* @param string $targetDir The target directory
|
||||||
* @param \Traversable $iterator A Traversable instance
|
* @param \Traversable $iterator Iterator that filters which files and directories to copy
|
||||||
* @param array $options An array of boolean options
|
* @param array $options An array of boolean options
|
||||||
* Valid options are:
|
* Valid options are:
|
||||||
* - $options['override'] Whether to override an existing file on copy or not (see copy())
|
* - $options['override'] If true, target files newer than origin files are overwritten (see copy(), defaults to false)
|
||||||
* - $options['copy_on_windows'] Whether to copy files instead of links on Windows (see symlink())
|
* - $options['copy_on_windows'] Whether to copy files instead of links on Windows (see symlink(), defaults to false)
|
||||||
* - $options['delete'] Whether to delete files that are not in the source directory (defaults to false)
|
* - $options['delete'] Whether to delete files that are not in the source directory (defaults to false)
|
||||||
*
|
*
|
||||||
* @throws IOException When file type is unknown
|
* @throws IOException When file type is unknown
|
||||||
|
@ -599,6 +599,7 @@ class MimeTypeExtensionGuesser implements ExtensionGuesserInterface
|
|||||||
'application/x-xliff+xml' => 'xlf',
|
'application/x-xliff+xml' => 'xlf',
|
||||||
'application/x-xpinstall' => 'xpi',
|
'application/x-xpinstall' => 'xpi',
|
||||||
'application/x-xz' => 'xz',
|
'application/x-xz' => 'xz',
|
||||||
|
'application/x-zip-compressed' => 'zip',
|
||||||
'application/x-zmachine' => 'z1',
|
'application/x-zmachine' => 'z1',
|
||||||
'application/xaml+xml' => 'xaml',
|
'application/xaml+xml' => 'xaml',
|
||||||
'application/xcap-diff+xml' => 'xdf',
|
'application/xcap-diff+xml' => 'xdf',
|
||||||
|
@ -557,7 +557,7 @@ class Request
|
|||||||
*/
|
*/
|
||||||
public function overrideGlobals()
|
public function overrideGlobals()
|
||||||
{
|
{
|
||||||
$this->server->set('QUERY_STRING', static::normalizeQueryString(http_build_query($this->query->all(), null, '&')));
|
$this->server->set('QUERY_STRING', static::normalizeQueryString(http_build_query($this->query->all(), '', '&')));
|
||||||
|
|
||||||
$_GET = $this->query->all();
|
$_GET = $this->query->all();
|
||||||
$_POST = $this->request->all();
|
$_POST = $this->request->all();
|
||||||
|
@ -2316,7 +2316,7 @@ class RequestContentProxy extends Request
|
|||||||
{
|
{
|
||||||
public function getContent($asResource = false)
|
public function getContent($asResource = false)
|
||||||
{
|
{
|
||||||
return http_build_query(array('_method' => 'PUT', 'content' => 'mycontent'));
|
return http_build_query(array('_method' => 'PUT', 'content' => 'mycontent'), '', '&');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ class ReflectionExtractor implements PropertyListExtractorInterface, PropertyTyp
|
|||||||
$properties[$propertyName] = $propertyName;
|
$properties[$propertyName] = $propertyName;
|
||||||
}
|
}
|
||||||
|
|
||||||
return array_values($properties);
|
return $properties ? array_values($properties) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -59,6 +59,8 @@ class ReflectionExtractorTest extends TestCase
|
|||||||
),
|
),
|
||||||
$this->extractor->getProperties('Symfony\Component\PropertyInfo\Tests\Fixtures\Dummy')
|
$this->extractor->getProperties('Symfony\Component\PropertyInfo\Tests\Fixtures\Dummy')
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$this->assertNull($this->extractor->getProperties('Symfony\Component\PropertyInfo\Tests\Fixtures\NoProperties'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGetPropertiesWithCustomPrefixes()
|
public function testGetPropertiesWithCustomPrefixes()
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Symfony\Component\PropertyInfo\Tests\Fixtures;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of the Symfony package.
|
||||||
|
*
|
||||||
|
* (c) Fabien Potencier <fabien@symfony.com>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Symfony\Component\PropertyInfo\Tests\Fixtures;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Kévin Dunglas <dunglas@gmail.com>
|
||||||
|
*/
|
||||||
|
class NoProperties
|
||||||
|
{
|
||||||
|
}
|
@ -95,7 +95,7 @@ class SwitchUserListener implements ListenerInterface
|
|||||||
|
|
||||||
if (!$this->stateless) {
|
if (!$this->stateless) {
|
||||||
$request->query->remove($this->usernameParameter);
|
$request->query->remove($this->usernameParameter);
|
||||||
$request->server->set('QUERY_STRING', http_build_query($request->query->all()));
|
$request->server->set('QUERY_STRING', http_build_query($request->query->all(), '', '&'));
|
||||||
$response = new RedirectResponse($request->getUri(), 302);
|
$response = new RedirectResponse($request->getUri(), 302);
|
||||||
|
|
||||||
$event->setResponse($response);
|
$event->setResponse($response);
|
||||||
|
@ -127,7 +127,7 @@ class LogoutUrlGenerator
|
|||||||
$url = UrlGeneratorInterface::ABSOLUTE_URL === $referenceType ? $request->getUriForPath($logoutPath) : $request->getBaseUrl().$logoutPath;
|
$url = UrlGeneratorInterface::ABSOLUTE_URL === $referenceType ? $request->getUriForPath($logoutPath) : $request->getBaseUrl().$logoutPath;
|
||||||
|
|
||||||
if (!empty($parameters)) {
|
if (!empty($parameters)) {
|
||||||
$url .= '?'.http_build_query($parameters);
|
$url .= '?'.http_build_query($parameters, '', '&');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!$this->router) {
|
if (!$this->router) {
|
||||||
|
Reference in New Issue
Block a user