Skip to content

Commit 6b47763

Browse files
committed
Route: uses loose comparison == for default values [Closes #8]
1 parent fc4fc90 commit 6b47763

File tree

3 files changed

+38
-2
lines changed

3 files changed

+38
-2
lines changed

src/Routing/Route.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,8 @@ private function preprocessParams(array &$params): bool
319319
}
320320

321321
if ($fixity !== null) {
322-
if ($params[$name] === $meta[self::Value]) { // remove default values; null values are retain
322+
if ($params[$name] == $meta[self::Value]) { // default value may be object, intentionally ==
323+
// remove default values; null values are retain
323324
unset($params[$name]);
324325
continue;
325326

tests/Route/objectParameter.phpt

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
/**
4+
* Test: Nette\Routing\Route object parameter default value.
5+
*/
6+
7+
declare(strict_types=1);
8+
9+
use Nette\Routing\Route;
10+
use Tester\Assert;
11+
12+
13+
require __DIR__ . '/../bootstrap.php';
14+
15+
16+
test('', function () {
17+
$object = new stdClass;
18+
19+
$route = new Route('', [
20+
'param' => $object,
21+
]);
22+
23+
Assert::same(
24+
'http://example.com/',
25+
testRouteOut($route, ['param' => $object]),
26+
);
27+
28+
Assert::same(
29+
'http://example.com/',
30+
testRouteOut($route, ['param' => new stdClass]),
31+
);
32+
});

tests/Route/scalarParams.phpt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,5 +245,8 @@ test('', function () {
245245
testRouteOut($route, ['presenter' => 'homepage', 'param' => null]),
246246
);
247247

248-
Assert::null(testRouteOut($route, ['presenter' => 'homepage', 'param' => '']));
248+
Assert::same(
249+
'http://example.com/homepage/',
250+
testRouteOut($route, ['presenter' => 'homepage', 'param' => '']),
251+
);
249252
});

0 commit comments

Comments
 (0)