Foros del Web » Programando para Internet » PHP »

Novato 3 capas OOP, es correcto mi metodo?Porque este error?

Estas en el tema de Novato 3 capas OOP, es correcto mi metodo?Porque este error? en el foro de PHP en Foros del Web. Buenas , soy un novato en el mundo php , estoy desarrollando una tienda, y bueno resulta que estoy intentando crear mi "framework" a 3 ...
  #1 (permalink)  
Antiguo 19/03/2012, 04:37
 
Fecha de Ingreso: abril-2010
Mensajes: 298
Antigüedad: 14 años
Puntos: 1
Novato 3 capas OOP, es correcto mi metodo?Porque este error?

Buenas , soy un novato en el mundo php , estoy desarrollando una tienda, y bueno resulta que estoy intentando crear mi "framework" a 3 capas y OOP... o algo parecido jaajja
Mi estructura es tal que Carpeta proyecto y dentro de ella van los php de las paginas a mostrar y las una carpeta llamada php, que contiene otras 3 con Vistas, Clases y Controladores tal que:

Proyecto:
-index.php
-marcas.php....
-php:
........ -Clases
........ -Vistas
........ -Controladores

Mi problema es que primero nose si sera correcto montarlo asi... y a parte de esto, estoy obteniendo un error que no me permite continuar.. y dado que acabo de empezar creo que es el momento de enfocar el desarrollo correctamente , asi que os adjunto mi codigo y el error , para que evalueis si es una manera correcta de hacerlo y me orienteis.

Problema: estoy intentando mostrar una pagina , marcas.php en la que llamo al controlador C_ListarMarcas.php cuyo contenido seria:
Código:
<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>Tienda</title>
	<link rel="stylesheet" type="text/css" href="css/styleMarcas.css" />
</head>
<body>
  <div id="Main">
    <div id="Header">
      <div id="Header1">
        <h1 class="tittle">Titulo1</h1>
        <h2 class="tittle">Titulo2</h2> 
        <div id="Separador"></div> 
      </div>
    </div>
    <div id="MainContainer">
      <div id="Content">
        <div id="Brands">
          <ul id="ulBrands" class="liEnlaces">

            <?php 
            require("php/Controladores/C_ListarMarcas.php");
            ?>
            
          </ul>
        </div>
No se si es correcto llamarlo asi...

El contenido del controlador es:
Código:
<?php 
    require("php/Clases/GestionMarcas.php");
    $GM=new GestionMarcas();
    $marcas=$GM->ListarMarcas();
    require("php/Vistas/V_ListarMarcas.php");
?>
Lo que supuestamente hace es llamar a una clase que dispone de una funcion llamada ListaMarcas, nos devuelve un array asociativo con las marcas.Este seria su codigo:
Código:
<?php class GestionMarcas{

require("php/Clases/mysql.php");

$MySQL=new MySQL();

  public function ListarMarcas(){ 
   //Listaremos todas las marcas order by Nombre Marca.
   return $MySQL->sp("S_Marcas","","");
  }
}?>
Esta es la vista:
Código:
<?php 
while($row = mysql_fetch_array($marcas)) {  ?>
      <li><a href="Colecciones.php?id="<?php echo $row ['idMarcas']; ?> alt""><?php echo $row ['Nombre']; ?></a></li>    
<?php }?>
Para ello se sirve de una pequeña clase de MySQL en la cual se encarga de llamar a un sp para obtener dichas marcas.Aqui os dejo el codigo:
Código:
<?php class MySQL{

  private $conexion; private $total_consultas;

  public function MySQL(){ 
    if(!isset($this->conexion)){
      $this->conexion = (mysql_connect("localhost","admin","12345"))
        or die(mysql_error());
      mysql_select_db("proyecto",$this->conexion) or die(mysql_error());
    }
  }

  public function consulta($consulta){ 
    $this->total_consultas++; 
    $resultado = mysql_query($consulta,$this->conexion);
    if(!$resultado){ 
      echo 'MySQL Error: ' . mysql_error();
      exit;
    }
    return $resultado;
  }

  public function sp($nombre,$parametrosIn,$parametrosOut){

    return $this->consulta('CALL '.$nombre.'('.$parametrosOut.','.$parametrosIn.')'); 

  }

  public function fetch_array($consulta){
   return mysql_fetch_array($consulta);
  }

  public function num_rows($consulta){
   return mysql_num_rows($consulta);
  }

  public function getTotalConsultas(){
   return $this->total_consultas; 
  }
}?>
Y por ultimo os anexo el error que recibo al intentar entrar en marcas.php:

