Boa tarde, eu fiquei na duvida de quando devo usar métodos construtores e quando devo usar get e set
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Boa tarde, eu fiquei na duvida de quando devo usar métodos construtores e quando devo usar get e set
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.
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!