Aconsejadme una estructura para mi código

Josepanaero

Muy buenas! Voy a hacer una página web en php (no es la primera) y estaba pensando en qué forma voy a estructurar el código común a todas las secciones, para no tener que repetir código redundante.

Como todas las secciones van a tener la misma forma (un logo arriba, un menú a la izquierda, un pie de página, y el propio contenido de la sección), tengo dos formas pensadas para hacer esto:

1) Utilizar esta estructura en todas las páginas:

// Aquí va lo del head, metatags, cabecera, etc.
mostrarParteSuperior();

// Contenido de la sección

// Aquí se cierra el body, html, se pone el pie de página, etc.
mostrarParteInferior();

De esta forma se queda la página muy limpia, pq solamente hago dos llamadas a función q se encargarían de mostrar todo el código html, css, etc. q es común para todas las páginas.

2) Crear una única página principal y que tenga varios módulos. Por ejemplo, para acceder a un módulo llamado, por ejemplo, multimedia, se haría de esta forma:

http://www.mipagina.com/index.php?seccion=multimedia

No sé por cuál de las dos decidirme, o si optar por otra alternativa. Para los que programéis usando la segunda, cómo lo hacéis? Porque imagino q no se meterá todo el código en una única página, no? XD Imagino q será con un switch de sección el cual llame a alguna función o include q mostraría el contenido de esa sección, no?

Espero haberme explicado bien. Un saludo y gracias.

Dod-Evers

También podrías aprender jsp y utilizar la instruccion include^^

erdanblo

#2 (desde la ignorancia) ¿acaso PHP no tiene include y funciona de forma similar?

www.php.net/include

elkaoD

#1, por qué no los dos ?

cabron

Hacerlo de la segunda forma, puede ser un problema o no según lo que tengas en el switch. Si te queda algo así:

switch(seccion)
{

case "Noticias":

  mostrarNoticas();

break;

case "Foro":

  mostrarForo();

break;

//etc..
}

Eso sería una opción viable.

Ahora, como empieces a tener muchas secciones, y encima dentro de cada case tengas bloques de código más complejos que simplemente llamar a la función que muestra la sección, entonces el código de la página acabara siendo un caos infumable.

En ese caso es mejor la opción 1, tener una función para mostrar la cabecera y otra el pie, y una página independiente para cada contenido, donde llamas a esas dos funciones.

willsmith
<?php
        if($_GET[modulo]){
                         include "/modulos/".$_GET[modulo]."/index.php";
}
kas

Para mi primera pagina web, utilice la forma 2( y debo decir que para mi fue bastante difícil depurar el código.

Quizas en vez de un switch, si tienes muchisimas secciones, tambien podrias crear una matrix de 2 dimensiones, en una albergas la clave y en la otra el archivo .php a mostrar.

Esta opcion tambien dificulta el debugging pero es mas smart.

Patt0n

Opción 1) por sencillez y claridad de código, reusabilidad... tira de includes.

Más de uno pica jsps por lo que parece :)

15 días después
Josepanaero

Muchas gracias a todos por las respuestas. Al final me he decidido por la opción de los módulos, pq me apetecía probar a programar de esa forma.

De momento no parece muy lioso y no se queda mal el código, está bastante claro todo, así que a ver qué tal se da esta experiencia :)

Salu2!!

Byr0n

Y por que no haces un index general, con la cabecera y los menus desplegados, y que tenga un iframe en medio cuya direccion sea la que recibe la pagina index por parametro ?
Asi te ahorras de Switch.
Pagina -> index.php?pag=herramientas
Y en la pagina un iframe src="<?php echo $_REQUEST['pag']?>.php" por ejemplo.

Josepanaero

#10 así es como tengo mi página personal actualmente, pero tiene ya muchos años y cuando la hice era joven e inexperto xDDDD

No se deben usar iframes pq son un atentado contra la accesibilidad. Aunq la verdad es q te hacen más sencilla la vida, pero esto no es tan importante.

Saludos!

TaMy

Si lo que quieres es tenerlo ordenado te recomiendo que lo hagas en XML y para crear el HTML lo hagas mediante un XLS juntandolo con XML y quedando limpio y solo maquetando con el CSS...

Hacer funciones de funciones de funciones, puede parecer más limpio... pero realmente es agrupar la suciedad en diferentes puntos...

Usuarios habituales

  • TaMy
  • Josepanaero
  • Byr0n
  • willsmith
  • cabron
  • elkaoD
  • erdanblo