Boa tarde, eu fiquei na duvida de quando devo usar métodos construtores e quando devo usar get e set
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!