Diferencia entre revisiones de «Plantilla:PHP/SintasixPHPOOP 1»
De WikiEducator
(→Los atributos) |
(→Pilares básicos de la POO) |
||
(2 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 101: | Línea 101: | ||
<div class="slide"> | <div class="slide"> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
+ | ====Los métodos==== | ||
+ | *Pero solo los atributos no sirven de nada | ||
+ | *Cuando nosotros usemos un objeto de la clase fecha, necesitamos que ese obeto exista, que sea una fecha concreta | ||
+ | *Necesitamos un comportamiento para las clases, es decir, que sepan hacer cosas, para esto están los métodos, que son funciones que vamos a tener en nuestra clase. | ||
+ | =====El constructor ===== | ||
+ | *Una acción básica el la que se ejecuta cuando construimos o declaramos un objeto de una clase | ||
+ | *Este método se conoce como constructor, y se ejecuta de forma implícita (no hay que invocarlo de manera explícita | ||
+ | *En php este método se llama '''''__construct(...)''''' y le podemos pasar los parámetros que consideremos | ||
+ | {{MRM_Puntos clave|En php los métodos que se ejecutan cuando ocurre algo que no sea invocarlos se llaman '''''métodos mágicos'''''}} | ||
+ | {{Tip|'''''__construct()''''' es un método mágico que se ejecuta cuando instancio un objeto de una clase}} | ||
+ | {{Tip| Todos los métodos mágicos, ya están definidos por el sistema y empiezan por dos caracteres de subrayado '''''__'''''}} | ||
− | ==== | + | <source lang=php> |
− | * | + | public function __construct($d, $m, $y) { |
− | + | $this->dia = $d; | |
− | {{ | + | $this->mes = $mes; |
− | + | $this->year = $year; | |
− | + | } | |
+ | </source> | ||
+ | *Fíjate en el operador (seudovariable) $this, hace referencia al objeto actual, el que esté en memoria | ||
+ | {{MRM_Pregunta| | ||
+ | Qué pasaría si pusiera $dia en lugar de $this->dia | ||
}} | }} | ||
− | |||
− | |||
− | + | ;Ver los valores de los atributos | |
− | + | *Para ello podemos crear un método ver_fecha | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | ; | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | * | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | *Para ello vamos a implementar el método mágico '''''__toString()''''' | |
− | + | *Este método no adminte parámetros | |
+ | *Tiene que devolver un string | ||
+ | *Se invoca siempre que queramos convertir un objeto en cadena de caracteres | ||
+ | * | ||
+ | *Para esto, inicializar el objeto, tenemos | ||
=== Declarando objetos: Operador '''''new'''''=== | === Declarando objetos: Operador '''''new'''''=== |
Última revisión de 03:26 26 mar 2019
Los atributos
- Para definir los atributos hay que especificar antes del nombre su visibilidad
- Establece si ese atributo puede ser accedido o no fuera de la clase
- Tenemos tres tipos de visibilidad
- private
Solo se puede acceder al atributo dentro de la propia clase
- public
Se puede acceder al atributo en cualquier sitio donde esté el objeto
- protected
Solo se puede acceder al atributo dentro de la propia clase y de las clases que hereden de ella (ya lo veremos en herencia).
|
- Otro ejemplo importante son los métodos __toString() y __call($function, $paramters)
__toString()
| |
class Racional { //put your code here private $num; private $den; public function __construct($num, $den){ $this->num = $num; $this->den = $den; } public function __toString(){ return ("$this->num/$this->den"); } } $r1 = new Racional (8,5); echo "Valor del objeto r1 = $r1"; ?>
Valor del objeto r1 = 8/5
|
1.- $metodo es el nombre del método invocado 1.- $parametros es un array indexado con la lista de los parámetros con los que invocamos a la función |
uso de __call($metodo, $parametros )
| |
class Racional { //put your code here private $num; private $den; public function __construct($num, $den){ $this->num = $num; $this->den = $den; } public function __call($funcion, $argumentos){ echo "<h2>Has invocado a un método que no existe en esta clase </h2>"; echo "Nombre de la función <strong>$funcion</strong><br />"; echo "Lista de parámetros<br />"; foreach ($argumentos as $param => $valor){ echo "parámetro <strong>$param</strong> = <strong>".print_r($valor, true). "</strong> <br />"; //Poner en print_r el segundo parámetro a true, //hace que esa función en lugar de imprimir, retorna el valor. } } } } $r1 = new Racional(5,4); $r1->metodoInventado1(5,4,5,6,7); $r1->otroMetodoSinParametros(); $r1->otroMetodo([1,2,3],"parametro2", 5,"ultimo parametro"); ?>
|