terça-feira, 6 de maio de 2014

Corrigindo conflito do yield do Laravel 3.2 com PHP 5.5

Olá galera,

O PHP 5.5 trouxe algumas novidades das quais podemos destacar o suporte ao generators. Com isso, o yield passou a se tornar uma palavra reservada e gerou um conflito com o Laravel 3.2.

Quem quiser saber mais informações sobre o yield, pode clicar aqui.

Voltando a correção do conflito, encontrei-a no próprio GitHub do Laravel. Apesar de estar claro quais alterações devem ser feitas, vou replicá-las aqui no blog por segurança.

O trabalho consiste em adicionar "_" (underline ou underscore) antes do yield.

OBS: Conforme já citei em outros posts, recomendo que qualquer alteração seja devidamente comentada e documentada para evitar problemas futuros.

Arquivo: laravel/blade.php linha 364.

* The Blade @yield statement is a shortcut to the Section::_yield method.

Arquivo: laravel/blade.php linha 373.

return preg_replace($pattern, '$1<?php echo \\Laravel\\Section::_yield$2; ?>', $value);

Arquivo: laravel/documentation/views/templating.md linha 47.

<?php echo Section::_yield('scripts'); ?>

Arquivo: laravel/helpers.php linha 563.

function _yield($section)

Arquivo: laravel/helpers.php linha 565.

return Section::_yield($section);

Arquivo: laravel/section.php linha 72.

return static::_yield(static::stop());

Arquivo: laravel/section.php linha 131.

public static function _yield($section)

Arquivo: laravel/tests/cases/blade.test.php linha 81.

$this->assertEquals("<?php echo \\Laravel\\Section::_yield('something'); ?>", Blade::compile_string($blade));

Espero ter ajudado as pessoas que encontraram o mesmo problema.

Um abraço e até próxima.

Nenhum comentário:

Postar um comentário