HI I´M AN IDEA
WANNA PLAY
WITH ME?
 

Desarrollando una sencilla web PHP orientada a objetos.

Buenas!

Después de muchos meses sin escribir nada he decidido retomar el blog dándole una nueva tónica intentando pequeños tutoriales o snippets de mi uso diario y no sólo limitándome a android, sino a mi pan de cada día.

Éstos últimos meses estoy intentando cambiar muchos vicios en mi forma de desarrollar intentando dedicar mas tiempo a realizar un buen análisis evitando ponerme a picar código sin más como hacía anteriormente.

Hoy he comenzado el desarrollo de una web y he decidido darle una pequeña vuelta a forma de enfocar proyectos de este tipo y hacer esta web orientada a objetos desde un primer momento.

Voy a explicar como lo he enfocado.

Vamos a implementar dos clases básicas, por un lado tendremos una clase principal para el «sitio» y otra subclase para las distintas páginas.

Primero implementaremos la clase csite en un fichero php.

csite.php

<?php
class csite {
private $headers;
private $footers;
private $page;
public function __construct() {
$this->headers = array();
$this->footers = array();
}
public function __destruct() {
// hacemos limpieza
}
public function render() {
foreach($this->headers as $header) {
include $header;
}
$this->page->render();
foreach(
$this->footers as $footer) {
include $footer;
}
}
public function addHeader($file) {
$this->headers[] = $file;
}
public function addFooter($file) {
$this->footers[] = $file;
}
public function setPage(cpage $page) {
$this->page = $page;
}
}

Y por otra parte implementaremos la subclase para las páginas.

cpage.php

<?php
class cpage {
private $title;
private $content;
public function __construct($title) {
$this->title = $title;
}
public function __destruct() {
// hacemos limpieza
}
public function render() {
echo "<h1>{$this->title}</h1>";
include("body.php");
echo $this->content;
}
public function setContent($content) {
$this->content = $content;
}
}
?>

Por tanto tenemos dos variables para la clase página, las variables $title y $content.

Hemos de crear un archivo de configuración donde incluiremos información específica del sitio, es algo que hago regularmente y es una buena práctica para almacenar datos que se deben tener en cuenta en todas las páginas de nuestra web.

Esta vez utilizaremos el archivo de configuración para definir la función de inicializar sitio donde agregaremos la cabecera y pie que estarán presentes en todas nuestras páginas.

config.php

<?php
function __autoload($class) {
include "$class.php";
}
function inicializa_sitio(csite $site) {
$site->addHeader("header.php");
$site->addFooter("footer.php");
}
?>

La función de __autoload() cargará las páginas dinamicamente utilizando las clases que hemos definido antes.

Por último tendremos que definir nuestro archivo base index.php donde haremos de $site una instancia de nuestro sitio y llamaremos a la función inicializa_sitio() para prepararla con los datos de configuración básicos de nuestra web. crearemos un objeto página y pasaremos al constructor el título de la página que queramos y a continuación utilizaremos el método setPage() para «pintarla».

index.php

<?php
include 'config.php';
$site = new csite();
// nuestra función
inicializa_sitio($site);
$page = new cpage("Estamos desarrollando nuestra web orientada a objetos");
$site->setPage($page);
$content = "Bienvenidos a nuestra web orientada a objetos";
$page->setContent($content);
$site->render();
?>

Con todo esto ya habremos terminado con lo básico, los archivos header.php, footer.php y body.php son arbitrarios, podemos poner lo que queramos para nuestra web aunque si fuera necesario puedo poner unos de ejemplo.

Un saludo y espero haber sido de ayuda!

About the author

Jaime Mulero Hola! Me llamo Jaime Mulero, soy programador desde hace años, apasionado por la informática prácticamente desde que tengo uso de razón. Jquery Ninja, Codeigniter Trooper, database juggler and Android engineer! Jaime Mulero

VN:F [1.9.20_1166]
Rating: 7.0/10 (3 votes cast)
Desarrollando una sencilla web PHP orientada a objetos., 7.0 out of 10 based on 3 ratings
Difunde la palabra
  • Print
  • Digg
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Yahoo! Buzz
  • Twitter
  • Google Bookmarks
  • Meneame

¿Algo que opinar? Deja tu comentario!