2015-05-01 13 views
10

Kompozit gereğini kullanarak VarDumper'ı yükledim. Denetleyicimde dump() işlevini çağırdım, bu doğru çalışmalı mı?Neden VarDumper'ım Symfony2'de çalışmıyor

composer require symfony/var-dumper 

-

public function indexAction() 
{ 
    $messages = Array(
      'x' => 'y', 
      'a' => 'b', 
      'c' => 'd' 
      ); 

    dump($messages); 
} 

En fazla bu hatadır. Ama neden denetleyicimde çöplüğü arayamıyorum?

Attempted to call function "dump" from namespace "App\Bundle\Controller". 
+0

Symfony'de yüklemenizin ne sürümüdür uygulamanın çekirdekte etkin olduğunu? Denetleyici bildiriminiz neye benziyor? – sjagr

cevap

17

Çevreye bağlı olarak,genel işlevinin birden çok bildirimi olabilir.(ör. armut/XML, armut/adobd, vb). Eğer fonksiyon beyanı dökümü yeni Symfony'de yakından bakarsanız Ayrıca, zaten değil yalnızca oluşturulur

mevcuttur:

if (!function_exists('dump')) { 
    /** 
    * @author Nicolas Grekas <[email protected]> 
    */ 
    function dump($var) 
    { 
     foreach (func_get_args() as $var) { 
      VarDumper::dump($var); 
     } 
    } 
} 

Çok iyi çözüm doğrudan ad Symfony\Component\VarDumper\VarDumper den VarDumper::dump() aramak. Ben de beklenmedik davranışlar önlemek için bir exit() içine sarmak için önermek:

use Symfony\Component\VarDumper\VarDumper; 

class myClass 
{ 
    function myFunction() 
    { 
     exit(VarDumper::dump(...)); 
    } 
} 
+1

Açıklama! Sağladığınız 2. seçeneği kullanarak çalıştı. Çok yardımcı, teşekkürler. –

-2

deneyin komutuyla php composer.phar update ile projenizin bağımlılıkları güncellemek için. Bu komut, composer require symfony/var-dumper'dan sonra çalıştırılmalıdır.

+0

Gerçekten değil. ["Gereksinimleri ekledikten/değiştirdikten sonra, değiştirilen gereksinimler yüklenecek veya güncellenecektir."] (Https://getcomposer.org/doc/03-cli.md#require) – sjagr

+0

@sjagr haklısınız. Belki OP, ilk komuttaki php yi kaçırıyor mu? –

0

besteci küresel symfony/var damper gerektiren

göreceksiniz: Değiştirilen geçerli dizin (GLOBAL_COMPOSER_DIRECTORY) Php.ini olarak

:

/vendor/autoload.php auto_prepend_file = (GLOBAL_COMPOSER_DIRECTORY)

Daha sonra tüm projelerinizde dökümü kullanmadan yükleme kullanabilirsiniz

+0

şu ana kadar çalışmadı. Symfony projemde bunları bir kullanım ifadesine eklemem gerekir mi? –

+0

Modifiye php.ini'nin php yığınınız tarafından kullanıldığından emin olmanız gerekir. Komut satırında: php --ini Apache'de: guillaumesmo

18

emin olun DebugBundle paket

// app/AppKernel.php 
use Symfony\Component\HttpKernel\Kernel; 
use Symfony\Component\Config\Loader\LoaderInterface; 

class AppKernel extends Kernel 
{ 
    public function registerBundles() 
    { 
     $bundles = array(
     // ... 
     ); 

     if (in_array($this->getEnvironment(), array('dev', 'test'))) { 
      $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle(); 
      // ... 
     } 
    } 

    // ... 
} 
+2

Teşekkürler, 2.3'ten yükseltme yaparken Bundle'ı kaçırıyordum. – Alsciende

+4

Aslında bu cevap doğru olanıdır. Seçilen cevap çalışmasını sağlamanıza olanak tanır, ancak bu, dump() işlevini doğrudan –

+1

doğru yanıtlamayı kullanır. Doğru yanıt –