Foros del Web » Programando para Internet » PHP »

Mvc (Modelo Vista Controlador)

Estas en el tema de Mvc (Modelo Vista Controlador) en el foro de PHP en Foros del Web. hola gente, Estoy desarrollando un Modelo Vista Controlador y bueno he comenzado ahora hacer este modelo y me gustaria que me pudiesen orientar con lo ...
  #1 (permalink)  
Antiguo 13/07/2010, 14:06
Avatar de syntex  
Fecha de Ingreso: noviembre-2002
Ubicación: Cataluña
Mensajes: 978
Antigüedad: 22 años, 1 mes
Puntos: 4
Mvc (Modelo Vista Controlador)

hola gente,

Estoy desarrollando un Modelo Vista Controlador y bueno he comenzado ahora hacer este modelo y me gustaria que me pudiesen orientar con lo expuesto aqui.
GLOBALES:

Código PHP:
<?php
    define
('RUTA_controllers''app/controllers/');
    
define('RUTA_models''app/models/');
    
define('RUTA_views''app/views/');
    
define('RUTA_lib''app/lib/');
    
define('RUTA_layouts''app/views/layouts/');
?>
CLASE PADRE PREPARADA

Código PHP:
<?php
class User_Base{
    function 
__construct(){
        global 
$Bd;
        
$this->Bd $Bd;
    }
}
?>
CONTROLLERS

Código PHP:
<?php
/**
* Controller
**/
class Usuarios_controller extends User_Base{
private 
$userid;
private 
$user;
public 
$texto_user_no;
    function 
__construct(){
        
parent::__construct();    
    }
     public function 
login$user ,$password) {
        require_once(
RUTA_models."portada/portada.php");
        
$user = new usuarios($_POST[user],$_POST[password]);
        
$userid $user->validateUser();
        if(
$userid == ){
                  
//******************************************
                 
if ((empty($_POST[user]) or empty($_POST[password])) and $_POST[xs] !=""){
                    
ob_start();        
                      require_once(
RUTA_layouts."portada/portada.php");
                    
$this->texto_user_no ob_get_clean();
                }
                
//******************************************
               
require_once(RUTA_views."portada/sin_loginear.php");
          }else{ 
             require_once(
RUTA_views."portada/logineado.php");
          }
     }
}    
?>
MODELS

Código PHP:
<?php
/**
* Model
**/
class usuarios extends User_Base{
    public 
$user;
    private 
$password;
    private 
$userid;
    function 
__construct$user$password ) {
        
$this->user $user;
        
$this->password $password;
        
parent::__construct();
    }
   public function 
validateUser( ) {
        
$R $this->Bd->consultar("email,password","usuarios","WHERE (email = '".$_POST[user]."' and password = '".md5($_POST[password])."')","");
        
$this->dato $this->Bd->num_rows($R);
        
$this->Bd->limpiaconsulta($R);
       if( 
$this->dato !=  )  {
           return 
$this->dato;
       } else {
          return 
0;
       }
   }
}  
?>
VIEWS
SIN LOGINEARSE


Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin título</title>
</head>

<body>
<?= $this->texto_user_no; ?>
<form action="index.php" method="post">
	<input type="text" name="user" value="<?= $_POST[user]; ?>" />
    <input type="text" name="password" value="<?= $_POST[password]; ?>" />
    <input type="submit" name="xs" value="enviar" />
</form>
</body>
</html> 
LOGINEADO

Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin título</title>
</head>

<body>
<p>El usuario <?= $user->user; ?> existe
</body>
</html> 
layouts

Código HTML:
<h1>Usuario inválido</h1>
<span>Introduzca correctamente la cuenta de usuario.</span> 
Espero que me puedan ayudar y mejorar todo lo reportado aqui

Gracias.
__________________
------------------------------------------------
La paciencia es el rey de la ciencia
------------------------------------------------

  #2 (permalink)  
Antiguo 13/07/2010, 14:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Mvc (Modelo Vista Controlador)

Pues dos cosas, no uses global, es mas dificil saber si cambias una variable y esta es global, y 2, no heredes todo de una sola clase, mejor diseña correctamente tu modelo UML y ve las relaciones, heredar todo de una clase es incorrecto ya que son objetos diferentes.

Saludos.
  #3 (permalink)  
Antiguo 13/07/2010, 14:17
Avatar de syntex  
Fecha de Ingreso: noviembre-2002
Ubicación: Cataluña
Mensajes: 978
Antigüedad: 22 años, 1 mes
Puntos: 4
Respuesta: Mvc (Modelo Vista Controlador)

Hola.

