| Clases y objetos |
Clases y objetos
Aunque PHP no es en si mismo un leguaje de programación orientado a objetos si dispone de algunas características que permiten definir clases y construir objetos.Las clases
Una clase no parece ser otra cosa que una especie de plantilla en la que se pueden definir una serie de variables -a las que se pueden asignar valores predefinidos- y funciones que pueden ser invocadas -en todo o en parte- desde cualquier otra parte del documento.Crear y utilizar objetos
Las clases son solo plantillas y sus funciones no se ejecutan hasta que se les ordene.Constructores
Las clases tienen una peculiaridad interesante.Clases extendidas
Bueno... el caso es que... por si construimos la casa y y olvidamos ponerle ventanas.. ;-) PHP tiene la posibilidad de crear clases extendidas que tienen la virtud de poder disponer tanto de las variables y funciones propias como de todas las variables y funciones de la clase base.Funciones con Clases y objetos
PHP dispone de algunas funciones que pueden resultarte útiles a la hora de trabajar con clases y objetos. Son estas:La llamada ::
PHP permite llamar a una función definida en una clase sin necesidad de crear previamente un objeto.
Un ejemplo muy sencillo
<? class Multiplica{ var $factor1=7; var $factor2=8; function curratelo(){ echo $this->factor1*$this->factor2; } } $objeto= new Multiplica; $objeto->curratelo(); ?>
| Ver ejemploC1.php |
Invocando varias veces el mismo objeto
<? class Multiplica{ var $resultado; function curratelo($a,$b){ $this->resultado=$a*$b; } function imprimelo(){ echo $this->resultado,"<br>"; } } $objeto= new Multiplica; $objeto->curratelo(7,3); $objeto->curratelo(11,4); $objeto1= new Multiplica; $objeto1->curratelo(-23,11); $objeto->imprimelo(); $objeto1->imprimelo(); ?>
| Ver ejemploC2.php |
Recogiendo resultados en un array
<? class Multiplica{ var $resultado; var $indice=0; function curratelo($a,$b){ $this->resultado[$this->indice]=$a*$b; $this->indice++; } function imprimelo(){ foreach($this->resultado as $valor){ echo $valor,"<br>"; } } } $objeto= new Multiplica; $objeto->curratelo(7,3); $objeto->curratelo(11,4); $objeto->curratelo(-23,11); $objeto->imprimelo(); ?>
| Ver ejemploC3.php |
Ejemplos de uso de un constructor
<? class Multiplica{ var $factor1=7; var $factor2=8; function Multiplica(){ echo $this->factor1*$this->factor2,"$lt;br>"; } } $objeto= new Multiplica; ?>
| Ver ejemploC4.php |
<?
class Multiplica{
var $producto;
function Multiplica($a=3,$b=7){
$this->producto=$a*$b;
echo $this->producto,"<br>";
}
}
$objeto= new Multiplica;
$objeto->Multiplica(90,47);
$objeto->Multiplica(47);
$objeto->Multiplica();
?>
| Ver ejemploC5.php |
Un ejemplo un poco más... completo
<?
Class Operaciones {
var $inicializada=32;
var $num1;
var $num2;
var $suma;
var $diferencia;
var $producto;
var $cociente;
var $contador=0;
function Operaciones ($val1=45,$val2=55){
$this->contador +=1;
$c=$this->contador;
$this->num1[$this->contador]=$val1;
$this->num2[$c]=$val2;
$this->suma[$c]=$val1+$val2;
$this->diferencia[$c]=$val1-$val2;
$this->producto[$c]=$val1*$val2;
$this->cociente[$c]=$this->inicializada*$val1/$val2;
}
function imprime(){
echo "<table align=center border=1>";
echo "<td>Num 1</td><td>num2</td><td>Suma</td>";
echo "<td>Diferencia</td><td>Producto</td><td>Cociente</td><tr>";
foreach($this->num1 as $clave=>$valor){
$n2=$this->num2[$clave];
$s=$this->suma[$clave];
$d=$this->diferencia[$clave];
$p=$this->producto[$clave];
$c=$this->cociente[$clave];
echo "<td align=center>$valor</td>";
echo "<td align=center>$n2</td>";
echo "<td align=center>$s</td>";
echo "<td align=center>$d</td>";
echo "<td align=center>$p</td>";
echo "<td align=center>$c</td><tr>";
}
echo "</table>";
}
}
$objeto= new Operaciones;
for ($i=1;$i<11;$i++){
for ($j=1;$j<11;$j++){
$objeto -> Operaciones($i,$j);
}
}
$objeto-> imprime();
?>
| Ver ejemploC6.php |
Un ejemplo de clase extendida
<?
class Multiplica{
var $factor1=7;
var $factor2=8;
function Multiplica(){
echo $this->factor1*$this->factor2,"<br>";
echo "Esto está en el constructor de la clase padre<br>";
}
}
class MeSeOlvido extends Multiplica{
var $divisor=5;
function MeSeOlvido(){
echo $this->factor1*$this->factor2/$this->divisor,"<br>";
}
}
$objeto= new MeSeOlvido;
$objeto->Multiplica();
?>
| Ver ejemploC7.php |
Ejemplo de funciones PHP con clases y objetos
<?
include("ejemploC6.php");
$busca="imprima";
if(method_exists ( $objeto, $busca)){
echo "Existe la función $busca <br>";
}else{
echo "No existe la función $busca <br>";
}
$r=get_class_vars ("Operaciones");
foreach ($r as $pepe=>$pepito){
echo "$pepe -->$pepito<br>";
}
$s=get_class_methods("Operaciones");
foreach($s as $clave){
echo $clave,"<br>";
}
print_r(get_object_vars($objeto));
?>
| Ver ejemploC8.php |
Ejemplo de utilización de ::
<? class A { function ejemplo() { echo "Este es el resultado de la función ejemplo<br>"; } } # llamo a la funcion sin crear un nuevo objeto # usando :: A::ejemplo(); #ahora creo el objeto $b y llamo a la función $b = new A; $b->ejemplo(); ?>
| ejemploC9.php |