Ver Mensaje Individual
  #3 (permalink)  
Antiguo 18/10/2006, 09:31
_Radamantis_
 
Fecha de Ingreso: octubre-2006
Mensajes: 34
Antigüedad: 17 años, 7 meses
Puntos: 0
Si la forma 2 es la adecuada tienes que tener varias clases genericas: Modelo, Controlador, Vista (Dejaremos la vista) y una clase
por cada tabla principal. Por orden de actuacion:
- Al controlador se le pasa una operacion.
- El controlador llama a la clase/s que sea y a la/s funcion/es que corresponda para esa operacion.
- El modelo es el encargado de definir los campos y metodos genericos que se realizan para una tabla.
- Por ultimo en las clases de cada tabla se define el nombre de la tabla, nombre del id, relaciones con otras tablas, etc.

Ejemplo basico(Es muy simple pero para que se entienda mas que nada...)

Código PHP:
//CLASE MODELO (Modelo.inc.php)
require_once ("Adodb.inc.php"); //O tu propia clase_db

class Modelo{
var 
$nombreTabla;
var 
$nombreId;

function 
Modelo($nombreTabla$nombreId)
{
    
$this->nombreTabla=$nombreTabla;
    
$this->nombreId=$nombreId;    
    
$this->db=new Adodb();
}

/*
Parametros de los campos en forma de array($clave->$valor,$clave2 => $valor2,...)
*/
function insertar($campos)
{
        
$s "INSERT INTO " $this->nombreTabla "(";
        if (
is_array($campos)) {
            
$s .= implode(","array_keys($campos));
        }
        
$s .= ") VALUES (";
        if (
is_array($campos)) {
            
$s .= "'" implode("','"array_values($campos)) . "'";
        }
        
$s .= ")";
        return 
$this->db->Execute($s);
}

function 
borrar($id)
{
    
$s "DELETE FROM "$this->nombreTabla." WHERE "$this->campoId"='"$id."'";
    return 
$this->db->Execute($s);
}

//Mas ejemplo de funciones posibles: modificar, getRegistros, insertarRelacion, borrarRelacion, getRelacionados,......

Código PHP:
//CLASE CAMIONES (camion.php);
require_once("Modelo.inc.php");
class 
camion extends Modelo{
 
function 
camion{
    
Parent::Modelo("camiones""id_camion");
}

function 
alta()
{
    
//AQUI PONEMOS LOS DATOS QUE QUEREMOS INSERTAR DE POST, GET, etc..
    
$campos=array("campo1"    => "valor1""campo2" => "valor2");
    
$this->insertar($campos);
}
function 
baja()
{
    
$id=$_POST["id"];    
    
$this->borrar($id);
}

Código PHP:
//CLASE CONTROLADOR (controlador.inc.php)
class controlador{
    function 
controlador()
    {
    }

    function 
operaciones($operacion$clase)
    {
        if (
file_exists($clase)
        {
            require_once(
$clase);
            
$obj= new $clase;
        } 
        switch (
$operacion)
        {
            case 
alta$obj->alta();break;
            case 
baja$obj->baja();break;
            default: return;
        }
        return;
    }

Código PHP:
//controler.php
require_once("controlador.inc.php");
$controler= new controlador();
$controler->operaciones($_GET['operacion'], $_GET['tabla']);

//Action formulario
action="controler.php?operacion=alta&tabla=camion"
Bueno esta es la idea muy basicamente. Lo normal es que las acciones de un controlador se lean de algun sitio (XML, txt, BD)
Llamando a varios metodos del modelo y luego a la vista que sea.
Esto esta en PHP 4 pero vamos en PHP 5 no varia demasiado..

Espero que te haya servido!

Última edición por _Radamantis_; 18/10/2006 a las 10:12