Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Referência de Objetos

Resolvi aprender PHP, pois vou participar de um Projeto na Faculdade e vamos usar PHP.

Fiquei meio perdido quando o professor criou a variável de referência ($categoria) dentro da classe Produto

class Produto {
    ...
    public $categoria;
}

class Categoria {
    public $id;
    public $nome;
}

Pensei que ele iria fazer algo parecido com isto:

class Produto {
    ...
    public Categoria $categoria;
}

Quando ele usa este comando $produto->categoria->id, ele diz que está chamando o Objeto Categoria que está dentro da classe Produto.

O PHP entende que a variável $categoria dentro da Class Produto é uma referência subentendida da classe Categoria?

1 resposta
solução!

Olha Mathews, eu não digo que é uma referência. Quando o professor não fez

class Produto {
    ...
    public Categoria $categoria;
}

É porque o PHP não permite essa tipagem logo nos atributos. Para garantir que a classe produto só receba uma instancia de Categoria fazemos essa tipagem no construtor ou em algum método para setar esse valor. Por exemplo

public function __construct(... , .... , Categoria $categoria) {
    ...
    $this->categoria = $categoria;
}

Ai sim, essa tipagem é aceita. Tipagem na hora de declarar variáveis não rola, só em funções/métodos. Então a classe Produto guarda um objeto Categoria e não uma referencia a ela.

Não sei se ficou muito claro ou se estou 100% certo, é como eu enxergo. Vamos ver o que os outros tem a falar sobre isso. :)