image
Inicio » PHP » Artículos sobre PHP » PHP orientado a objetos. Parte II




PHP orientado a objetos. Parte II

 
Por Carlos Gallús
Artículos publicados: 3
Valoración media: 3.75/5
Usuario desde: 01/08/2002

Qué es el constructor de una clase

Las clases soportan un tipo de función especial que se conoce como constructor. El constructor es llamado cuando se crea el objeto. Normalmente utiliza para inicializar tareas como: asignación de valores a determinados atributos, crear nuevos objetos necesarios para el correcto funcionamiento de el objeto, etc.

El constructor se declara de la misma forma que los métodos, lo único que debemos tener en cuenta es que debe tener el mismo nombre que la clase. A pesar de que nosotros podemos llamar a el constructor, su principal propósito es ser llamado automáticamente cuando un objeto es creado. A continuación veremos como se declara el constructor de una clase:

class NombreClase {

   function NombreClase($param) {
      echo "Constructor llamado con el parámetro $param";
   }
}


Cómo usar objetos, instanciar una clase

Después de haber declarado una clase, ya podemos usarla creando un objeto que es una instancia a esa clase como ya se ha mencionado anteriormente. Es muy importante que esto quede claro, los objetos son instancias a una clase, por lo tanto cada objeto es único.

En php creamos un objeto usando la palabra reservada new. También debemos indicar a que clase va a instanciar el objeto que creemos y pasarle los parámetros (si los requiere) al constructor, en el siguiente código vamos a ver un ejemplo de esto, para ello tomamos como referencia la clase anterior NombreClase:

$a = new NombreClase("Primero");
$b = new NombreClase("Segundo");
$c = new NombreClase();

Como resultado de este código vemos que el constructor es llamado cada vez que se crea el objeto, y vemos que los objetos son únicos aunque sean instancias de la misma clase, el resultado es el siguiente:

Constructor llamado con el parámetro Primero
Constructor llamado con el parámetro Segundo
Constructor llamado con el parámetro


Cómo usar los atributos de una clase

Una clase, tiene un puntero especial al que podemos referenciar como $this. Si nuestra clase tiene un atributo llamado $atributo, podemos hacer referencia a este desde nuestra clase (métodos) de la siguiente forma $this->atributo, a continuación podemos ver el código de ejemplo del acceso a un atributo de clase desde un método de la propia clase.

class NombreClase {
   var $atributo;
   function metodo($param) {
      $this->atributo = $param;
      echo $this->atributo;      
   }
}

Algunos lenguajes permiten limitar el acceso desde fuera a los atributos de una clase declarándolos como privados o protegidos ("private", "protected"). PHP no soporta esta característica y todos atributos y métodos pueden ser vistos desde fuera de la clase, lo que quiere decir que siempre son públicos.

Podemos realizar la misma acción que anteriormente desde fuera de la clase, usando esta sintaxis.

NombreClase {
   var $atributo;
}

$a = new NombreClase();
$a->atributo = "valor";
echo $a->atributo;

Las sentencias anteriores están permitidas en PHP, pero no es una práctica recomendable acceder directamente a los atributos de una clase desde fuera de ésta. Como se ha comentado anteriormente una de las ventajas de la POO es que permite realizar encapsulación por esta razón aunque PHP no permita ocultar los atributos o métodos de una clase, nosotros deberíamos no acceder directamente a ellos, para diferenciarlos de los públicos es conveniente también poner "m_" (de miembro lo cual significa que solo serán usados dentro de la clase) delante de los nombres de métodos y atributos a los cuales no se quiera acceder directamente desde fuera de la clase.

Para los atributos que queramos acceder directamente desde fuera de la clase, deberíamos escribir funciones de acceso, tanto para establecer como para coger valores. Deberíamos tener un código como el siguiente:

class NombreClase {
   var $atributo;
   
   function get_atributo() { //devuelve el valor de atributo
      return $this->atributo;
   }   
   function set_atributo($valor_nuevo) { //establece el valor de atributo
      $this->atributo = $valor_nuevo;
   }
}

La finalidad de hacer esto, es clarificar el código y tener una sección de código encargada de acceder a los atributos para mantener la encapsulación, y que no sean accedidos directamente. Además si seguimos estas prácticas aumentará la calidad de nuestro software ya que podremos introducir comprobaciones de datos, como rangos, valores permitidos, etc. Veamos un ejemplo de validación de datos a la hora de asignar un valor a atributo mediante el método set_atributo:

function set_atributo($valor_nuevo) {
   if ($valor_nuevo > 100) {
      $this->atributo = $valor_nuevo;
   }
}

En el código superior vemos que cuando queremos asignar a atributo valores inferiores a 100 no nos deja, y atributo seguirá manteniendo su valor.

Cómo usar los métodos de una clase

Los métodos de una clase se pueden llamar de la misma forma que se llaman a los atributos, supongamos que tenemos la siguiente clase:

class nombreClase {
   function metodoa() {
      return "Has llamado al método A";
   }
   function metodob($parametro1) {
      return "Método B llamado con parámetro: ".$paramtro1;
   }
}

Creamos un objeto de la case nombreClase con el nombre $obj de la siguiente forma:

$obj = new nombreClase();

Los métodos de un objeto, son llamados de la misma forma que se llaman a funciones normales, pasándoles como es el caso de metodob el parámetro que necesiten. Como los métodos son funciones que pertenecen a un objeto, deberemos indicar en la llamada el objeto que los incluye, la forma de llamar a un método es idéntica a como llamamos a los atributos de un objeto.

$obj->metodoa();
$obj->metodob("parámetro que pasamos");

Si nuestras operaciones, devuelven algún valor, lo capturamos asignándoselo a una variable, podemos ver el siguiente ejemplo

$txt_retorno = $obj->metodob("Hola");

$txt_retorno contendrá la cadena de texto:
"Metodo B llamado con parámetro: Hola"

Otros artículos recientes de este autor:
Fecha publicación: 01/12/2002


Más artículos

Valoración

Este artículo ha sido valorado 650 veces. Valor:  [3.83/5]   
Malo------>Normal----->Bueno
                   

Comentarios

elricho (tauro2001@hotmail.com)20/12/2002

Execelente super claro !

Añadir un comentario

Si no está de acuerdo con algo o quiere añadir más información al respecto puede incluirla añadiendo un comentario.

Nombre:
E-Mail: (opcional)
Los comentarios son moderados, no aparecen inmediatamente, son leídos por el administrador y publicados según el interés para otros lectores.

Se reserva el derecho de publicación de los comentarios introducidos.

Colabora

¿Te sientes capacitado para escribir un artículo como este? ¿Te gustaría colaborar escribiendo artículos en WebEstilo? Háznoslo saber !!









Comparte



 
Valid HTML 4.01!
Última modificación:31 de Agosto de 2017. Spain - Espa�a.
© 1998-2004 por . Todos los derechos reservados.