Breve recordatorio de como trabajar con clases a partir de PHP5
<?
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();
?>
<?
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();
?>
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.
<?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
<?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...
}
}
}
?>
<?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>
<?
}
}
?>
<?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
}
}
?>
<?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