Propriedades
Nunca é interessante deixar que nossos atributos e métodos fiquem 100% disponíveis e livres para qualquer um usar, acessar ou até mesmo alterar, isso pode ser uma falha e deixar brecha para hackers invadirem seus sistemas.Então, para acessar e alterar alguns tipos de informações, usaremos alguns métodos especiais, chamados accessors ou mutators, cujo único objetivo é alterar ou acessar determinadas informações, mas sob o 'olhar' vigilante e sanguinário do vigia, digo, do objeto, para saber o que está acontecendo de fato ali.
As funções Get e Set
Set significa...setar, configurar, colocar...quando setamos uma variável, estamos impondo um valor nela.O método setName($name) por exemplo, vai colocar o valor $name na variável $name do objeto.
Para não confundir as coisas, a variável do objeto é definida pro:
$this->name
E a variável que vem de fora por: $name
Então, um método setName() que seta um nome para a variável do objeto é:
public function setName($name) {
$this->name = $name;
}
Get significa pegar, acessar...usamos ela para ter controle, pegar alguma informação de uma variável de um objeto, por exemplo, a getName(), retorna o valor da variável $name de um objeto:
public function getName() {
return $this->name;
}
Note que mais uma vez usamos o $this que serve para se referir ao próprio objeto.
Classe Empregado
Então uma classe Empregado, onde pedimos o nome do usuário, setamos o nome dele e depois exibimos, ficaria:<html> <head> <title>Apostila PHP Progressivo</title> </head> <body> <form action=ae method="get"> Digite o nome do funcionario<input type="text" name="name" /><br /> <input type="submit" name="submit" value="Testar" /> </form> <?php $nome = $_GET['name']; class Empregado { private $name; // Get public function getName() { return $this->name; } // Set public function setName($name) { $this->name = $name; } } $func = new Empregado(); $func->setName($nome); echo "Funcionário: ".$func->getName(); ?> </body> </html>
Uso real de SET e GET
O uso mostrado de set e get, são apenas para enfatizar que você não deve deixar que acessem diretamente os dados de atributos.O saldo bancário, por exemplo, é um atributo.
O método get para acessar esse atributo, só deve ocorrer depois do usuário fornecer a senha ou digital dele, provando ser ele o titular da conta, só então ele vai poder acessar o atributo, entende?
O mesmo jeito o método set.
Vamos supor que ele tenha mil na conta e queira setar um saque de 1200.
Não dá amigo.
Você precisa fazer uma verificação antes de permitir qualquer set. Pra depositar, ok, pode depositar o que for, agora pra sacar, tem regras, não é só sair sacando, a vida real não é assim? Pois é exatamente assim nos sistemas reais bancários, ok?
Relembre: use métodos para deixarem que acessem suas variáveis,seus sagrados atributos.