SlideShare una empresa de Scribd logo
Clases y objetos


Clases y objetos
                                      El ejemplo más simple

Aunque PHP no es un lenguaje            En este ejemplo podemos ver como utilizar una clase para definir una plantilla que va a
orientado a objetos, sí tiene         multiplicar siete por ocho y que nos va a devolver el resultado de esa operación cada vez que
recursos que permiten definir         sea invocada.
clases y construir objetos.

El uso de clases y objetos no          <?
añade ninguna funcionalidad            class Multiplica{
nueva a las posibilidades de PHP.            var $factor1=7;
Su verdadera utilidad es la de               var $factor2=8;
hacer la programación de otra                function curratelo(){
manera, con un código más legible                 echo $this->factor1*$this->factor2;
y reutilizable.                                 }
                                       }
Las clases                                  $objeto= new Multiplica;
                                            $objeto->curratelo();
Una clase no es otra cosa que una        ?>
especie de plantilla en la que se
pueden definir una serie de
variables –que pueden contener                                           Ver ejemplo70.php
valores predefinidos– y un
conjunto de funciones que
pueden ser invocadas desde            Invocando varias veces el mismo objeto
cualquier parte del documento.

La sintaxis es la siguiente:
                                      En este ejemplo puedes observar cómo al invocar dos veces a $objeto el valor que nos devuelve
                                      es el resultado de la última llamada y también como se pueden crear dos objetos distintos.
class nombre {
....
... definición de variables....        <?
....                                   class Multiplica{
.. constructores (opcional)...               var $resultado;
....                                         function curratelo($a,$b){
.. definición de funciones...                  $this->resultado=$a*$b;
....                                            }
}                                            function imprimelo(){
Vayamos por partes.
                                                  echo $this->resultado,"<br>";
                                                }
Dentro de una clase podemos            }
definir las variables que serán             $objeto= new Multiplica;
utilizadas por sus funciones                $objeto->curratelo(7,3);
internas y a las que es posible (no         $objeto->curratelo(11,4);
es imprescindible hacerlo) asignar          $objeto1= new Multiplica;
valores.                                    $objeto1->curratelo(-23,11);
Para definir una variable es                $objeto->imprimelo();
obligatorio anteponer var a su              $objeto1->imprimelo();
nombre y en el caso de que               ?>
tratemos de asignarle un valor,
bastará con poner detrás del
nombre el signo = seguido del                                            Ver ejemplo71.php
valor.

Ni que decir tiene que el nombre      Recogiendo resultados en un array
de la variable utiliza la sintaxis
habitual de PHP y que si los
valores asignados son tipo cadena     En este ejemplo vemos cómo se puede invocar reiteradamente una función utilizando el mismo
tienen que ir entre comillas.         objeto y como pueden recogerse esos resultados en un array.

var $pepe="Jose"
                                       <?
es una sintaxis válida, pero           class Multiplica{
                                           var $resultado;
$pepe="Jose"                               var $indice=0;
no lo es, le falta el var y si lo
                                           function curratelo($a,$b){
escribimos así nos dará un error.
                                              $this->resultado[$this->indice]=$a*$b;
Más adelante hablaremos de los                $this->indice++;
constructores, pero dado su                    }
carácter opcional veamos antes las
funciones.                                 function imprimelo(){
                                               foreach($this->resultado as $valor){
Las funciones definidas dentro de                   echo $valor,"<br>";
las clases tienen una sintaxis
                                                }
idéntica al resto de las funciones
PHP con una salvedad importante:
                                           }

Siempre que desde una función –        }
contenida en una clase– se trate
de invocar una variable definida           $objeto= new Multiplica;
en la misma clase ha de hacerse
con la siguiente sintaxis:                 $objeto->curratelo(7,3);
                                           $objeto->curratelo(11,4);
$this->variable
                                           $objeto->curratelo(-23,11);
Prestemos mucha atención. El $ va          $objeto->imprimelo();
siempre delante de la palabra           ?>
this y solo se escribe una vez y
en esa posición.
El nombre de la variable (que va                                         Ver ejemplo72.php
siempre después de -> no lleva
pegado el $.
                                      Ejemplos de uso de un constructor
¡Observa los ejemplos!
Crear y utilizar objetos
                                       <?
Las clases son solo plantillas y sus   class Multiplica{
funciones no se ejecutan hasta             var $factor1=7;
que se les ordene.                         var $factor2=8;
                                           function Multiplica(){
Para poder utilizarlas primero                 print $this->factor1*$this->factor2."<br>";
debemos crear un objeto y luego            }
ejecutar sobre ese objeto la           }
función o funciones que deseemos.

Creación de objetos                        $objeto= new Multiplica;

Para crear un objeto en el que se       ?>
vaya a utilizar una clase
determinada debemos usar la
siguiente sintaxis:                                                   Ver ejemplo73.php

$nombre = new clase

donde nombre es una palabra
                                       <?
cualquiera con la que identificar el
objeto (como si se tratara de una      class Multiplica{
variable) y clase es el nombre de
una de las clases definidas.                 var $producto;

¡Cuidado!                                    function Multiplica($a=3,$b=7){
                                                 $this->producto=$a*$b;
Fíjate que detrás del nombre de la
                                                 print $this->producto."<br>";
clase no hemos puesto los ()
que suelen utilizarse para invocar           }
las funciones.                         }
                                           $objeto= new Multiplica;
Utilizando objetos
                                           $objeto->Multiplica(90,47);
Una vez definido un objeto ya se
le pueden aplicar las funciones
                                           $objeto->Multiplica(47);
definidas en la clase. La sintaxis
es la siguiente:
                                           $objeto->Multiplica();
$nombre->funcion()

Donde $nombre es la misma             ?>
variable utilizada a la hora de
crear el objeto, el -> es
obligatorio, funcion es el nombre                                       Ver ejemplo74.php
de una de las funciones
definidas en la clase invocada y
donde los () sí son obligatorios y Un ejemplo más completo
además -como ocurría en las
demás funciones PHP- puede
contener valores, variables,          En este ejemplo puedes ver como el constructor crea automáticamente los valores de la
etcétera separadas por comas.      primera fila de la tabla resultante.

Reiterando
llamadas a objetos
                                       <?
Si hacemos varias llamadas a una       Class Operaciones {
función utilizando el mismo objeto         var $inicializada=32;
los resultados se van                      var $num1;
sobrescribiendo sobre los de la            var $num2;
llamada anterior.                          var $suma;
Si queremos conservar varios
                                           var $diferencia;
resultados obtenidos de la                 var $producto;
aplicación de la misma función             var $cociente;
tenemos dos opciones:                      var $contador=0;
                                             function Operaciones ($val1=45,$val2=55){
    s   Crear varios objetos
                                               $this->contador +=1;
    s   Utilizar arrays                        $c=$this->contador;
                                               $this->num1[$this->contador]=$val1;
                                               $this->num2[$c]=$val2;
En los ejemplos podemos ver
                                               $this->suma[$c]=$val1+$val2;
ambos supuestos.
                                               $this->diferencia[$c]=$val1-$val2;
                                               $this->producto[$c]=$val1*$val2;
Constructores                                  $this->cociente[$c]=$this->inicializada*$val1/$val2;
                                                      }
Cuando se define una función cuyo
nombre es idéntico al de la clase
que la contiene recibe el nombre              function imprime(){
de constructor.                                    print "<table align=center border=1>";
                                                   print "<td>Num 1</td><td>num2</td><td>Suma</td>";
Esa función -el constructor- se
                                                   print "<td>Diferencia</td><td>Producto</td><td>Cociente</td><tr>";
ejecuta de forma automática en el
momento en que se define un                        foreach($this->num1 as $clave=>$valor){
nuevo objeto (new)                                     print "<td align=center>".$valor."</td>";
                                                       print "<td align=center>".$this->num2[$clave]."</td>";
Según como esté definido, el                           print "<td align=center>".$this->suma[$clave]."</td>";
constructor puede ejecutarse de                        print "<td align=center>".$this->diferencia[$clave]."</td>";
distintas formas:                                      print "<td align=center>".$this->producto[$clave]."</td>";
                                                       print "<td align=center>".$this->cociente[$clave]."</td><tr>";
• Con los valores predefinidos en
las variables de la clase.
                                              }
                                                print "</table>";
• Mediante la asignación de
valores preestablecidos en los              }
propios parámetros de la función       }
constructor.                           $objeto= new Operaciones;
En el ejemplo puedes ver la
sintaxis de esta forma en la que se
                                       for ($i=1;$i<11;$i++){
                                           for ($j=1;$j<11;$j++){
le asignan los valores 3 y 7 a las
                                                   $objeto -> Operaciones($i,$j);
variables $a y $b.
                                                      }
En el mismo ejemplo puedes ver           }
también la utilidad añadida del
constructor.                             $objeto-> imprime();

Cuando se le pasan valores la            ?>
función se ejecuta sin tomar en
consideración los asignados por
defecto en la función y cuando se                                          Ver ejemplo75.php
le pasan sólo parte de esos
valores utiliza los valores
recibidos y para los no asignados       Un ejemplo de clase extendida
en la llamada utiliza los valores del
constructor.
                                          En este ejemplo puedes ver como las clases extendidas utilizan variables de la clase padre,
                                        pueden tener constructores propios pero solo ejecutan su propio constructor pero no el
Clases extendidas
                                        de la clase padre.

PHP también tiene la posibilidad de     Para que el constructor de la clase padre sea ejecutado desde la clase extendida tiene que ser
crear clases extendidas cuya            invocado expresamente.
virtud es poder disponer tanto de
variables y funciones propias como
de todas las variables y funciones       <?
de la clase padre.                       class Multiplica{

Sintaxis de las clases                         var $factor1=7;
extendidas                                     var $factor2=8;

                                               function Multiplica(){
Para crear clases extendidas se
                                                   print $this->factor1*$this->factor2."<br>";
requiere utilizar la siguiente
sintaxis:
                                                   print "Esto está en el constructor de la clase padre<br>";
                                               }
class nuev extends base {                }
....
... definición de variables....          class MeSeOlvido extends Multiplica{
....
.. constructores (opcional)...                var $divisor=5;
....                                          function MeSeOlvido(){
.. definición de funciones...
                                                   print $this->factor1*$this->factor2/$this->divisor."<br>";
....
                                              }
}
                                         }
Como habrás podido deducir nuev
es el nombre de la nueva clase (la       $objeto= new MeSeOlvido;
extendida), base es el nombre de
la clase padre y extens es la            $objeto->Multiplica();
palabra clave que indica a PHP que        ?>
se trata de una clase extendida.

PHP no permite las herencias                                               Ver ejemplo76.php
múltiples. No es posible crear una
clase extendida de otra clase
extendida.
                                        Ejemplo de funciones PHP con clases y objetos
Funciones con Clases y
                                        En este ejemplo puedes comprobar que las clases pueden escribirse en ficheros externos y
objetos                                 posteriormente ser incluidas en un script PHP mediante la función include.

Existen algunas funciones que
                                         <?
pueden resultarte útiles a la hora
de trabajar con clases y objetos.        include("ejemplo75.php");
Son las siguientes:
                                         $busca="imprima";
method_exists(obj, func)
                                         if(method_exists ( $objeto, $busca)){
Comprueba si está definida la                echo "Existe la función $busca <br>";
función func (función y método
                                         }else{
son sinónimos) en el objeto obj.
                                             echo "No existe la función $busca <br>";
Devuelve un valor booleano. Cierto       }
(true) en el caso de que exista esa
función y falso en el caso de que        $r=get_class_vars ("Operaciones");
no exista.                               foreach ($r as $pepe=>$pepito){
                                             echo "$pepe -->$pepito<br>";
get_class_vars(clase)
                                         }
Crea un array asociativo cuyos
índices son los nombres de las           $s=get_class_methods("Operaciones");
variables y cuyos valores coinciden      foreach($s as $clave){
con los valores preasignados a               echo $clave,"<br>";
cada una de esas variables.              }
                                         print_r(get_object_vars($objeto));
En este array solo se recogen las        ?>
variables que han sido inicializadas
asignándoles un valor.

get_class_methods(clas)
                                                                           Ver ejemplo77.php
Devuelve un array conteniendo los
valores de todos los métodos            Ejemplo de utilización de ::
(funciones) definidas en la clase
clas.
                                         <?
get_object_var(obj)                      class A {
                                             function ejemplo() {
Devuelve todas las variables (y
sus valores) contenidas en el                    echo "Este es el resultado de la función ejemplo<br>";
objeto obj.                                      }
                                         }
La llamada ::                            # llamo a la funcion sin crear un nuevo objeto
# usando ::
PHP permite llamar a una función       A::ejemplo();
definida en una clase sin
necesidad de crear un objeto.          #ahora creo el objeto $b y llamo a la función
La sintaxis es la siguiente:
                                       $b = new A;
clase :: funcion()                     $b->ejemplo();
                                       ?>
donde clase es el nombre de una
clase y funcion() es una función
definida dentro de esa clase.                                       ejemplo78.php
Su funcionalidad es la misma que
si escribiéramos:
                                      Métodos con el mismo nombre
$nombre = new clase

$nombre -> funcion ()
                                       <?
Métodos con                            # creamos una clase padre
el mismo nombre                        class Padre{
                                          function prueba() {
                                               echo "Esto está en la función prueba de la clase PADRE<br>";
Los objetos de clases extendidas
                                           }
pueden usar tanto las funciones
contenidas en la propia clase
                                       }
extendida como en la clase padre.
Sin embargo se puede plantear          # creamos una clase extendida (Hija) con una funcion de igual nombre
una situación (tendremos               # funcion ejemplo
oportunidad de verla en los temas      class Hija extends Padre{
relativos a los ficheros PDF) en la       function prueba(){
que existan dos funciones con                  echo "Esto está en la función prueba de la clase HIJA<br>";
idéntico nombre, una en la clase           }
extendida y otra en la clase padre.    # creamos un nuevo objeto de la clase hija que invoque
                                       # ambas pruebas, la de la clase hija y la de la clase padre
En esa situación, siempre que se
invoque el método, se ejecutará el         function ambas(){
incluido de la clase para la que se             print "Ejecución de la función ambas<br>";
haya definido el objeto.                        # mediante $this-> requerimos la ejecución de metodo prueba
                                                # de la clase actual
En el ejemplo puedes ver las                    $this->prueba();
diferentes opciones posibles -                  # al señalar parent:: requerimos la ejecución de metodo prueba
objetos creados sobre ambas                     # de la clase padre
clases- y también las, ya
                                                parent::prueba();
comentadas, de ejecución de los
                                           }
métodos sin creación previa de
objetos mediante la sintaxis:          }
                                       # creamos un objeto de la clase padre y por tanto invocará
nombre_clase :: metodo()               # los métodos contenidos en esa clase sin considerar los de la
                                       # clase extendida.
En este caso, si el método se          $objeto1 =new Padre();
invoca desde una función de la         print "<BR>Ejecutamos el método prueba().
clase extendida en vez de escribir
                                                         El $objeto1 utiliza la clase padre<br>";
el nombre asignado a la clase
padre se especifica la referencia a
                                       $objeto1->prueba();
esta mediante la palabra: parent       # creamos un nuevo objeto sobre la clase extendida.
                                       # Podrán invocarse métodos de la clase padre y de la extendida
                                       # pero si coinciden los nombres de esos métodos prevalecerá
Bibliotecas de clases                  # el de la clase extendida.
                                       $objeto2 =new Hija();
Una de las ventajas más                print "<BR>Ejecutamos el método prueba().
importantes de las clases es la                          El $objeto2 utiliza la clase Hija<br>";
posibilidad de reutilización de        $objeto2->prueba();
rutinas -propias o desarrolladas
por otros- en nuestros scripts.
                                       print "<BR>Ejecutamos el método ambas()<br>";
Existen algunos sitios en la red en
                                       # aquí invocamos otro método de la clase extendida
los que pueden obtener una gran
cantidad de materiales de este         $objeto2->ambas();
tipo. Uno de los sitios más            # también podemos invocar el método de la clase que deseemos sin crear el
populares puedes encontrarlo en la     objeto
dirección: phpclasses.org.             Print "<br>Ahora vamos a usar Padre::Prueba()<br>";
                                       Padre::Prueba();
Trataremos con una cierta              Print "<br>Ahora vamos a usar Hija::Prueba()<br>";
profundidad la forma de utilización    Hija::Prueba();
de estas clases de terceros en los     ?>
apartados relativos a la creación
de ficheros en formato PDF.
                                                                    Ejecutar ejemplo

                                                  Anterior                   Indice                  Siguiente

Más contenido relacionado

PDF
42 Php. Bucles Foreach
José M. Padilla
 
PDF
Php funciones en detalle
Dev 010101
 
PDF
82 Php. Ver Y Modificar Estructuras
José M. Padilla
 
PDF
17 Php. Otras Variables
José M. Padilla
 
PDF
SCJP, Clase 2: Ejemplos De Enum, Poo
flekoso
 
PPTX
Guia poo
Sergio Barbar
 
PPTX
Guia poo
Sergio Barbar
 
PPTX
Java script estructuras_datos
jcremiro
 
42 Php. Bucles Foreach
José M. Padilla
 
Php funciones en detalle
Dev 010101
 
82 Php. Ver Y Modificar Estructuras
José M. Padilla
 
17 Php. Otras Variables
José M. Padilla
 
SCJP, Clase 2: Ejemplos De Enum, Poo
flekoso
 
Guia poo
Sergio Barbar
 
Guia poo
Sergio Barbar
 
Java script estructuras_datos
jcremiro
 

La actualidad más candente (20)

PDF
Intro aplicaciones web con php
Fer Nando
 
PDF
Clase 7 objetos globales de javaScript
José Ricardo Tillero Giménez
 
PDF
Clase 5 funciones en javaScript
José Ricardo Tillero Giménez
 
PPT
Introduccio al Java
Marc Soler Camps
 
PDF
Clase 6 objetos de javaScript
José Ricardo Tillero Giménez
 
PDF
Clase2 ejemplosdeenumpoo
jorg_marq
 
DOC
Php
cecusme
 
KEY
Ruby intro
Miguel Fernández
 
PDF
Herencia clase
Jose Antonio
 
PDF
Arreglos php
jbersosa
 
PPTX
php Fundamentos
Alexys González
 
DOCX
Ensayo iv
ariasnicola
 
PDF
76 Php. Insercion De Imagenes Y Elementos Graficos
José M. Padilla
 
PPTX
P2C2 Introducción a JEE5
Aurelio Martín Obando Távara
 
PPT
Clase 2 Poo
Andres Garcia
 
PDF
Drupal7 para desarrolladores
Pedro Cambra
 
PPT
2.android java
guidotic
 
PDF
Java script teoria
ssxdan
 
PDF
C2 fundamentos de java v2
Mariano Galvez
 
DOC
SeúDocodigo
martha leon
 
Intro aplicaciones web con php
Fer Nando
 
Clase 7 objetos globales de javaScript
José Ricardo Tillero Giménez
 
Clase 5 funciones en javaScript
José Ricardo Tillero Giménez
 
Introduccio al Java
Marc Soler Camps
 
Clase 6 objetos de javaScript
José Ricardo Tillero Giménez
 
Clase2 ejemplosdeenumpoo
jorg_marq
 
Php
cecusme
 
Ruby intro
Miguel Fernández
 
Herencia clase
Jose Antonio
 
Arreglos php
jbersosa
 
php Fundamentos
Alexys González
 
Ensayo iv
ariasnicola
 
76 Php. Insercion De Imagenes Y Elementos Graficos
José M. Padilla
 
P2C2 Introducción a JEE5
Aurelio Martín Obando Távara
 
Clase 2 Poo
Andres Garcia
 
Drupal7 para desarrolladores
Pedro Cambra
 
2.android java
guidotic
 
Java script teoria
ssxdan
 
C2 fundamentos de java v2
Mariano Galvez
 
SeúDocodigo
martha leon
 
Publicidad

Similar a 53 Php. Clases Y Objetos (20)

PPTX
TAREA DE ORGANIZADORES GRAFICO DEL PHP
romimaira
 
PPTX
TAREA DE ORGANIZADORES GRAFICO DEL PHP
romimaira
 
PDF
PHP mode on
Teolinda González
 
DOC
Php orientado a_objetos
Jose Ney Quil
 
PPT
Php Basico
Eliecer Cedano
 
PDF
Php notes forprofessionals[001-040].auto.es
davidstiven14
 
PPTX
Programacion Avanzada I
Genesis Gray Aguirre
 
PPTX
Universida tecinca luis vargas torrez de mirand
lanegritabella
 
PPTX
Universida tecinca luis vargas torrez de mirand
lanegritabella
 
PPT
Clases en php
Jaque Valencia
 
PPTX
PHP blog blogger blogspot
LISSYCE
 
PDF
Iniciación PHP 5. Ejemplos
Rightster
 
PPTX
Caracteristicas generales de PHP
Miguel Pinto
 
PPTX
Act 10 - Funciones para alumnos de .pptx
AlexBaldeon2
 
PDF
Programacion_PHP_DCV.pdfhjkklllldkdkdldlld
1008120181
 
DOCX
Diseño de Sistemas
jorgecaruci
 
PPTX
Phpgaby
aynosk6
 
PPTX
Phpgaby
aynosk6
 
PPTX
Php adriana vllacis
Adriana Villacis
 
PPTX
Phpablo
pabobdp
 
TAREA DE ORGANIZADORES GRAFICO DEL PHP
romimaira
 
TAREA DE ORGANIZADORES GRAFICO DEL PHP
romimaira
 
PHP mode on
Teolinda González
 
Php orientado a_objetos
Jose Ney Quil
 
Php Basico
Eliecer Cedano
 
Php notes forprofessionals[001-040].auto.es
davidstiven14
 
Programacion Avanzada I
Genesis Gray Aguirre
 
Universida tecinca luis vargas torrez de mirand
lanegritabella
 
Universida tecinca luis vargas torrez de mirand
lanegritabella
 
Clases en php
Jaque Valencia
 
PHP blog blogger blogspot
LISSYCE
 
Iniciación PHP 5. Ejemplos
Rightster
 
Caracteristicas generales de PHP
Miguel Pinto
 
Act 10 - Funciones para alumnos de .pptx
AlexBaldeon2
 
Programacion_PHP_DCV.pdfhjkklllldkdkdldlld
1008120181
 
Diseño de Sistemas
jorgecaruci
 
Phpgaby
aynosk6
 
Phpgaby
aynosk6
 
Php adriana vllacis
Adriana Villacis
 
Phpablo
pabobdp
 
Publicidad

Más de José M. Padilla (20)

PDF
Informe Riesgos y amenazas en cloud computing. INTECTO-CERT
José M. Padilla
 
PDF
Manual multimedia y web 2.0
José M. Padilla
 
PDF
Guia optimizacion motores_busqueda
José M. Padilla
 
PDF
Modulo 2. Sonido Y Musica Por Ordenador. 08 Partituras. Note Pad 2004
José M. Padilla
 
PDF
Modulo 2. Sonido Y Musica Por Ordenador. 10 Karaoke 2. Melody Assistant
José M. Padilla
 
PDF
Modulo 2. Sonido Y Musica Por Ordenador. 09 Karaoke 1. Van Basco Karaoke Player
José M. Padilla
 
PDF
Modulo 2. Sonido Y Musica Por Ordenador. 07 Conversor. D Bpower Amp
José M. Padilla
 
PDF
Modulo 2. Sonido Y Musica Por Ordenador. 06 Secuenciador. N Track Studio
José M. Padilla
 
PDF
Modulo 2. Sonido Y Musica Por Ordenador. 05 Editor De Audio. Audacity
José M. Padilla
 
PDF
Modulo 2. Sonido Y Musica Por Ordenador. 04 Reproductor. Real One Player
José M. Padilla
 
PDF
Modulo 2. Sonido Y Musica Por Ordenador. 03 Extraccion De Audio. C Dex
José M. Padilla
 
PDF
Modulo 2. Sonido Y Musica Por Ordenador. 02 Sonido En El Sistema Operativo
José M. Padilla
 
PDF
Modulo 1. Sonido Y Musica Por Ordenador. 07 Almacenamiento
José M. Padilla
 
PDF
Modulo 1. Sonido Y Musica Por Ordenador. 06 El Audio
José M. Padilla
 
PDF
Modulo 1. Sonido Y Musica Por Ordenador. 05 El Midi
José M. Padilla
 
PDF
Modulo 1. Sonido Y Musica Por Ordenador. 04 El Estudio De Sonido. Edicion
José M. Padilla
 
PDF
Modulo 1. Sonido Y Musica Por Ordenador. 03 El Sonido Y Su Representacion
José M. Padilla
 
PDF
Modulo 1. Sonido y musica por ordenador. 02 El ordenador en el aula.
José M. Padilla
 
PDF
00 Sonido y musica por ordenador. Guia del alumno.
José M. Padilla
 
PDF
00 Sonido y musica por ordenador. Caso 20
José M. Padilla
 
Informe Riesgos y amenazas en cloud computing. INTECTO-CERT
José M. Padilla
 
Manual multimedia y web 2.0
José M. Padilla
 
Guia optimizacion motores_busqueda
José M. Padilla
 
Modulo 2. Sonido Y Musica Por Ordenador. 08 Partituras. Note Pad 2004
José M. Padilla
 
Modulo 2. Sonido Y Musica Por Ordenador. 10 Karaoke 2. Melody Assistant
José M. Padilla
 
Modulo 2. Sonido Y Musica Por Ordenador. 09 Karaoke 1. Van Basco Karaoke Player
José M. Padilla
 
Modulo 2. Sonido Y Musica Por Ordenador. 07 Conversor. D Bpower Amp
José M. Padilla
 
Modulo 2. Sonido Y Musica Por Ordenador. 06 Secuenciador. N Track Studio
José M. Padilla
 
Modulo 2. Sonido Y Musica Por Ordenador. 05 Editor De Audio. Audacity
José M. Padilla
 
Modulo 2. Sonido Y Musica Por Ordenador. 04 Reproductor. Real One Player
José M. Padilla
 
Modulo 2. Sonido Y Musica Por Ordenador. 03 Extraccion De Audio. C Dex
José M. Padilla
 
Modulo 2. Sonido Y Musica Por Ordenador. 02 Sonido En El Sistema Operativo
José M. Padilla
 
Modulo 1. Sonido Y Musica Por Ordenador. 07 Almacenamiento
José M. Padilla
 
Modulo 1. Sonido Y Musica Por Ordenador. 06 El Audio
José M. Padilla
 
Modulo 1. Sonido Y Musica Por Ordenador. 05 El Midi
José M. Padilla
 
Modulo 1. Sonido Y Musica Por Ordenador. 04 El Estudio De Sonido. Edicion
José M. Padilla
 
Modulo 1. Sonido Y Musica Por Ordenador. 03 El Sonido Y Su Representacion
José M. Padilla
 
Modulo 1. Sonido y musica por ordenador. 02 El ordenador en el aula.
José M. Padilla
 
00 Sonido y musica por ordenador. Guia del alumno.
José M. Padilla
 
00 Sonido y musica por ordenador. Caso 20
José M. Padilla
 

Último (20)

PDF
Tecnología. Programación pseint 10-7 Sol Riaño Támara
edepsolriano
 
PPTX
ExcelTablasDinamicas02nivelintermedio.pptx
fernandoloza823
 
PPTX
Normas de la sala de informática Segundo
SilviaFernandaCesped
 
PDF
Conceptos básicos de programación - Paula Obando
edeppaulaobando
 
PDF
Distribución de Frecuencias Excel Eleazar Muñoz
Eleazar88
 
PDF
El candado imposible de abrir | Seguridad máxima explicada - Revista Técnica ...
Cerrajero 365 Valencia
 
PDF
Las tics en la sociedad como a cambiado nuestro entorno.pdf
gomezpereza332
 
PPTX
INTERNET DE LAS COSAS EN LA ACTUALIDAD.pptx
dennispedagogia
 
PPTX
Customer Events - DeepRacer L200_ES.pptx
jcoronel
 
PDF
DIAGRAMA DE PARETO M. Camila Duque Loaiz
MariacamilaDuqueloai
 
PDF
excel.pdf valentinamueses111 trabajo tecnologia
4zz5vkthyk
 
PDF
operaciones unitarias clase 1 1-2025-1.pdf
RicardoFlores571358
 
PDF
Problema de pareto resuelto iandanielpdf
IanDanielGiraldoRami
 
PPTX
INTRODUCCION A BASE DE DATOS NIVELBASICO 6
Cangrilg
 
PDF
Trabajo Tecnología Diagrama De Pareto.pdf
srsantiagof09
 
PDF
Conceptos Básicos de programación- Paula Obando
edeppaulaobando
 
PDF
Distribución de frecuencias y Diagrama de Pareto en Exce (2).pdf
samuelcuaran
 
DOCX
tecnologia actividad segundo periodo.docx
samuelcuaran
 
PDF
0621 LOS MATERIALES Y SUS USOS .2º CICLO_compressed.pdf
AndreaAlegre18
 
PPTX
Descubre los Dispositivos de Salida y Como usar
AlexanderHermndez
 
Tecnología. Programación pseint 10-7 Sol Riaño Támara
edepsolriano
 
ExcelTablasDinamicas02nivelintermedio.pptx
fernandoloza823
 
Normas de la sala de informática Segundo
SilviaFernandaCesped
 
Conceptos básicos de programación - Paula Obando
edeppaulaobando
 
Distribución de Frecuencias Excel Eleazar Muñoz
Eleazar88
 
El candado imposible de abrir | Seguridad máxima explicada - Revista Técnica ...
Cerrajero 365 Valencia
 
Las tics en la sociedad como a cambiado nuestro entorno.pdf
gomezpereza332
 
INTERNET DE LAS COSAS EN LA ACTUALIDAD.pptx
dennispedagogia
 
Customer Events - DeepRacer L200_ES.pptx
jcoronel
 
DIAGRAMA DE PARETO M. Camila Duque Loaiz
MariacamilaDuqueloai
 
excel.pdf valentinamueses111 trabajo tecnologia
4zz5vkthyk
 
operaciones unitarias clase 1 1-2025-1.pdf
RicardoFlores571358
 
Problema de pareto resuelto iandanielpdf
IanDanielGiraldoRami
 
INTRODUCCION A BASE DE DATOS NIVELBASICO 6
Cangrilg
 
Trabajo Tecnología Diagrama De Pareto.pdf
srsantiagof09
 
Conceptos Básicos de programación- Paula Obando
edeppaulaobando
 
Distribución de frecuencias y Diagrama de Pareto en Exce (2).pdf
samuelcuaran
 
tecnologia actividad segundo periodo.docx
samuelcuaran
 
0621 LOS MATERIALES Y SUS USOS .2º CICLO_compressed.pdf
AndreaAlegre18
 
Descubre los Dispositivos de Salida y Como usar
AlexanderHermndez
 

53 Php. Clases Y Objetos

  • 1. Clases y objetos Clases y objetos El ejemplo más simple Aunque PHP no es un lenguaje En este ejemplo podemos ver como utilizar una clase para definir una plantilla que va a orientado a objetos, sí tiene multiplicar siete por ocho y que nos va a devolver el resultado de esa operación cada vez que recursos que permiten definir sea invocada. clases y construir objetos. El uso de clases y objetos no <? añade ninguna funcionalidad class Multiplica{ nueva a las posibilidades de PHP. var $factor1=7; Su verdadera utilidad es la de var $factor2=8; hacer la programación de otra function curratelo(){ manera, con un código más legible echo $this->factor1*$this->factor2; y reutilizable. } } Las clases $objeto= new Multiplica; $objeto->curratelo(); Una clase no es otra cosa que una ?> especie de plantilla en la que se pueden definir una serie de variables –que pueden contener Ver ejemplo70.php valores predefinidos– y un conjunto de funciones que pueden ser invocadas desde Invocando varias veces el mismo objeto cualquier parte del documento. La sintaxis es la siguiente: En este ejemplo puedes observar cómo al invocar dos veces a $objeto el valor que nos devuelve es el resultado de la última llamada y también como se pueden crear dos objetos distintos. class nombre { .... ... definición de variables.... <? .... class Multiplica{ .. constructores (opcional)... var $resultado; .... function curratelo($a,$b){ .. definición de funciones... $this->resultado=$a*$b; .... } } function imprimelo(){ Vayamos por partes. echo $this->resultado,"<br>"; } Dentro de una clase podemos } definir las variables que serán $objeto= new Multiplica; utilizadas por sus funciones $objeto->curratelo(7,3); internas y a las que es posible (no $objeto->curratelo(11,4); es imprescindible hacerlo) asignar $objeto1= new Multiplica; valores. $objeto1->curratelo(-23,11); Para definir una variable es $objeto->imprimelo(); obligatorio anteponer var a su $objeto1->imprimelo(); nombre y en el caso de que ?> tratemos de asignarle un valor, bastará con poner detrás del nombre el signo = seguido del Ver ejemplo71.php valor. Ni que decir tiene que el nombre Recogiendo resultados en un array de la variable utiliza la sintaxis habitual de PHP y que si los valores asignados son tipo cadena En este ejemplo vemos cómo se puede invocar reiteradamente una función utilizando el mismo tienen que ir entre comillas. objeto y como pueden recogerse esos resultados en un array. var $pepe="Jose" <? es una sintaxis válida, pero class Multiplica{ var $resultado; $pepe="Jose" var $indice=0; no lo es, le falta el var y si lo function curratelo($a,$b){ escribimos así nos dará un error. $this->resultado[$this->indice]=$a*$b; Más adelante hablaremos de los $this->indice++; constructores, pero dado su } carácter opcional veamos antes las funciones. function imprimelo(){ foreach($this->resultado as $valor){ Las funciones definidas dentro de echo $valor,"<br>"; las clases tienen una sintaxis } idéntica al resto de las funciones PHP con una salvedad importante: } Siempre que desde una función – } contenida en una clase– se trate de invocar una variable definida $objeto= new Multiplica; en la misma clase ha de hacerse con la siguiente sintaxis: $objeto->curratelo(7,3); $objeto->curratelo(11,4); $this->variable $objeto->curratelo(-23,11); Prestemos mucha atención. El $ va $objeto->imprimelo(); siempre delante de la palabra ?> this y solo se escribe una vez y en esa posición. El nombre de la variable (que va Ver ejemplo72.php siempre después de -> no lleva pegado el $. Ejemplos de uso de un constructor ¡Observa los ejemplos!
  • 2. Crear y utilizar objetos <? Las clases son solo plantillas y sus class Multiplica{ funciones no se ejecutan hasta var $factor1=7; que se les ordene. var $factor2=8; function Multiplica(){ Para poder utilizarlas primero print $this->factor1*$this->factor2."<br>"; debemos crear un objeto y luego } ejecutar sobre ese objeto la } función o funciones que deseemos. Creación de objetos $objeto= new Multiplica; Para crear un objeto en el que se ?> vaya a utilizar una clase determinada debemos usar la siguiente sintaxis: Ver ejemplo73.php $nombre = new clase donde nombre es una palabra <? cualquiera con la que identificar el objeto (como si se tratara de una class Multiplica{ variable) y clase es el nombre de una de las clases definidas. var $producto; ¡Cuidado! function Multiplica($a=3,$b=7){ $this->producto=$a*$b; Fíjate que detrás del nombre de la print $this->producto."<br>"; clase no hemos puesto los () que suelen utilizarse para invocar } las funciones. } $objeto= new Multiplica; Utilizando objetos $objeto->Multiplica(90,47); Una vez definido un objeto ya se le pueden aplicar las funciones $objeto->Multiplica(47); definidas en la clase. La sintaxis es la siguiente: $objeto->Multiplica(); $nombre->funcion() Donde $nombre es la misma ?> variable utilizada a la hora de crear el objeto, el -> es obligatorio, funcion es el nombre Ver ejemplo74.php de una de las funciones definidas en la clase invocada y donde los () sí son obligatorios y Un ejemplo más completo además -como ocurría en las demás funciones PHP- puede contener valores, variables, En este ejemplo puedes ver como el constructor crea automáticamente los valores de la etcétera separadas por comas. primera fila de la tabla resultante. Reiterando llamadas a objetos <? Si hacemos varias llamadas a una Class Operaciones { función utilizando el mismo objeto var $inicializada=32; los resultados se van var $num1; sobrescribiendo sobre los de la var $num2; llamada anterior. var $suma; Si queremos conservar varios var $diferencia; resultados obtenidos de la var $producto; aplicación de la misma función var $cociente; tenemos dos opciones: var $contador=0; function Operaciones ($val1=45,$val2=55){ s Crear varios objetos $this->contador +=1; s Utilizar arrays $c=$this->contador; $this->num1[$this->contador]=$val1; $this->num2[$c]=$val2; En los ejemplos podemos ver $this->suma[$c]=$val1+$val2; ambos supuestos. $this->diferencia[$c]=$val1-$val2; $this->producto[$c]=$val1*$val2; Constructores $this->cociente[$c]=$this->inicializada*$val1/$val2; } Cuando se define una función cuyo nombre es idéntico al de la clase que la contiene recibe el nombre function imprime(){ de constructor. print "<table align=center border=1>"; print "<td>Num 1</td><td>num2</td><td>Suma</td>"; Esa función -el constructor- se print "<td>Diferencia</td><td>Producto</td><td>Cociente</td><tr>"; ejecuta de forma automática en el momento en que se define un foreach($this->num1 as $clave=>$valor){ nuevo objeto (new) print "<td align=center>".$valor."</td>"; print "<td align=center>".$this->num2[$clave]."</td>"; Según como esté definido, el print "<td align=center>".$this->suma[$clave]."</td>"; constructor puede ejecutarse de print "<td align=center>".$this->diferencia[$clave]."</td>"; distintas formas: print "<td align=center>".$this->producto[$clave]."</td>"; print "<td align=center>".$this->cociente[$clave]."</td><tr>"; • Con los valores predefinidos en las variables de la clase. } print "</table>"; • Mediante la asignación de valores preestablecidos en los } propios parámetros de la función } constructor. $objeto= new Operaciones; En el ejemplo puedes ver la sintaxis de esta forma en la que se for ($i=1;$i<11;$i++){ for ($j=1;$j<11;$j++){
  • 3. le asignan los valores 3 y 7 a las $objeto -> Operaciones($i,$j); variables $a y $b. } En el mismo ejemplo puedes ver } también la utilidad añadida del constructor. $objeto-> imprime(); Cuando se le pasan valores la ?> función se ejecuta sin tomar en consideración los asignados por defecto en la función y cuando se Ver ejemplo75.php le pasan sólo parte de esos valores utiliza los valores recibidos y para los no asignados Un ejemplo de clase extendida en la llamada utiliza los valores del constructor. En este ejemplo puedes ver como las clases extendidas utilizan variables de la clase padre, pueden tener constructores propios pero solo ejecutan su propio constructor pero no el Clases extendidas de la clase padre. PHP también tiene la posibilidad de Para que el constructor de la clase padre sea ejecutado desde la clase extendida tiene que ser crear clases extendidas cuya invocado expresamente. virtud es poder disponer tanto de variables y funciones propias como de todas las variables y funciones <? de la clase padre. class Multiplica{ Sintaxis de las clases var $factor1=7; extendidas var $factor2=8; function Multiplica(){ Para crear clases extendidas se print $this->factor1*$this->factor2."<br>"; requiere utilizar la siguiente sintaxis: print "Esto está en el constructor de la clase padre<br>"; } class nuev extends base { } .... ... definición de variables.... class MeSeOlvido extends Multiplica{ .... .. constructores (opcional)... var $divisor=5; .... function MeSeOlvido(){ .. definición de funciones... print $this->factor1*$this->factor2/$this->divisor."<br>"; .... } } } Como habrás podido deducir nuev es el nombre de la nueva clase (la $objeto= new MeSeOlvido; extendida), base es el nombre de la clase padre y extens es la $objeto->Multiplica(); palabra clave que indica a PHP que ?> se trata de una clase extendida. PHP no permite las herencias Ver ejemplo76.php múltiples. No es posible crear una clase extendida de otra clase extendida. Ejemplo de funciones PHP con clases y objetos Funciones con Clases y En este ejemplo puedes comprobar que las clases pueden escribirse en ficheros externos y objetos posteriormente ser incluidas en un script PHP mediante la función include. Existen algunas funciones que <? pueden resultarte útiles a la hora de trabajar con clases y objetos. include("ejemplo75.php"); Son las siguientes: $busca="imprima"; method_exists(obj, func) if(method_exists ( $objeto, $busca)){ Comprueba si está definida la echo "Existe la función $busca <br>"; función func (función y método }else{ son sinónimos) en el objeto obj. echo "No existe la función $busca <br>"; Devuelve un valor booleano. Cierto } (true) en el caso de que exista esa función y falso en el caso de que $r=get_class_vars ("Operaciones"); no exista. foreach ($r as $pepe=>$pepito){ echo "$pepe -->$pepito<br>"; get_class_vars(clase) } Crea un array asociativo cuyos índices son los nombres de las $s=get_class_methods("Operaciones"); variables y cuyos valores coinciden foreach($s as $clave){ con los valores preasignados a echo $clave,"<br>"; cada una de esas variables. } print_r(get_object_vars($objeto)); En este array solo se recogen las ?> variables que han sido inicializadas asignándoles un valor. get_class_methods(clas) Ver ejemplo77.php Devuelve un array conteniendo los valores de todos los métodos Ejemplo de utilización de :: (funciones) definidas en la clase clas. <? get_object_var(obj) class A { function ejemplo() { Devuelve todas las variables (y sus valores) contenidas en el echo "Este es el resultado de la función ejemplo<br>"; objeto obj. } } La llamada :: # llamo a la funcion sin crear un nuevo objeto
  • 4. # usando :: PHP permite llamar a una función A::ejemplo(); definida en una clase sin necesidad de crear un objeto. #ahora creo el objeto $b y llamo a la función La sintaxis es la siguiente: $b = new A; clase :: funcion() $b->ejemplo(); ?> donde clase es el nombre de una clase y funcion() es una función definida dentro de esa clase. ejemplo78.php Su funcionalidad es la misma que si escribiéramos: Métodos con el mismo nombre $nombre = new clase $nombre -> funcion () <? Métodos con # creamos una clase padre el mismo nombre class Padre{ function prueba() { echo "Esto está en la función prueba de la clase PADRE<br>"; Los objetos de clases extendidas } pueden usar tanto las funciones contenidas en la propia clase } extendida como en la clase padre. Sin embargo se puede plantear # creamos una clase extendida (Hija) con una funcion de igual nombre una situación (tendremos # funcion ejemplo oportunidad de verla en los temas class Hija extends Padre{ relativos a los ficheros PDF) en la function prueba(){ que existan dos funciones con echo "Esto está en la función prueba de la clase HIJA<br>"; idéntico nombre, una en la clase } extendida y otra en la clase padre. # creamos un nuevo objeto de la clase hija que invoque # ambas pruebas, la de la clase hija y la de la clase padre En esa situación, siempre que se invoque el método, se ejecutará el function ambas(){ incluido de la clase para la que se print "Ejecución de la función ambas<br>"; haya definido el objeto. # mediante $this-> requerimos la ejecución de metodo prueba # de la clase actual En el ejemplo puedes ver las $this->prueba(); diferentes opciones posibles - # al señalar parent:: requerimos la ejecución de metodo prueba objetos creados sobre ambas # de la clase padre clases- y también las, ya parent::prueba(); comentadas, de ejecución de los } métodos sin creación previa de objetos mediante la sintaxis: } # creamos un objeto de la clase padre y por tanto invocará nombre_clase :: metodo() # los métodos contenidos en esa clase sin considerar los de la # clase extendida. En este caso, si el método se $objeto1 =new Padre(); invoca desde una función de la print "<BR>Ejecutamos el método prueba(). clase extendida en vez de escribir El $objeto1 utiliza la clase padre<br>"; el nombre asignado a la clase padre se especifica la referencia a $objeto1->prueba(); esta mediante la palabra: parent # creamos un nuevo objeto sobre la clase extendida. # Podrán invocarse métodos de la clase padre y de la extendida # pero si coinciden los nombres de esos métodos prevalecerá Bibliotecas de clases # el de la clase extendida. $objeto2 =new Hija(); Una de las ventajas más print "<BR>Ejecutamos el método prueba(). importantes de las clases es la El $objeto2 utiliza la clase Hija<br>"; posibilidad de reutilización de $objeto2->prueba(); rutinas -propias o desarrolladas por otros- en nuestros scripts. print "<BR>Ejecutamos el método ambas()<br>"; Existen algunos sitios en la red en # aquí invocamos otro método de la clase extendida los que pueden obtener una gran cantidad de materiales de este $objeto2->ambas(); tipo. Uno de los sitios más # también podemos invocar el método de la clase que deseemos sin crear el populares puedes encontrarlo en la objeto dirección: phpclasses.org. Print "<br>Ahora vamos a usar Padre::Prueba()<br>"; Padre::Prueba(); Trataremos con una cierta Print "<br>Ahora vamos a usar Hija::Prueba()<br>"; profundidad la forma de utilización Hija::Prueba(); de estas clases de terceros en los ?> apartados relativos a la creación de ficheros en formato PDF. Ejecutar ejemplo Anterior Indice Siguiente