En esta segunda entrega de los métodos mágicos de PHP os voy a comentar dos nuevos métodos que se han agregado a la versión 5 de PHP para trabajar con clases.

Los métodos de los que os voy a hablar son el __clone(), un método que sería el equivalente al constructor de copia de la Programación orientada a objetos de toda la vida, y el __get() y __set().

Empecemos por el __clone(). Este método realiza las funciones del constructor de copia de toda la vida. Hace una copia exacta del objeto. Si nuestro objeto tiene referencias a otros objetos también los copia.

Por otro lado, todos los que hemos programado orientado a objetos tenemos claro el tema del ámbito de los atributos y métodos. Sabemos que si el atributo es privado sólo se puede acceder a él desde dentro de la clase y desde fuera solo se puede acceder a su información a través de los métodos accesores y selectores (get y set).

Los métodos __get() y __set() nos lo ponen bien fácil. Si no existieran estos métodos genéricos, deberíamos definir un get y un set para cada uno de los atributos.

Aquí tenéis un ejemplo de como se programarían estos métodos:

class Rectangulo{
	private $ancho;
	private $alto;

	function __clone(){
		$this->ancho = clone $this->ancho;
		$this->alto = clone $this->alto;
	}

	function __get($value){
		return $this->$value;
	}

	function __set($value, $param){
		if(is_numeric($param)){
			$this->$value = $param;
		}
	}
}

Escuchando… Rod Stewart and the faces — Maggie May

Comments No Hay Comentarios »

Hola amigos ya estoy por aquí de nuevo. En esta ocasión y dado que estoy metido en unos asuntos en este momento que tratan sobre la programación orientada a objetos en php, os voy a comentar una serie de métodos llamados mágicos que se han introducido en la versión 5 de php.

A partir de la versión 5 de php se han introducido mejoras que facilitan la encapsulación de los objetos y así lo aproximan más a la POO.

Lo primero que cabe destacar es que tanto los métodos como los atributos pueden ser de tres tipos.

private: Sólo son accesibles los métodos de la clase.

protected: Sólo son accesibles desde los métodos de la clase y de clases derivadas.

public: Se pueden acceder a ellos desde fuera de los métodos de la clase.

El primer método “mágico” que voy a explicar es el constructor. En php 4 por convención se solía usar como constructor un método que tenía el mismo nombre que la clase. PHP 5 nos introduce el método __construct(), aquí tenéis un ejemplo.

<?php
	class Rectangulo{
		private $ancho;
		private $largo;
		function __construct($pAncho, $pLargo){
			$this->ancho = $pAncho;
			$this->largo = $pLargo;
		}
	}
?>

El siguiente método que voy a explicar es __toString(). Gracias a este método podemos sacar por pantalla un objeto como si fuera un string.

Vamos a ver un ejemplo.

function __toString(){
        	$retorno = 'Las dimensiones del rect&aacute;ngulo son:
			('.$this->ancho.' x '.$this->largo.')<br />';
        	$retorno.= 'El &Aacute;rea es: '. $this->ancho * $this->largo;
        	return $retorno;
		}

La llamada a estos métodos sería:

$rect = new Rectangulo (10,10);
echo $rect;

Escuchando … Colorblind — Counting Crows

Comments No Hay Comentarios »

Hola amigos, en esta ocasión voy a explicar algo que existe en casi todas las páginas, pero en este caso yo lo he aplicado con AJAX y JQUERY.

¿En cuántas páginas habéis entrado y habéis visto un desplegable de estos (combo box) con una serie de valores y habéis seleccionado uno de ellos y la página automáticamente se ha recargado y os ha mostrado unos valores?

Un combo box

Un combo box

Como siempre que trabajamos con AJAX tendremos la siguiente estructura:

Diagrama de funcionamiento AJAX

Diagrama de funcionamiento AJAX

El fichero HTML en el que vamos a añadir este combo tendría este código:

index.html

<html>
	<head>
		<script src='js/jquery.js' type='text/javascript'></script>
		<script src='js/funciones.js' type='text/javascript'></script>
	</head>
	<body>
		<select name = "seleccionar">
			<option value ="1">1</option>
			<option value ="2">2</option>
			<option value ="3">3</option>
			<option value ="4">4</option>
			<option value ="5">5</option>
		</select>
		<div id = "contenido"></div>
	</body>