Y entonces si quisiera recuperar el valor de unla variable dentro de la clase como podria hacerlo que no fuera con global?

El constructor de la clase padre lo e definido para mantener las variables mas usadas dentro de las clases extendidas , no seria correcto???

Gracias
__________________
------------------------------------------------
La paciencia es el rey de la ciencia
------------------------------------------------

  #4 (permalink)  
Antiguo 13/07/2010, 14:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Mvc (Modelo Vista Controlador)

Puedes instanciar la clase dentro de las clases que sean necesarias.

No, por eso te recomiendo antes de programar, mejor diseña correctamente la estructura de tu sistema, y asigna responsabilidades a todo lo que necesites en base al alcance de cada clase.
  #5 (permalink)  
Antiguo 14/07/2010, 02:15
Avatar de syntex  
Fecha de Ingreso: noviembre-2002
Ubicación: Cataluña
Mensajes: 978
Antigüedad: 22 años, 1 mes
Puntos: 4
Respuesta: Mvc (Modelo Vista Controlador)

En la clase padre habia añadido la variable del objeto para la base de datos y así realizar la consulta en la clase extendida.

global $Bd; //[Variable objeto en la clase padre]

Pero entonces mejor instanciar la clase dentro de las clase padre así? Y destruir el global de la clase Padre?

MODELO

Código PHP:
<?php
/**
* Model
**/
class usuarios extends User_Base{
    public 
$user;
    private 
$password;
    private 
$userid;
    function 
__construct$user$password ) {
        
$this->user $user;
        
$this->password $password;
        
parent::__construct();
    }
   public function 
validateUser( ) {
        
$R $this->Bd->consultar("email,password","usuarios","WHERE (email = '".$_POST[user]."' and password = '".md5($_POST[password])."')","");
        
$this->dato $this->Bd->num_rows($R);
    
$this->Bd->limpiaconsulta($R);
        
$this->Bd->cerrarconexion();
       if( 
$this->dato !=  )  {
           return 
$this->dato;
       } else {
          return 
0;
       }
   }
}  
?>
CLASE PADRE

Código PHP:
<?php
class User_Base{
    public 
$Bd;
    private 
$host;
    private 
$dbuser;
    private 
$dbpass;
    private 
$select;
    function 
__construct(){
        include_once(
RUTA_lib."class_bd.php");
        
$host "localhost";
        
$dbuser "xxxxxxxxx";
        
$dbpass"xxxxxxxxxxxxxxxxxxx";
        
$select "xxxxxxxxxxxxxxxxxxxx";
        
$Bd = new conectarMySQL("mysql",$host,$dbuser,$dbpass,$select);
        
$Bd->conectar();
        
$this->Bd $Bd;
    }
}
?>
Muchas gracias,
__________________
------------------------------------------------
La paciencia es el rey de la ciencia
------------------------------------------------


Última edición por syntex; 14/07/2010 a las 02:35
  #6 (permalink)  
Antiguo 14/07/2010, 02:50
Avatar de syntex  
Fecha de Ingreso: noviembre-2002
Ubicación: Cataluña
Mensajes: 978
Antigüedad: 22 años, 1 mes
Puntos: 4
Respuesta: Mvc (Modelo Vista Controlador)

En el controlador quiero mostrar un loyout de una vista html, no se si lo digo correcto por comenzar ahora a programar en MVC, y un poco pez.

La manera conveniente sería en el controlador.

CONTROLADOR

Código PHP:
<?php
//******************************************
            
if ((empty($_POST[user]) or empty($_POST[password])) and isset($_POST[xs])){
                
ob_start();        
                  require_once(
RUTA_layouts."portada/portada.php");
                
$this->texto_user_no ob_get_clean();
            }
            
//******************************************
?>

loyout de una vista html


// require_once(RUTA_layouts."portada/portada.php"); //
Código PHP:
<h1>Usuario inv&#225;lido</h1>
<span>Introduzca correctamente la cuenta de usuario.</span
O añadir la vista template en una funcion en la clase para hacerla llamar en la vista???

Actualmente esta así

Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin título</title>
</head>

<body>
<?= $this->texto_user_no; ?>
<form action="index.php" method="post">
	<input type="text" name="user" value="<?= $_POST[user]; ?>" />
    <input type="text" name="password" value="<?= $_POST[password]; ?>" />
    <input type="submit" name="xs" value="enviar" />
</form>
</body>
</html> 
__________________
------------------------------------------------
La paciencia es el rey de la ciencia
------------------------------------------------


Etiquetas: controlador, modelo, mvc, vistas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:10.