Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

comparando objetos com ===

Olá, estou com uma dúvida no exercício 4, a resposta do instrutor diz que nesse caso o resultado será "sao iguais" usando o operador de identidade, porém só será igual se as instâncias referenciam o mesmo objeto, ou seja nesse caso o código deveria estar assim:

<?php

    require "class/Produto.php";

    $produto = new Produto();
    $produto->setPreco(59.9);
    $produto->setNome("Livro da Casa do Codigo");

    $outroProduto = $produto;
    $outroProduto->setPreco(100.6);
    $outroProduto->setNome("Livro da Casa do Codigo");

   $produto = $outroProduto;

    if ($produto === $outroProduto) {
        echo "sao iguais";
    } else {
        echo "sao diferentes";
    }

?>

no exercício está assim:

<?php

    require "class/Produto.php";

    $produto = new Produto();
    $produto->setPreco(59.9);
    $produto->setNome("Livro da Casa do Codigo");

    $outroProduto = $produto;
    $outroProduto->setPreco(100.6);
    $outroProduto->setNome("Livro da Casa do Codigo");

    if ($produto === $outroProduto) {
        echo "sao iguais";
    } else {
        echo "sao diferentes";
    }

?>

Ou seja a resposta nesse caso será "sao diferentes", as instancias não estão referenciando o mesmo objeto. Está correto?

2 respostas
solução!

Quando se faz a atribuição: $outroProduto = $produto;

As variáveis estão ligadas ao mesmo objeto, ou seja, qualquer alteração em "$outroProduto" ou "$produto" modifica o mesmo objeto, ao alterar um, você automaticamente altera a outra.

Caso queria tirar a prova real, basta colocar um trecho de código: var_dump($produto); e var_dump($outroProduto);

Você verá que os dois objetos são iguais, ou seja, não importa em qual variável você faz as alterações, como as duas apontam para o mesmo objeto, as duas sofrem as alterações.

Entendi Lucas, obrigada

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software