2013-04-26 88 views
0

我有这样的代码:PHP:变量没有定义

$fm = $app['assetic.filter_manager']; 
$app['assetic.filter_manager'] = $app->share(
    $app->extend('assetic.filter_manager', function($fm, $app) { 
     $fm->set('yui_css', new Assetic\Filter\Yui\CssCompressorFilter(
      '/usr/share/yui-compressor/yui-compressor.jar' 
     )); 
     $fm->set('yui_js', new Assetic\Filter\Yui\JsCompressorFilter(
      '/usr/share/yui-compressor/yui-compressor.jar' 
     )); 

     return $fm; 
    }) 
); 

$app['assetic.asset_manager'] = $app->share(
    $app->extend('assetic.asset_manager', function($am, $app) { 
     $am->set('styles', new Assetic\Asset\AssetCache(
      new Assetic\Asset\GlobAsset(
       __DIR__ . '/assetic/resources/css/*.css', 
//this below is the line 50. 
       array($fm->get('yui_css')) 
      ), 
      new Assetic\Cache\FilesystemCache(__DIR__ . '/assetic/cache') 
     )); 
     $am->get('styles')->setTargetPath('css/styles'); 

     return $am; 
    }) 
); 

我得到这个错误:

PHP Notice: Undefined variable: fm in index.php on line 50 

如果我已经定义的变量$ FM,为什么我收到此错误?

回答

3

试试这个:

$app->extend('assetic.asset_manager', function($am, $app) use ($fm) { 
+0

谢谢,这有效,但我必须输入'use($ fm)'' – ziiweb 2013-04-27 11:26:00

3

如果订单的正确,你声明,并将其设置为不确定的值($app['assetic.filter_manager']没有设置直到下一行)。

设置$ fm 赋值。

$app['assetic.filter_manager'] = $app->share(
    $app->extend('assetic.filter_manager', function($fm, $app) { 
     $fm->set('yui_css', new Assetic\Filter\Yui\CssCompressorFilter(
      '/usr/share/yui-compressor/yui-compressor.jar' 
     )); 
     $fm->set('yui_js', new Assetic\Filter\Yui\JsCompressorFilter(
      '/usr/share/yui-compressor/yui-compressor.jar' 
     )); 

     return $fm; 
    }) 
); 

$fm = $app['assetic.filter_manager'];