( ! ) Parse error: syntax error, unexpected T_REQUIRE, expecting T_FUNCTION in
C:\wamp\www\proyecto\php\Clases\GestionMarcas.php on line 3
Call Stack
# Time Memory Function Location
1 0.0121 670912 {main}( ) ..\Colecciones.php:0
2 0.0127 674848 require( 'C:\wamp\www\proyecto\php\Controladores\C_ListarMa rcas.php' ) ..\Colecciones.php:24

Gracias por todo ;)

Última edición por ferminako; 19/03/2012 a las 04:48
  #2 (permalink)  
Antiguo 19/03/2012, 05:12
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Novato 3 capas OOP, es correcto mi metodo?Porque este error?

Que tal ferminako,

Te sugiero que utilices alguno de los tantos fw's que hay, con respecto al error que tienes, comprueba lo que estas haciendo en GestionMarcas.php, te parece que puedes hacer un require e instanciar donde lo estas haciendo ?

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 19/03/2012, 05:47
 
Fecha de Ingreso: abril-2010
Mensajes: 298
Antigüedad: 14 años
Puntos: 1
Respuesta: Novato 3 capas OOP, es correcto mi metodo?Porque este error?

Hola masterpuppet,

Gracias por el consejo antes de nada, pero quiero desarrollarlo yo para llegar a comprenderlo al 100% , más adelante quizas adopte otros fw... y si me acabo de dar cuenta que no puedo instancia en plena clase... se me ha ido la olla :( entonces como hago para acceder a ese metodo de la clase mysql desde gestionmarcas?
Gracias una vez más ;)

PD: Que fw me recomiendas?
  #4 (permalink)  
Antiguo 19/03/2012, 06:08
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: Novato 3 capas OOP, es correcto mi metodo?Porque este error?

Cita:
Iniciado por ferminako Ver Mensaje
Hola masterpuppet,

Gracias por el consejo antes de nada, pero quiero desarrollarlo yo para llegar a comprenderlo al 100% , más adelante quizas adopte otros fw... y si me acabo de dar cuenta que no puedo instancia en plena clase... se me ha ido la olla :( entonces como hago para acceder a ese metodo de la clase mysql desde gestionmarcas?
Gracias una vez más ;)

PD: Que fw me recomiendas?
para instanciar lo que necesitas es un _constructor.

Con respecto al fw, apollo tu inciativa de conocer los codigos al 100%.
__________________
Mono programando!
twitter.com/eguimariano
  #5 (permalink)  
Antiguo 19/03/2012, 06:14
 
Fecha de Ingreso: abril-2010
Mensajes: 298
Antigüedad: 14 años
Puntos: 1
Respuesta: Novato 3 capas OOP, es correcto mi metodo?Porque este error?

Cita:
para instanciar lo que necesitas es un _constructor
Podrias sera mas claro con un ejemplo?
Habia pensado en isntanciar la clase mysql en el controlador y pasarselo a la funcion ListarMarcas como parametro , previa instanciacion de la clase GestionMarcas ...
  #6 (permalink)  
Antiguo 19/03/2012, 06:26
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: Novato 3 capas OOP, es correcto mi metodo?Porque este error?

PHP.net
Desarrolloweb

Ejemplo orientador(no lo provee):

class.php
Código PHP:
Ver original
  1. Class unClase{
  2.     function __CONSTRUCT($ObjMysql){
  3.         $this->mysql=$ObjMysql;
  4.        
  5.     }
  6. }

cito la clase:

Código PHP:
Ver original
  1. require_once('clases/mysql.php');
  2.         require_once('clases/class.php');
  3.        $Mysql = new claseMysql;
  4.        $ObjMysql = $Mysql->conectar();
  5.        $vencidas = new unaClase($ObjMysql);
__________________
Mono programando!
twitter.com/eguimariano
  #7 (permalink)  
Antiguo 19/03/2012, 06:38
 
Fecha de Ingreso: abril-2010
Mensajes: 298
Antigüedad: 14 años
Puntos: 1
Respuesta: Novato 3 capas OOP, es correcto mi metodo?Porque este error?

Gracias x todo!!
PD: Mi metodo de funcionamiento / framework os parece valido¿?

Etiquetas: capas, correcto, html, mysql, oop, sql
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 00:16.