</html>

En el fichero Javascript:

funciones.js

$(document).ready(function () {

 	$('#limite').change(function(){
		$.get("funcionesC.php",
			{limite: $('#limite').val()
			}, function(data){
				$('#c').html(data);
		});
  	});
});

Por último en el fichero PHP desde el que mediante el echo devolvemos el callback deberemos escribir lo siguiente:

funcionesC.php

$limite = $_GET['limite'];
echo $limite;

Por último, como siempre una canción para despedir el post.

Escuchando… I wanna be your boyfriend — The Ramones

Comments No Hay Comentarios »

Hola amigos, tras un largo tiempo sin escribir me dispongo a compartir ciertas experiencias con vosotros.

En el mundo del envío y recepción de datos existen una serie de normas no escritas sobre qué método usar.

Para empezar haré una breve descripción sobre los métodos de envío y recepción de datos. Como bien sabréis necesitaremos un formulario HTML para enviar los datos. En la etiqueta <form> será dónde definiremos la propiedad method que podrá tener los siguientes valores:

  • post: Envía ocultos los datos
  • get: Envía los datos en la URL

Bien además de saber estas pequeñas diferencias es básico recordar que todo lo que hagamos en la red estará sujeto a posibles ataques, por lo tanto considero fundamental diferenciar en qué tipo de operaciones podemos usar get y post.

Post:

  1. Para las operaciones de modificación de registros de una Base de datos (Insert, Delete y Update) .
  2. Para formularios de Login.
  3. etc.

Get:

  1. Consultas  (Select)
  2. etc.

Por otro lado tenemos la opción Request. Esta opción es sin duda la más interesante cuando tenemos que recojer datos de otras páginas en las que no sabemos cuál es el método de envío.

En definitiva Request no necesita saber de que manera se envian los datos. El hecho de usar Request puede provocar vulnerabilidades y fallos de seguridad.

A continuación os voy a poner un ejemplo de cada:


GET

formulario.html

<form action="procesar.php" method="get">
     <input name="variable" type="text"/>
     <input type="submit" value="enviar"/>
</form>

procesar.php

<?php
     $var = $_GET['variable1'];
     echo $var;
?>

POST

formulario.html

<form action="procesar.php" method="post">
     <input name="variable" type="text"/>
     <input type="submit" value="enviar"/>
</form>

procesar.php

<?php
     $var = $_POST['variable1'];
     echo $var;
?>

REQUEST

formulario.html

<form action="procesar.php" method="post">
     <input name="variable" type="text"/>
     <input type="submit" value="enviar"/>
</form>


<form action="procesar.php" method="get">
     <input name="variable" type="text"/>
     <input type="submit" value="enviar"/>
</form>

procesar.php

<?php
     $var = $_REQUEST['variable1'];
     echo $var;
?>

Escuchando…   Angelic Upstarts – Solidarity

Comments No Hay Comentarios »

Hola de nuevo. He estado mucho tiempo fuera y por fin he vuelto al trabajo. La vuelta al trabajo ha supuesto nuevos retos y por lo tanto nuevas soluciones. Hasta que empecé a hacer una aplicación para la gestión de unos cursos no me ví en la necesidad de hacer un formulario en el que pudiera tener dos “action”. Es realmente sencillo, a continuación os muestro un ejemplo.

Lo primero es eliminar la etiqueta acción del formulario.

<form name="formulario1" method="GET" >

Posteriormente es tan simple como poner lo siguiente en el código de los botones

<input type="submit" onclick = "this.form.action = 'pagina1.php'" value="accion 1" />
<input type="submit" onclick = "this.form.action = 'pagina2.php'" value="accion 2" />

Para finalizar como siempre algo de música. En este caso y ya que el domingo vi la nueva película de Tarantino, Malditos Bastardos, os pondré un tema que mientras lo escuchaba en el cine me pareció que era de Iggy Pop pero resultó ser del maestro David Bowie.

Comments No Hay Comentarios »

Cerrar
Enviar por Correo