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

Get, Set e Construtores

Boa tarde, eu fiquei na duvida de quando devo usar métodos construtores e quando devo usar get e set

3 respostas
solução!

Construtor

Vamos criar uma situação hipotética onde uma conta não pode ser criada sem um titular e sem CPF.

Um construtor pode ter várias utilidades. Vou citar uma por exemplo. Suponhamos que você tenha a classe Conta.

class Conta {

    private $numero;
    private $agencia;
    private $titular;
    private $cpf;

Quando você instanciar esse objeto como

$conta = new Conta();

os valores dos atributos dessa classe serão inicializados com valores padrão. Acontece que dessa forma, a criação desse objeto não condiz com a sua regra (de criar uma conta sem informar o titular e o cpf). Você poderia pensar: "Ahh mas eu posso setar depois" e aí vem o problema... e se não for você que vai criar esse objeto e a pessoa que estiver trabalhando com essa classe não souber dessa regra de negócio? A aplicação acaba se tornando inconsistente. Dessa forma... se você cria um construtor

    function __construct($titular, $cpf) {
        $this->titular = $titular;
        $this->cpf= $cpf;
    }

, no momento que você cria o objeto Conta, você obriga a pessoa que for trabalhar com esse objeto a informar o titular e o cpf. O construtor faz exatamente o que o nome sugere, que é CONSTRUIR a classe conforme o que você definir dentro dele.

Get e Set

Os métodos Get e Set são formas de encapsular (esconder a implementação) nossas lógicas de manipulação dos atributos da classe ou de regras de negócio. Se você não trabalha dessa forma, se for um sistema grande por exemplo, é inviável e não produtivo você ficar procurando onde você setou ou leu a informação, sem contar que alguém pode alterar essas informações em um ponto do código

Esse métodos também ajudam a organização do código, de forma que define a lógica dentro dele e depois pode reutiliza-la em qualquer lugar na aplicação.

Olá Vítor. Os construtores são os responsáveis por criar o objeto, instanciando assim a classe que foi definida. Só que quando você instancia uma classe, os seus atributos não terão valores preenchidos. Nesse caso, você pode "obrigar" que os atributos sejam preenchidos, declarando-os no construtor. Então no momento que o objeto dessa classe for instanciado, os valores que foram declarados no seu construtor deverão ser passados para o mesmo.

Já o Get e Set são métodos de acesso a atributos privados. O Get para leitura e Set para atribuição/modificação de valores. Se você não quiser que o seu atributo privado seja modificado, basta não declarar o seu Set, então nesse caso ele só seria preenchido através do construtor e nunca mais seria modificado.

Oi Vítor, como a sua dúvida foi solucionada, eu vou fechar este tópico. Para qualquer outra dúvida ou problema, não hesite em recorrer ao nosso fórum!