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

Instanciar atributos em forma de Objetos

Em outra aula de PHP eu reparei que teve um atributo que foi instanciado em forma de outro Objeto. Por exemplo, ao invés de instanciar o $produto->categoria_id, ele era instanciado como $produto->categoria = new Categoria(); Para pegar o seu valor da seguinte maneira: $produto->categoria->id, ou $produto->categoria->nome; Na verdade estava sendo usado private nos atributos, portanto era $produto->getCategoria()->getId(); mas enfim, o caso é que nesse segundo método(vamos chamar assim), para instanciar um Produto, precisa-se usar o INNER JOIN de qualquer forma, e sempre ao instanciar o Produto, devemos instanciar junto um objeto Categoria para montar o objeto com todos os seus atributos. Dessa forma dando um pouco mais de trabalho ao codar. A pergunta é: Qual dessas duas formas é a mais utilizada, onde podemos dizer que está mais organizado o código?

3 respostas

Olá, Anderson.

Como diz o texto do exercício, pra esse caso, o INNER JOIN parece ser a melhor escolha mesmo...

Embora para essa situação usar Lazy Loading não seja a melhor escolha, pois vai gerar um excesso grande de processamento, além de deixar nosso código um pouco desorganizado, vamos alterar nosso código de listagem, para ver essa técnica funcionando.

Minha pergunta deve ter sido um pouco confusa mesmo, mas eu me refiro a qual forma é mais utilizada nesses cenários de projetos em formato de controle de estoque. Criar uma classe com atributo e metodo da seguinte maneira?

private $value
function setValue(Objeto $objeto){
$this->value = $objeto;

Ou se dessa maneira (como a utilizada nesse curso)?

private $value;
function setValue($string){
$this->value->$string;
}

Sei que não tem muito a ver com o exercício, mas é uma curiosidade.

solução!

Entendo, Anderson!

Acho que a primeira maneira é a melhor.

Quanto menos uma classe depender de menos detalhes de outra classe, melhor.

Tem a ver com encapsulamento!