代码之家  ›  专栏  ›  技术社区  ›  Kim

Symfony 2.8->3.4 ERROR PhpDumper“无法转储具有方法调用的定义。”

  •  1
  • Kim  · 技术社区  · 6 年前

    我正在将一个应用程序从Symfony 2.8更新到3.4,并得到以下错误:

    Cannot dump definitions which have method calls.

    这里是详细版本:

      [Symfony\Component\DependencyInjection\Exception\RuntimeException]  
      Cannot dump definitions which have method calls.                    
    
    
    Exception trace:
     Symfony\Component\DependencyInjection\Dumper\PhpDumper->dumpValue() at /project/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php:642
     Symfony\Component\DependencyInjection\Dumper\PhpDumper->addServiceMethodCalls() at /project/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php:521
     Symfony\Component\DependencyInjection\Dumper\PhpDumper->addServiceInlinedDefinitions() at /project/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php:834
     Symfony\Component\DependencyInjection\Dumper\PhpDumper->addService() at /project/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php:876
     Symfony\Component\DependencyInjection\Dumper\PhpDumper->addServices() at /project/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php:193
     Symfony\Component\DependencyInjection\Dumper\PhpDumper->dump() at /project/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php:859
     Symfony\Component\HttpKernel\Kernel->dumpContainer() at /project/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php:663
     Symfony\Component\HttpKernel\Kernel->initializeContainer() at /project/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php:135
     Symfony\Component\HttpKernel\Kernel->boot() at /project/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:64
     Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /project/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:148
     Symfony\Component\Console\Application->run() at /project/bin/console:27
    

    如果我甩了 $value 在抛出异常之前 PhpDumper.php:1761 我得到:

    /project/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php:1761:
    class Symfony\Component\DependencyInjection\Definition#278 (24) {
      private $class =>
      string(32) "Doctrine\Common\Cache\ArrayCache"
      private $file =>
      NULL
      private $factory =>
      NULL
      private $shared =>
      bool(true)
      private $deprecated =>
      bool(false)
      private $deprecationTemplate =>
      NULL
      private $properties =>
      array(0) {
      }
      private $calls =>
      array(1) {
        [0] =>
        array(2) {
          [0] =>
          string(12) "setNamespace"
          [1] =>
          array(1) {
            ...
          }
        }
      }
      private $instanceof =>
      array(0) {
      }
      private $autoconfigured =>
      bool(false)
      private $configurator =>
      NULL
      private $tags =>
      array(0) {
      }
      private $public =>
      bool(false)
      private $private =>
      bool(false)
      private $synthetic =>
      bool(false)
      private $abstract =>
      bool(false)
      private $lazy =>
      bool(false)
      private $decoratedService =>
      NULL
      private $autowired =>
      bool(false)
      private $autowiringTypes =>
      array(0) {
      }
      private $changes =>
      array(2) {
        'class' =>
        bool(true)
        'public' =>
        bool(true)
      }
      private $bindings =>
      array(0) {
      }
      private $errors =>
      array(0) {
      }
      protected $arguments =>
      array(0) {
      }
    }
    
    In PhpDumper.php line 1762:
    
      Cannot dump definitions which have method calls.  
    

    所以 PhpDumper.php 无法转储 Symfony\Component\DependencyInjection\Definition ?

    我目前的解决方法是修改 PhpDumper.php 不抛出那个例外。

    感谢你的建议:)

    更新

    这可能与phpcr学说有关。我创建了一个测试symfony项目,可以复制:

    https://github.com/wuestkamp/my_project_name
    

    我创造了一个 issue .

    基姆

    1 回复  |  直到 6 年前
        1
  •  0
  •   Kim    6 年前

    这似乎是SF的一个缺陷 3.4.15 ,降级为 3.4.14 结果没有错误。