Curso POO PHP Definición de clases
Definición de clases
A declaración dunha clase en PHP faise utilizando a palabra class. A continuación e entre chaves, deben figurar os membros da clase. Unha clase pode ter tres tipos de membros:
- Constantes. Decláranse empregando a palabra const. Non usan o carácter "$" e o seu valor vai sempre entre comiñas e está asociado á clase, é dicir, non existe unha copia deste en cada obxecto. É habitual empregar nomes en letras maiúsculas para os identificadores das constantes.
- Variables. As variables dunha clase reciben o nome de propiedades ou atributos. Os valores dos atributos de cada obxecto son independentes uns dos outros. Na declaración da clase é posible indicar un valor para cada atributo. Neste caso, todos os obxectos que se instancien a partir desa clase, partirán con ese valor por defecto no atributo.
- Funcións. As funcións dunha clase reciben o nome de métodos.
Pódese indicar o nivel de acceso ou visibilidade para cada propiedade e método definido nunha clase (as constantes que conteñan serán sempre públicas). Os principais niveis (protected vese coa herdanza) son:
- public. Os membros declarados como public poden utilizarse directamente polos obxectos da clase.
- private. Os membros declarados como private só poden ser accedidos polos métodos definidos na clase, non directamente polos obxectos desta.
Cando se declara unha clase, convén facelo de forma ordenada: primeiro as constantes, a continuación as propiedades, e despois os métodos, cada un co seu código respectivo.
class Produto {
const EURO = "166.386";
private $codigo;
public $nome;
public $PVP;
public function mostra_codigo() {
print "<p>" . $this->codigo . "</p>";
}
}
Un dos motivos para crear atributos privados é que o seu valor forma parte da información interna do obxecto. Outro motivo é manter certo control sobre os seus posibles valores. Por exemplo, non queres que se poida cambiar libremente o valor do código dun produto. Ou necesitas coñecer cal será o novo valor antes de asignalo. Nestes casos, adóitanse definir eses atributos como privados e crear dentro da clase métodos para permitirnos obter e/ou modificar os valores deses atributos. Por exemplo:
class Produto {
private $codigo;
public function setCodigo($novo_codigo) {
if (noExisteCodigo($novo_codigo)) {
$this->codigo = $novo_codigo;
return true;
}
return false;
}
public function getCodigo() { return $this->codigo; }
}
Aínda que non é obrigatorio, o nome do método que nos permite obter o valor dun atributo adoita empezar por get, e o que nos permite modificalo por set.
É preferible que cada clase figure no seu propio ficheiro. Ademais, aínda que os nomes das clases non son sensibles a maiúsculas e minúsculas, moitos programadores prefiren utilizar para as clases nomes que comecen por letra maiúscula, para, desta forma, distinguilos dos obxectos e outras variables.
Entre as constantes predefinidas en PHP atópanse __CLASS__ e __METHOD__ que devolven respectivamente o nome da clase e do método que se está a executar.
--Víctor Lourido 19:44 27 jun 2013 (CEST)