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

Parametros de Classe

Olá estudando determinadas classes me deparei com os seguintes parametros, segue:

class Compra
{
  public $id,$produtos,$usuario;

  function cadastrar($array,$produtos, Usuario $usuario){
     $this->id = rand(0,1000); 
     $this->produtos = $produtos;
      $this->usuario = $usuario;
 }

O que eu não entendi:

1° O parâmetro da função tem Usuario antes da variável $usuario.

O que exatamente está ocorrendo nessa passagem de parâmetro?

3 respostas

Significa que a variável $usuario é um objeto da classe Usuario

Se você tivesse por exemplo uma classe chamada Carro, e quisesse que em um dos parâmetros fosse passado obrigatoriamente um objeto dessa classe, você poderia colocar Carro $parametroQualquer

E qual a ultilidade de passar um objeto de outra classe nos parâmetros de uma função de uma segunda Classe?

solução!

Olá Anderson,

Passar objetos para outras classes é apenas uma possibilidade que a linguagem dá, e é uma parte importante da Orientação a Objetos, um objeto é um variável e sendo assim você pode passar essa variável para uma função ou para uma classe como qualquer outra variável.

Na estilo Orientado a Objetos é muito comum você trabalhar com vários objetos dentro e fora de várias classes diferentes, criar relações entre classes e ter o atributo de uma classe sendo o objeto de outra classe, como no seu exemplo acima.

Sobre a utilização do Usuario antes da variável na função cadastrar, isso é uma forma de garantir o tipo de uma variável. Servindo para reforçar uma regra no seu código, e também deixar o código mais claro, apenas olhando você percebe logo que deve passar um objeto da classe Usuario e não um número ou texto quando utilizar a função cadastrar.

Isso ajuda principalmente a evitar bugs no seu código, além de facilitar para você deixando visível que a função cadastrar precisa desse tipo exato de variável para funcionar corretamente, a maioria dos editores de código já avisam caso você passe um tipo diferente, e caso o PHP não consiga transformar o valor para o tipo definido vai acontecer um erro na execução.

Exemplo:

<?php

class Carro {}
class Moto {}

function cadastra(Carro $carro) {
    echo 'Cadastrando o carro';
}

// Retorna um erro
cadastra(1);

// Retorna um erro
$moto = new Moto();
cadastra($moto);

Resultado do código exemplo:

PHP Fatal error: Uncaught TypeError: Argument 1 passed to cadastra() must be an instance of Carro, integer given

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