Symfony \ Component \ HttpFoundation \ Request在php REPL中不起作用

时间:2018-03-05 12:41:01

标签: php symfony

出于某种原因,这个代码在文件中

<?php
require __DIR__ . '/vendor/autoload.php';
use Symfony\Component\HttpFoundation\Request;
var_dump(new Request);

工作和打印:

object(Symfony\Component\HttpFoundation\Request)#3 (23) {
  ["attributes"]=>
  object(Symfony\Component\HttpFoundation\ParameterBag)#5 (1) {
    ["parameters":protected]=>
    array(0) {
    }
  }
  ["request"]=>
...

但是在REPL(php -a)中它会发出错误:

$ php -a
Interactive shell

php > require __DIR__ . '/vendor/autoload.php';
php > use Symfony\Component\HttpFoundation\Request;
php > var_dump(new Request);

Warning: Uncaught Error: Class 'Request' not found in php shell code:1
Stack trace:
#0 {main}
  thrown in php shell code on line 1

我想知道为什么。

1 个答案:

答案 0 :(得分:1)

use语句似乎只影响当前的“命令”,并且在执行后无法识别。

单一命令:

php > use Foo\Bar\Baz; var_dump(Baz::class);
string(11) "Foo\Bar\Baz"

两个命令:

php > use Foo\Bar\Baz;
php > var_dump(Baz::class);
string(3) "Baz"

您可以通过将其包装在命名空间中来延迟执行,例如:

php > namespace Qux {
php { use Foo\Bar\Baz;
php { var_dump(Baz::class);
php { }
string(11) "Foo\Bar\Baz"
php >