parent
73cde64271
commit
606819a8ad
2 changed files with 69 additions and 0 deletions
@ -0,0 +1,24 @@ |
|||||||
|
--TEST-- |
||||||
|
array_push retains its required array argument when an unpacked list is empty |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
|
||||||
|
function main(): void |
||||||
|
{ |
||||||
|
$values = []; |
||||||
|
array_push($values, ...[]); |
||||||
|
var_dump($values); |
||||||
|
|
||||||
|
array_push($values, ...[1, 2]); |
||||||
|
var_dump($values); |
||||||
|
} |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
array(0) { |
||||||
|
} |
||||||
|
array(2) { |
||||||
|
[0]=> |
||||||
|
int(1) |
||||||
|
[1]=> |
||||||
|
int(2) |
||||||
|
} |
||||||
@ -0,0 +1,45 @@ |
|||||||
|
--TEST-- |
||||||
|
static closure created in an instance method remains a valid delayed callback |
||||||
|
--FILE-- |
||||||
|
<?php |
||||||
|
|
||||||
|
final class CallbackHolder |
||||||
|
{ |
||||||
|
private Closure $callback; |
||||||
|
|
||||||
|
public function __construct(Closure $callback) |
||||||
|
{ |
||||||
|
$this->callback = $callback; |
||||||
|
} |
||||||
|
|
||||||
|
public function invoke(): mixed |
||||||
|
{ |
||||||
|
return ($this->callback)(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
final class CallbackFactory |
||||||
|
{ |
||||||
|
public function create(): CallbackHolder |
||||||
|
{ |
||||||
|
return new CallbackHolder( |
||||||
|
static function (): never { |
||||||
|
throw new LogicException('expected callback'); |
||||||
|
}, |
||||||
|
); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function main(): void |
||||||
|
{ |
||||||
|
$callback = (new CallbackFactory())->create(); |
||||||
|
|
||||||
|
try { |
||||||
|
$callback->invoke(); |
||||||
|
} catch (LogicException $error) { |
||||||
|
echo $error->getMessage(), "\n"; |
||||||
|
} |
||||||
|
} |
||||||
|
?> |
||||||
|
--EXPECT-- |
||||||
|
expected callback |
||||||
Loading…
Reference in new issue