Ver Mensaje Individual
  #6 (permalink)  
Antiguo 03/08/2005, 08:14
Avatar de Tayron Alí
Tayron Alí
 
Fecha de Ingreso: mayo-2005
Mensajes: 15
Antigüedad: 19 años
Puntos: 0
Que es MVC y un FrameWork?

MVC, es Model View Controller, es un modelo de desarrollo que separa el desarrollo normal de una aplicación, que viene servidor de datos, servidor de aplicaciones, logica de negocio de la aplicación y la logica de diseño de la misma, para ser mas especifico abstrae lo que es servidor de datos, logica del diseño y logica del negocio en uno, al final queda solamente como logica del negocio, este es tu controller, lo separa de las vista o las páginas en donde publicas sus resultados, este es tu view y al final la forma en como van a interactuar ellos es tu model.

Dicho en castellano, el controller es el conjunto de instrucciones que definen como es el comportamiento de tu aplicación, en donde y cuando se ejecuta una instrucción, el view son todas aquellas páginas en las cuales se publica el resultado de estas instrucciones y el model es la forma como se relacionan las vistas y las acciones con el resto de componentes de tu aplicación. Para lograr esto hacemos uso de objetos que pueden ser utilizados en multiples ocaciones, Esto es un framework, es un esquema repetitivo que es utilizado para no codificar de mas en las paginas web. Ejemplo:
<?php
/*requerir la clase conxión de la que heredaremos ConexionMySQL*/
/*Clase ConexionMySQL*/
class ConexionMySQL {
var $servidor="localhost";
var $usuario="root";
var $clave="";
var $base_datos="portal";
var $link;

/*Constructor*/
function ConexionMySQL()
{
$this->link=$this->connect();
mysql_select_db($this->base_datos,$this->link);
}

/*Función conectar a la base de datos*/
function connect()
{
return mysql_connect($this->servidor,$this->usuario,$this->clave);
}

/*Función cerrar conexión*/
function close()
{
return mysql_close($this->link);
}

/*Función consulta*/
function query($query)
{
return mysql_query($query,$this->link);
}

/*Función crear arreglo de registros*/
function fetch_array($resultado)
{
return mysql_fetch_array($resultado);
}

/*Función liberar resultados*/
function free_result($resultado)
{
return mysql_free_result($resultado);
}

}
?>
fijate en esta clase conexion a mysql, ahorita esta orientada a mysql pero si quisiera conectarme a Oracle, por ejemplo, nada mas tengo que modificar esta clase y los cambios se verian inmediatamente en loda la aplicación en donde yo interactue con la base de datos.
Reviza estas otras clases:
<?php
//Crear objetos para separa el código php y html
class usuario{
var $nombre;
var $apellido;
var $email;
var $user;
var $password;
var $password_confirma;
var $coinside_password;
var $vacio;
var $tipo;

function usuario()
{
if($_POST)
{
$this->nombre=(!get_magic_quotes_gpc()) ? addslashes($_POST['nombre']) : $_POST['nombre'];
$this->apellido=(!get_magic_quotes_gpc()) ? addslashes($_POST['apellido']) : $_POST['apellido'];
$this->email=(!get_magic_quotes_gpc()) ? addslashes($_POST['email']) : $_POST['email'];
$this->user=(!get_magic_quotes_gpc()) ? addslashes($_POST['usuario']) : $_POST['usuario'];
$this->password=(!get_magic_quotes_gpc()) ? addslashes($_POST['password']) : $_POST['password'];
$this->coinside_password=(!get_magic_quotes_gpc()) ? addslashes($_POST['passwordConfirma']) : $_POST['passwordConfirma'];
if(strcmp($this->password,$this->coinside_password)==0)
{
$this->password_confirma=$password;
$this->coinside_password=0;
}else{
$this->coinside_password=1;
}
if(isset($_POST['tipo'])){
$this->tipo=(!get_magic_quotes_gpc()) ? addslashes($_POST['tipo']) : $_POST['tipo'];
}else{
$this->tipo='user';
}
$this->validar();
}else{
$this->vacio=1;
}

}

function putTipo()
{
return $this->tipo;
}

function putNombre()
{
return $this->nombre;
}

function putApellido()
{
return $this->apellido;
}

function putEmail()
{
return $this->email;
}

function putUser()
{
return $this->user;
}

function putPassword()
{
return $this->password;
}

function retornaSqlInsertar()
{
$query='INSERT INTO USERS (NOMBRE,APELLIDO,EMAIL,FECHA_INGRESO,'.
'USER,PASSW,USERID_ING,FECHA_ING,USERID_ACT,FECHA_ ACT,TIPO_USER) '.
'VALUES(';
$campo='"'.$this->putNombre().'"';
$query=$query . $campo . ',';
$campo='"'.$this->putApellido().'"';
$query=$query . $campo . ',';
$campo='"'.$this->putEmail().'"';
$query=$query . $campo . ',';
$campo="curdate()";
$query=$query . $campo . ',';
$campo='"'.$this->putUser().'"';
$query=$query . $campo . ',';
$campo='"'.$this->putPassword().'"';
$query=$query . $campo . ',';
$campo='"'.$this->putUser().'"';
$query=$query . $campo . ',';
$campo="curdate()";
$query=$query . $campo . ',';
$campo='"'.$this->putUser().'"';
$query=$query . $campo . ',';
$campo="curdate()";
$query=$query . $campo . ',';
$campo='"'.$this->tipo .'"';
if($this->campo==null)
{
$campo='user';
}
$query=$query . $campo . ')';
return $query;

}

function retornaSQLEditar($predicado)
{
$query='UPDATE USERS SET ';
$campo='"'.$this->putNombre().'"';
$query=$query.'nombre='.$campo.',';
$campo='"'.$this->putApellido().'"';
$query=$query.'apellido='.$campo.',';
$campo='"'.$this->putEmail().'"';
$query=$query.'email='.$campo.',';
$campo='"'.$this->putUser().'"';
$query=$query.'user='.$campo.',';
$campo='"'.$this->putPassword().'"';
$query=$query.'passw='.$campo.',';
$campo='"'.$this->putUser().'"';
$query=$query.'userid_act='.$campo.',';
$campo="curdate()";
$query=$query.'fecha_act='.$campo.',';
$campo='"'.$this->putTipo().'"';
$query=$query.'tipo_user='.$campo.'';
if(strcmp($predicado,'')!=0)
{
$query = $query . ' where '. $predicado;
}
return $query;
}

function validar()
{
if((strcmp($this->nombre,'')==0) || (strcmp($this->apellido,'')==0) || (strcmp($this->user,'')==0) || (strcmp($this->password,'')==0)){
$this->vacio=1;
}

}
}

//clase del objeto usuario en la base de datos para operaciones de consulta
class usuarioBD extends usuario{

var $query;

function usuarioBD(){}

function retornarSQLSelect($predicado)
{
$this->query='SELECT * FROM USERS';
if(strcmp($predicado,'')!=0)
{
$this->query = $this->query . ' where '. $predicado;
}else{
$this->query = $this->query . ' where 1';
}
return $this->query;
}

function retornarSQLEliminar($predicado)
{
$this->query='DELETE FROM USERS';
if(strcmp($predicado,'')!=0)
{
$this->query = $this->query . ' where '. $predicado;
}else{
$this->query = $this->query . ' where 1';
}
return $this->query;
}
}
?>
El objetivo de la clase usuario es contener todos los valores enviados desde un formulario y generar una validación, esta clase es un modelo de mi tabla usuarios, y genera el sql necesario para insertar y actualizar, verás que hay otra clase que se extiende de usuarios, en ella ya no es necesario estar capturando un post esta sirve para listar el contenido de la tabla usuarios y para eliminar registros.

Si deseas implementar un módulo de administración de usuarios estas clases te serviran de mucho, bueno yo las concebi de esta manera pero si alguien puede mejorar la lógica, adelante y posteen los cambios.