Curso POO PHP Definición de clases

De Manuais Informática - IES San Clemente.
Ir a la navegación Ir a la búsqueda

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)