Closures not working when using the --execute argument.
dmason30 opened this issue · 1 comments
dmason30 commented
- Tinker Version: 2.7.2
- Laravel Version: 9.12.2
- PHP Version: 8.1
Steps To Reproduce:
Running any one of these commands:
php artisan tinker --execute="optional('foo', fn($v) => dump($v));"
php artisan tinker --execute="transform('foo', fn($v) => dump($v));"
php artisan tinker --execute="tap('foo', fn($v) => dump($v));"
php artisan tinker --execute="with('foo', fn($v) => dump($v));"
php artisan tinker --execute="optional('foo', function ($v) { dump($v); });"
php artisan tinker --execute="transform('foo', function ($v) { dump($v); });"
php artisan tinker --execute="tap('foo', function ($v) { dump($v); });"
php artisan tinker --execute="with('foo', function ($v) { dump($v); });"
Produces this error
TypeError: Too few arguments to function dump(), 0 passed in /Users/danmason/PhpstormProjects/xxxeval()'d code on line 2 and exactly 1 expected
Running the same functions in PsySh works as expected
$ php artisan tinker
Psy Shell v0.11.2 (PHP 8.1.4 — cli) by Justin Hileman
>>> optional('foo', fn($v) => dump($v));
"foo"
=> "foo"
>>> transform('foo', fn($v) => dump($v));
"foo"
=> "foo"
>>> tap('foo', fn($v) => dump($v));
"foo"
=> "foo"
>>> with('foo', fn($v) => dump($v))
"foo"
=> "foo"
driesvints commented
You need to escape the $
sign when running this in the CLI:
$ php artisan tinker --execute="optional('foo', fn(\$v) => dump(\$v));"
"foo"