Clases con PHP5

Breve recordatorio de como trabajar con clases a partir de PHP5

Clases simples con PHP

<?
class ClaseSimple{
	// miembros
	public $variable1 = 'una variable simple';

	//métodos
	function setVariable($var){
		$this->variable1=$var;
	}	
	function muestraVariable(){
		echo $this->variable1;
	}
}

$instancia = new ClaseSimple();
$instancia->muestraVariable();
$instancia->setVariable('nuevo valor');
$instancia->muestraVariable();  
?>

Herencia con PHP

<?
  class ClaseSimple{
  	// miembros
  	public $variable1 = 'una variable simple';
  
  	//métodos
  	function setVariable($var){
  		$this->variable1=$var;
  	}	
  	function muestraVariable(){
  		echo $this->variable1;
  	}
  }
  

 class ClaseExtendida extends ClaseSimple
{
    // redefiniendo métodos
    function muestraVariable()
    {
        echo "Clase Extendida\n";
        parent::muestraVariable();
    }
}

$extendida = new ClaseExtendida();
$extendida->muestraVariable();
?>

Ejemplo Funcional

Dada la facilidad para crear spaguetti code con PHP es conveniente autoimponerse ciertas normas a la hora de programar. Y la incorporación de las clases desde PHP5 nos facilita mucho la vida en este sentido.

Vamos a ver un ejemplo simple de como quedaría el código de una pagina básica que envie un mensje de texto y lo muestre por pantalla. Para darle un poco de chicha guardara los mensajes de 10 en 10 tras lo cual limpia las variables.

Gracias al uso de las clases podemos dejar la pagina como una simple enumeracion de clases y llamadas a sus metodos.

index.php

<?php
/**
 * @file
 * Pagina de ejemplo simple de uso de clases con php5.
 *
 * Todo el codigo relativo a este ejemplo es liberado bajo la licencia publica general GNU
 * @author Juantxu.net
 */


/**
 * Al principio de todo hago todos los includes
 */
require_once("include/manejo_sesiones.php");
require_once("include/cabecera.php");
require_once("include/cuerpo.php");
require_once("include/pie.php");
/*
 * Como que voy a definir variables de sesion  inicializo la sesion
 */
$mi_sesion = new Sesion();
$mi_sesion->inicio();
$mi_sesion->registra();
/**
 * Comienzo a pintar
 */
$caceza = new Cabecera();
$caceza->mostrar("primera pagina");

/**
 * Aqui pinto el cuerpo de la página
 */

$cuerpo = new Cuerpo();
$cuerpo->mostrar();


/**
 * Por fin cierro la pagina
 */
$pie = new Pie();
$pie->mostrar();


?>

Como puedes ver la pagina simplemente llama ( require_once )a las clases que posteriormente invocara

include/manejo_sesiones.php

<?php
/**
 * Esta función servira para crear una sesion y almacenar en las variables de sesion los mensajes enviados
 *
 */
class Sesion{
	public function inicio(){

		// inicio el contador
		session_start();
		if (!isset($_SESSION['contador'])) {
			$_SESSION['contador'] = 0;
			// inicio el array
			$_SESSION['mensajes'];
		}
		// limite de seguridad... no almaceno mas que 10 mensajes
		if($_SESSION['contador'] == 10){
			session_destroy();
		}

	}
	public function registra(){
		// si hay mensaje a guardar
		if ( strlen($_POST['txtTexto']) != 0 ){
			// para que no haya un listo que me colapse la memoria
			if (strlen($_POST['txtTexto']) > 100){
				$msg = substr($_POST['txtTexto'], 0, 80) . "limite excedido";
			}else{
				$msg = $_POST['txtTexto'];
			}
			// guardo el mensaje
			$_SESSION['mensajes'][$_SESSION['contador']] = $msg;
			$_SESSION['contador']++;
		}else{
			// si no hay mensaje a guardar...
		}
	}

}
?>

include/cabecera.php

<?php
/**
 * Esta función servira para pintar la cabecera de la página
 *
 */
class Cabecera
{

	//Método público para llamar a la cabecera
	public function mostrar($titulo) {
		?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<head>
<title><?php print $titulo ?></title>

<script type="text/javascript"> </script>
</head>
<body>
		<?
	}
}
?>

include/cuerpo.php

<?php
/**
 * Esta función servira para pintar el cuerpo de la página 
 *
 */

Class Cuerpo{
	public function mostrar(){
		?>

Ejemplo de formulario simple y uso de clases con php5

<form name="frm1" method="post" action="index.php"><input type="text"
	name="txtTexto" size="50" maxlenth="100"> <input type="submit"></form>
		<?php


		if(isset($_SESSION['mensajes'])){
			?>
<div>
<ul>
<?php
for($i=0;$i<count($_SESSION['mensajes']);$i++)
{

	print("<li> " . $i . $_SESSION['mensajes'][$i] . "</li>");

}
		}else{

			print "no hay mensajes";
		}
		?>

</div>
		<?php
	}
}

?>

include/pie.php

<?php
/**
 * Esta función servira para pintar el pie de página
 *
 */
class Pie
{

	//Método público para llamar al pie de página
	public function mostrar() {
		?>
</body>
</html>
		<?
	}
}
?>

Puedes ver que de este modo he dividido el código en pequeñas clases que cada una hace su función.

y para ver el ejemplo funcionando puedes ir aqui

 
php/php5.txt · Última modificación: 2008/07/04 22:16 por juantxu
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki