Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

DUVIDA PHP ' . '

Eu fui fazer o curso de Laravel e para mostrar minha lista de produtos,ele utilizou o ponto no código,mas em outro lugar,vocês poderiam me explicar a lógica de eu utilizar o ponto antes do'='? Eu sei que é para concatenar...mas como assim? não consigo entender...e porque ele utilizou o ' . ' apenas a partir do segundo "$html"?

class ProdutoController extends Controller {

    public function lista(){

        $html = '<h1>Listagem de produtos com Laravel</h1>';

        $html .= '<ul>';

        $produtos = DB::select('select * from produtos');

        foreach ($produtos as $p) {
            $html .= '<li> Nome: '. $p->nome .', Descrição: '. $p->descricao .'</li>';
        }

        $html .= '</ul>';

        return $html;
    }
}
1 resposta
solução

Victor,

.= traz o conteudo da variavel e depois o que você quer adicionar a variável. Exemplo:

$html = "Primeiro conteudo";

Se eu usasse apenas =, eu alteraria o conteudo da variável $html:

$html = "<br> Segundo conteudo";
echo $html; // irá mostrar apenas 'Segundo conteúdo';

A forma tradicionao de contatenar esses conteúdos é usando o .:

$html = $html . "<br> Segundo conteúdo";
echo $html; //irá mostrar Primeiro conteúdo
//Segundo conteúdo

Para eu poupar o trabalho de repetir a variável, usó o .=:

$html .= "<br>Segundo conteúdo";
echo $html; //irá mostrar Primeiro conteúdo
//Segundo conteúdo

Apos a primeira concatenação, no .=, eu posso sair utilizando . para concatenar demais conteúdos, na mesma linha ou utilizando .=:

$html .= "<br>Segundo conteúdo" . "<br> Terceiro conteúdo";
echo $html;//irá mostrar Primeiro conteúdo
//Segundo conteúdo
//Terceiro conteúdo

Eu também posso utilizar em operações matemáticas:

$numero = 2;
$numero = $numero + 2;
echo $numero; //irá mostrar 4
$numero +=2;
echo $numero; //irá mostrar 6

Espero ter ajudado, abraços!