8000 Merge branch '2.6' into 2.7 · symfony/symfony@175af7f · GitHub
[go: up one dir, main page]

Skip to content

Commit 175af7f

Browse files
committed
Merge branch '2.6' into 2.7
* 2.6: Added 'default' color [HttpFoundation] Reload the session after regenerating its id [HttpFoundation] Add a test case to confirm a bug in session migration [2.6] Static Code Analysis for Components and Bundles [Finder] Command::addAtIndex() fails with Command instance argument [DependencyInjection] Freeze also FrozenParameterBag::remove [Twig][Bridge] replaced `extends` with `use` in bootstrap_3_horizontal_layout.html.twig fix CS fixed CS Add a way to reset the singleton [Security] allow to use `method` in XML configs Remove duplicate example Remove var not used due to returning early (introduced in 8982c32) Enhance hhvm test skip message
2 parents b2fddec + e6cc491 commit 175af7f

File tree

48 files changed

+291
-73
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+291
-73
lines changed

UPGRADE-3.0.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -300,10 +300,6 @@ UPGRADE FROM 2.x to 3.0
300300
echo $form->getErrors(true, false);
301301
```
302302

303-
```php
304-
echo $form->getErrors(true, false);
305-
```
306-
307303
### FrameworkBundle
308304

309305
* The `config:debug`, `container:debug`, `router:debug`, `translation:debug`

src/Symfony/Bridge/Doctrine/Tests/Logger/DbalLoggerTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public function testLogNonUtf8Array()
9191
'utf8' => 'foo',
9292
array(
9393
'nonutf8' => DbalLogger::BINARY_DATA_VALUE,
94-
)
94+
),
9595
)
9696
)
9797
;
@@ -100,7 +100,7 @@ public function testLogNonUtf8Array()
100100
'utf8' => 'foo',
101101
array(
102102
'nonutf8' => "\x7F\xFF",
103-
)
103+
),
104104
));
105105
}
106106

src/Symfony/Bridge/Twig/Resources/views/Form/bootstrap_3_horizontal_layout.html.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{% extends "bootstrap_3_layout.html.twig" %}
1+
{% use "bootstrap_3_layout.html.twig" %}
22

33
{% block form_start -%}
44
{% set attr = attr|merge({class: (attr.class|default('') ~ ' form-horizontal')|trim}) %}

src/Symfony/Bundle/FrameworkBundle/Command/TranslationDebugCommand.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,8 @@ protected function execute(InputInterface $input, OutputInterface $output)
118118
// Extract used messages
119119
$extractedCatalogue = new MessageCatalogue($locale);
120120
foreach ($transPaths as $path) {
121-
$path = $path.'views';
121+
$path .= 'views';
122+
122123
if (is_dir($path)) {
123124
$this->getContainer()->get('translation.extractor')->extract($path, $extractedCatalogue);
124125
}
@@ -127,7 +128,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
127128
// Load defined messages
128129
$currentCatalogue = new MessageCatalogue($locale);
129130
foreach ($transPaths as $path) {
130-
$path = $path.'translations';
131+
$path .= 'translations';
131132
if (is_dir($path)) {
132133
$loader->loadMessages($path, $currentCatalogue);
133134
}

src/Symfony/Bundle/FrameworkBundle/Command/TranslationUpdateCommand.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
121121
$extractor = $this->getContainer()->get('translation.extractor');
122122
$extractor->setPrefix($input->getOption('prefix'));
123123
foreach ($transPaths as $path) {
124-
$path = $path.'views';
124+
$path .= 'views';
125125
if (is_dir($path)) {
126126
$extractor->extract($path, $extractedCatalogue);
127127
}
@@ -132,7 +132,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
132132
$output->text('Loading translation files');
133133
$loader = $this->getContainer()->get('translation.loader');
134134
foreach ($transPaths as $path) {
135-
$path = $path.'translations';
135+
$path .= 'translations';
136136
if (is_dir($path)) {
137137
$loader->loadMessages($path, $currentCatalogue);
138138
}
@@ -183,7 +183,7 @@ protected function execute(InputInterface $input, OutputInterface $output)
183183

184184
$bundleTransPath = false;
185185
foreach ($transPaths as $path) {
186-
$path = $path.'translations';
186+
$path .= 'translations';
187187
if (is_dir($path)) {
188188
$bundleTransPath = $path;
189189
}

src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ protected function describeContainerServices(ContainerBuilder $builder, array $o
174174
$serviceIds = isset($options['tag']) && $options['tag'] ? array_keys($builder->findTaggedServiceIds($options['tag'])) : $builder->getServiceIds();
175175
$maxTags = array();
176176

177-
foreach ($serviceIds as $key => $serviceId) {
177+
foreach ($serviceIds as $key => $serviceId) {
178178
$definition = $this->resolveServiceDefinition($builder, $serviceId);
179179
if ($definition instanceof Definition) {
180180
// filter out private services unless shown explicitly
@@ -212,7 +212,7 @@ protected function describeContainerServices(ContainerBuilder $builder, array $o
212212
foreach ($definition->getTag($showTag) as $key => $tag) {
213213
$tagValues = array();
214214
foreach ($tagsNames as $tagName) {
215-
$tagValues[] = isset($tag[$tagName]) ? $tag[$tagName] : "";
215+
$tagValues[] = isset($tag[$tagName]) ? $tag[$tagName] : '';
216216
}
217217
if (0 === $key) {
218218
$table->addRow(array_merge(array($serviceId), $tagValues, array($definition->getClass())));
@@ -225,10 +225,10 @@ protected function describeContainerServices(ContainerBuilder $builder, array $o
225225
}
226226
} elseif ($definition instanceof Alias) {
227227
$alias = $definition;
228-
$table->addRow(array_merge(array($serviceId, sprintf('alias for "%s"', $alias)), $tagsCount ? array_fill(0, $tagsCount, "") : array()));
228+
$table->addRow(array_merge(array($serviceId, sprintf('alias for "%s"', $alias)), $tagsCount ? array_fill(0, $tagsCount, '') : array()));
229229
} else {
230230
// we have no information (happens with "service_container")
231-
$table->addRow(array_merge(array($serviceId, get_class($definition)), $tagsCount ? array_fill(0, $tagsCount, "") : array()));
231+
$table->addRow(array_merge(array($serviceId, get_class($definition)), $tagsCount ? array_fill(0, $tagsCount, '') : array()));
232232
}
233233
}
234234

@@ -245,7 +245,7 @@ protected function describeContainerDefinition(Definition $definition, array $op
245245
: array();
246246

247247
$description[] = sprintf('< 10000 span class=pl-s><comment>Service Id</comment> %s', isset($options['id']) ? $options['id'] : '-');
248-
$description[] = sprintf('<comment>Class</comment> %s', $definition->getClass() ?: "-");
248+
$description[] = sprintf('<comment>Class</comment> %s', $definition->getClass() ?: '-');
249249

250250
$tags = $definition->getTags();
251251
if (count($tags)) {
@@ -271,7 +271,7 @@ protected function describeContainerDefinition(Definition $definition, array $op
271271
$description[] = sprintf('<comment>Abstract</comment> %s', $definition->isAbstract() ? 'yes' : 'no');
272272

273273
if ($definition->getFile()) {
274-
$description[] = sprintf('<comment>Required File</comment> %s', $definition->getFile() ? $definition->getFile() : '-');
274+
$description[] = sprintf('<comment>Required File</comment> %s', $definition->getFile() ?: '-');
275275
}
276276

277277
if ($definition->getFactoryClass(false)) {

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -670,22 +670,22 @@ private function registerTranslatorConfiguration(array $config, ContainerBuilder
670670
if (class_exists('Symfony\Component\Validator\Validation')) {
671671
$r = new \ReflectionClass('Symfony\Component\Validator\Validation');
672672

673-
$dirs[] = dirname($r->getFilename()).'/Resources/translations';
673+
$dirs[] = dirname($r->getFileName()).'/Resources/translations';
674674
}
675675
if (class_exists('Symfony\Component\Form\Form')) {
676676
$r = new \ReflectionClass('Symfony\Component\Form\Form');
677677

678-
$dirs[] = dirname($r->getFilename()).'/Resources/translations';
678+
$dirs[] = dirname($r->getFileName()).'/Resources/translations';
679679
}
680680
if (class_exists('Symfony\Component\Security\Core\Exception\AuthenticationException')) {
681681
$r = new \ReflectionClass('Symfony\Component\Security\Core\Exception\AuthenticationException');
682682

683-
$dirs[] = dirname($r->getFilename()).'/../Resources/translations';
683+
$dirs[] = dirname( 3D24 $r->getFileName()).'/../Resources/translations';
684684
}
685685
$overridePath = $container->getParameter('kernel.root_dir').'/Resources/%s/translations';
686686
foreach ($container->getParameter('kernel.bundles') as $bundle => $class) {
687687
$reflection = new \ReflectionClass($class);
688-
if (is_dir($dir = dirname($reflection->getFilename()).'/Resources/translations')) {
688+
if (is_dir($dir = dirname($reflection->getFileName()).'/Resources/translations')) {
689689
$dirs[] = $dir;
690690
}
691691
if (is_dir($dir = sprintf($overridePath, $bundle))) {
@@ -800,7 +800,7 @@ private function getValidatorMappingFiles(ContainerBuilder $container)
800800
$bundles = $container->getParameter('kernel.bundles');
801801
foreach ($bundles as $bundle) {
802802
$reflection = new \ReflectionClass($bundle);
803-
$dirname = dirname($reflection->getFilename());
803+
$dirname = dirname($reflection->getFileName());
804804

805805
if (is_file($file = $dirname.'/Resources/config/validation.xml')) {
806806
$files[0][] = realpath($file);
@@ -820,7 +820,15 @@ private function getValidatorMappingFiles(ContainerBuilder $container)
820820
$files[1][] = $file->getRealpath();
821821
}
822822

823+
<<<<<<< HEAD
823824
$container->addResource(new DirectoryResource($dir));
825+
=======
826+
foreach ($container->getParameter('kernel.bundles') as $bundle) {
827+
$reflection = new \ReflectionClass($bundle);
828+
if (is_file($file = dirname($reflection->getFileName()).'/Resources/config/validation.yml')) {
829+
$files[] = realpath($file);
830+
$container->addResource(new FileResource($file));
831+
>>>>>>> 2.6
824832
}
825833
}
826834

src/Symfony/Bundle/FrameworkBundle/Tests/Command/CacheClearCommand/CacheClearCommandTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ protected function setUp()
2424
{
2525
$this->fs = new Filesystem();
2626
$this->kernel = new TestAppKernel('test', true);
27-
$this->rootDir = sys_get_temp_dir().DIRECTORY_SEPARATOR.uniqid('sf2_cache_');
27+
$this->rootDir = sys_get_temp_dir().DIRECTORY_SEPARATOR.uniqid('sf2_cache_', true);
2828
$this->kernel->setRootDir($this->rootDir);
2929
$this->fs->mkdir($this->rootDir);
3030
}

src/Symfony/Bundle/FrameworkBundle/Tests/Command/TranslationDebugCommandTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public function testDebugInvalidDirectory()
9595
protected function setUp()
9696
{
9797
$this->fs = new Filesystem();
98-
$this->translationDir = sys_get_temp_dir().'/'.uniqid('sf2_translation');
98+
$this->translationDir = sys_get_temp_dir().'/'.uniqid('sf2_translation', true);
9999
$this->fs->mkdir($this->translationDir.'/Resources/translations');
100100
$this->fs->mkdir($this->translationDir.'/Resources/views');
101101
}

src/Symfony/Bundle/FrameworkBundle/Tests/Console/Descriptor/AbstractDescriptorTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ public function getDescribeContainerParameterTestData()
112112
{
113113
$data = $this->getDescriptionTestData(ObjectsProvider::getContainerParameter());
114114

115-
array_push($data[0], array('parameter' => 'database_name'));
115+
$data[0][] = array('parameter' => 'database_name');
116116

117117
return $data;
118118
}

src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ private function addAccessControlSection(ArrayNodeDefinition $rootNode)
162162
->cannotBeOverwritten()
163163
->prototype('array')
164164
->fixXmlConfig('ip')
165+
->fixXmlConfig('method')
165166
->children()
166167
->scalarNode('requires_channel')->defaultNull()->end()
167168
->scalarNode('path')
@@ -286,7 +287,7 @@ private function addFirewallsSection(ArrayNodeDefinition $rootNode, array $facto
286287
->arrayNode('anonymous')
287288
->canBeUnset()
288289
->children()
289-
->scalarNode('key')->defaultValue(uniqid())->end()
290+
->scalarNode('key')->defaultValue(uniqid('', true))->end()
290291
->end()
291292
->end()
292293
->arrayNode('switch_user')

src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/UserProvider/InMemoryFactory.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public function addConfiguration(NodeDefinition $node)
5454
->useAttributeAsKey('name')
5555
->prototype('array')
5656
->children()
57-
->scalarNode('password')->defaultValue(uniqid())->end()
57+
->scalarNode('password')->defaultValue(uniqid('', true))->end()
5858
->arrayNode('roles')
5959
->beforeNormalization()->ifString()->then(function ($v) { return preg_split('/\s*,\s*/', $v); })->end()
6060
->prototype('scalar')->end()

src/Symfony/Bundle/TwigBundle/Command/DebugCommand.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
1919

2020
/**
21-
* Lists twig functions, filters, globals and tests present in the current project
21+
* Lists twig functions, filters, globals and tests present in the current project.
2222
*
2323
* @author Jordi Boggiano <j.boggiano@seld.be>
2424
*/

src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public function load(array $configs, ContainerBuilder $container)
8383
}
8484

8585
$reflection = new \ReflectionClass($class);
86-
if (is_dir($dir = dirname($reflection->getFilename()).'/Resources/views')) {
86+
if (is_dir($dir = dirname($reflection->getFileName()).'/Resources/views')) {
8787
$this->addTwigPath($twigFilesystemLoaderDefinition, $dir, $bundle);
8888
}
8989
}

src/Symfony/Bundle/TwigBundle/Tests/DependencyInjection/TwigExtensionTest.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -190,10 +190,8 @@ public function testTwigLoaderPaths($format)
190190
$def = $container->getDefinition('twig.loader.filesystem');
191191
$paths = array();
192192
foreach ($def->getMethodCalls() as $call) {
193-
if ('addPath' === $call[0]) {
194-
if (false === strpos($call[1][0], 'Form')) {
195-
$paths[] = $call[1];
196-
}
193+
if ('addPath' === $call[0] && false === strpos($call[1][0], 'Form')) {
194+
$paths[] = $call[1];
197195
}
198196
}
199197

src/Symfony/Component/BrowserKit/Cookie.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@ public function __construct($name, $value, $expires = null, $path = null, $domai
8282

8383
$this->expires = $timestampAsDateTime->getTimestamp();
8484
}
85-
8685
}
8786

8887
/**

src/Symfony/Component/Config/Util/XmlUtils.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ public static function phpize($value)
196196
return '0' == $value[0] ? octdec($value) : (((string) $raw === (string) $cast) ? $cast : $raw);
197197
case isset($value[1]) && '-' === $value[0] && ctype_digit(substr($value, 1)):
198198
$raw = $value;
199-
$cast = intval($value);
199+
$cast = (int) $value;
200200

201201
return '0' == $value[1] ? octdec($value) : (((string) $raw === (string) $cast) ? $cast : $raw);
202202
case 'true' === $lowercaseValue:

src/Symfony/Component/Console/Formatter/OutputFormatterStyle.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class OutputFormatterStyle implements OutputFormatterStyleInterface
2929
'magenta' => array('set' => 35, 'unset' => 39),
3030
'cyan' => array('set' => 36, 'unset' => 39),
3131
'white' => array('set' => 37, 'unset' => 39),
32+
'default' => array('set' => 39, 'unset' => 39),
3233
);
3334
private static $availableBackgroundColors = array(
3435
'black' => array('set' => 40, 'unset' => 49),
@@ -39,6 +40,7 @@ class OutputFormatterStyle implements OutputFormatterStyleInterface
3940
'magenta' => array('set' => 45, 'unset' => 49),
4041
'cyan' => array('set' => 46, 'unset' => 49),
4142
'white' => array('set' => 47, 'unset' => 49),
43+
'default' => array('set' => 49, 'unset' => 49),
4244
);
4345
private static $availableOptions = array(
4446
'bold' => array('set' => 1, 'unset' => 22),

src/Symfony/Component/Console/Helper/DebugFormatterHelper.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
*/
2121
class DebugFormatterHelper extends Helper
2222
{
23-
private $colors = array('black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white');
23+
private $colors = array('black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white', 'default');
2424
private $started = array();
2525
private $count = -1;
2626

src/Symfony/Component/Console/Helper/ProgressBar.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ public function setCurrent($step)
374374
}
375375

376376
/**
377-
* Sets whether to overwrite the progressbar, false for new line
377+
* Sets whether to overwrite the progressbar, false for new line.
378378
*
379379
* @param bool $overwrite
380380
*/
@@ -401,8 +401,8 @@ public function setProgress($step)
401401
$this->max = $step;
402402
}
403403

404-
$prevPeriod = intval($this->step / $this->redrawFreq);
405-
$currPeriod = intval($step / $this->redrawFreq);
404+
$prevPeriod = (int) ($this->step / $this->redrawFreq);
405+
$currPeriod = (int) ($step / $this->redrawFreq);
406406
$this->step = $step;
407407
$this->percent = $this->max ? (float) $this->step / $this->max : 0;
408408
if ($prevPeriod !== $currPeriod || $this->max === $step) {

src/Symfony/Component/Console/Question/ChoiceQuestion.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,8 @@ private function getDefaultValidator()
161161
if (false === $result) {
162162
throw new \InvalidArgumentException(sprintf($errorMessage, $value));
163163
}
164-
array_push($multiselectChoices, (string) $result);
164+
165+
$multiselectChoices[] = $choices[(string) $result];
165166
}
166167

167168
if ($multiselect) {

src/Symfony/Component/Console/Tests/Formatter/OutputFormatterStyleTest.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ public function testForeground()
3737
$style->setForeground('blue');
3838
$this->assertEquals("\033[34mfoo\033[39m", $style->apply('foo'));
3939

40+
$style->setForeground('default');
41+
$this->assertEquals("\033[39mfoo\033[39m", $style->apply('foo'));
42+
4043
$this->setExpectedException('InvalidArgumentException');
4144
$style->setForeground('undefined-color');
4245
}
@@ -51,6 +54,9 @@ public function testBackground()
5154
$style->setBackground('yellow');
5255
$this->assertEquals("\033[43mfoo\033[49m", $style->apply('foo'));
5356

57+
$style->setBackground('default');
58+
$this->assertEquals("\033[49mfoo\033[49m", $style->apply('foo'));
59+
5460
$this->setExpectedException('InvalidArgumentException');
5561
$style->setBackground('undefined-color');
5662
}

src/Symfony/Component/Debug/DebugClassLoader.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ public function loadClass($class)
222222
}
223223
if (self::$caseCheck && preg_match('#([/\\\\][a-zA-Z_\x7F-\xFF][a-zA-Z0-9_\x7F-\xFF]*)+\.(php|hh)$#D', $file, $tail)) {
224224
$tail = $tail[0];
225-
$real = $refl->getFilename();
225+
$real = $refl->getFileName();
226226

227227
if (2 === self::$caseCheck) {
228228
// realpath() on MacOSX doesn't normalize the case of characters

src/Symfony/Component/Debug/Tests/DebugClassLoaderTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,10 @@ class ChildTestingStacking extends TestingStacking { function foo($bar) {} }
112112
restore_exception_handler();
113113
$this->assertStringStartsWith(__FILE__, $exception->getFile());
114114
if (PHP_VERSION_ID < 70000) {
115-
$this->assertRegexp('/^Runtime Notice: Declaration/', $exception->getMessage());
115+
$this->assertRegExp('/^Runtime Notice: Declaration/', $exception->getMessage());
116116
$this->assertEquals(E_STRICT, $exception->getSeverity());
117117
} else {
118-
$this->assertRegexp('/^Warning: Declaration/', $exception->getMessage());
118+
$this->assertRegExp('/^Warning: Declaration/', $exception->getMessage());
119119
$this->assertEquals(E_WARNING, $exception->getSeverity());
120120
}
121121
} catch (\Exception $exception) {

src/Symfony/Component/Debug/Tests/ErrorHandlerTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public function testNotice()
7777

7878
$this->assertEquals(E_NOTICE, $exception->getSeverity());
7979
$this->assertEquals(__FILE__, $exception->getFile());
80-
$this->assertRegexp('/^Notice: Undefined variable: (foo|bar)/', $exception->getMessage());
80+
$this->assertRegExp('/^Notice: Undefined variable: (foo|bar)/', $exception->getMessage());
8181
$this->assertArrayHasKey('foobar', $exception->getContext());
8282

8383
$trace = $exception->getTrace();

0 commit comments

Comments
 (0)
0