Retroceder   Foros del Web > Programación para sitios web > PHP > PHP orientado a objetos

Respuesta
 
Herramientas Desplegado
Antiguo 11-feb-2008, 12:24   #1 (permalink)
Fher está en el buen camino
 
Avatar de Fher
 
Fecha de Ingreso: febrero-2003
Ubicación: En algun lugar de cancun
Mensajes: 361
De acuerdo Critica, aportacion, Sobre patron de diseño OOP que medio diseñe

Hola a todos realmente, mas o menos programo en objetos en aspx pero ahora el trabajo me ha llevado a php por que el hosting es mas economico y con 1000 dolares al año obtienes mas en un hostin linux que uno windows ,pero no entrare a discusion solo es un comentario jeje

hace algun tiempo programaba en capas en aspx y pues me gusto esto y he hice un diseño parecido en php para mis aplicaciones y consta de lo siguiente..

primero tengo mi selector de base de datos , donde defino mi base de datos que voy a ocupar, usuarios, passwords ... este lo pongo en un archivo llamado database.php

-----------------------------------------------------------------------
Código:
class DataBaseClass
{

	var $database_name= 'base de datos;
	var $database_user= "usuario;
	var $database_pass= "password";
	var $database_host= "localhost";
	var $database_conexion;

    
        // funcion conectar
	function connect()
	{
		$this->database_conexion= mysql_connect($this->database_host, $this->database_user, $this->database_pass) or die("Could not make connection to MySQL");
		mysql_select_db($this->database_name) or die ("Could not open database: ". $this->database_name);
	}

	//funcion desconetar
   function disconnect()
	{
		if(isset($this->database_conexion))
		{
			mysql_close($this->database_conexion);
		}
		else
		{
			mysql_close();
		}
	}

       //funcion para ejecutar un query de SELECT, cuando le mando $RowD=True
// solo recojo un valor es es solo para obtener un valor

	function query($qry, $RowD=false)
	{
		if(!isset($this->database_conexion))
		{
			$this->connect();
		}

		$result = mysql_query($qry, $this->database_conexion) or die("Error: ". mysql_error());

		if ($RowD==false)
		{
			$returnArray = array();
			$i=0;
			while ($row = mysql_fetch_array($result, MYSQL_BOTH))
			{
				if ($row)
				{
					$returnArray[$i++]=$row;
				}
			}

		}

		else
		{
			$returnArray=mysql_fetch_row($result);
		}
		mysql_free_result($result);
		return $returnArray;
	}

       //funcion para ejecutar cualquier Query, de preferencia Update, Insert, Delete

	function QueryExecute($qry)
	{

		if(!isset($this->database_conexion))
		{
			$this->connect();
		}

		$result = mysql_query($qry, $this->database_conexion) or die("Error: ". mysql_error());
       
		return $result;
		

	}
	
        //funcion extra, para ejecutar numero de rows
	function NumRows($qry)
	{

		if(!isset($this->database_conexion))
		{
			$this->connect();
		}

		$result = mysql_query($qry, $this->database_conexion) or die("Error: ". mysql_error());

		$Total = mysql_num_rows($result);
		return $Total;

	}
}
----------------------------------------------------------

ahora tengo 2 archivos mas..
archivo 2 llamado DAL.php el Cual tengo todos mis querys y hace funcion para mandar mi querys a la base de datos y conectarse con database.php por herencia

Código:
archivo DAL.php

include("database.php");


/**
 * Clase de la capa DAL para ejecutar consultas a la base de datos
 * archivo que incluyo database.php
 * 
**/


class ClaseDall extends DataBaseClass {


	

	/**
	 * Constructor
	 */
	

	function __construct(){

	
	}
	
	/**
	 * Funciones privadas ""
	 */
	//-----------------------------------------------------------

	private function GetSomethinSelect()
	{
		$_sSQL ="SELECT * FROM tabla";
		return $_sSQL;
	}


// Funciones publicas
// Aqui pongo todas mis funciones que requiero conectar con la base de datos

	public function GetSomething($id)
	{
		
		$sSQL.= $this->GetSomethinSelect();
		
		$sSQL.=" WHERE IdField = ''$id " ;
		
               // aqui envio un select por eso ocupo query
		$Array = $this->query($sSQL);
		return $Array;
	}


}
-----------------------------------------------------------------------------------
--------------------------------------------------------------------------------

Archivo 1 BLL.php .. Esta es mi capa logica donde hago todas las operaciones logicas y etc... su funcion es pasarle datos a DAll por herencia y hacer operaciones , aqui es donde se hace, todo el trabajo sucio de IF, whiles, sumas, restas


Código:
include("Dall.php");


class Clasebll extends ClaseDall  {
	

	
	function __construct(){
		
		
	}

	public function GetGiveSomething($id)
	{
		$value= $this->GetSomething($id);
		return $value;
	}

}

y ya en mi interface osea en mi archivo.php, solo mando a llamar lo que obtuve de BLL


<?
include('lib/Bll.php')

$Classeinterface = new Clasebll();

//para obtener datos de BLL solo haces..

$id = 1;

$Arreglo = $Classeinterface ->GetGiveSomething($id)


foreach($Arreglo as $Row)

{

$Row['campo']

}

?>
-------------------------------------------


De esta manera he separado por capas mi desarrollo y ya cada capa es independiente una de la otra, en caso de que yo quiere hacer alguna operación solo voy a mi capa correspondiente y automáticamente los cambios se veran reflejados en todo.

criticas buenas y malas, sugerencias, como mejorar el código, aportes y la verdad trabajar de esta forma se me hace muy comodo ya que no ocupo el llamado MVC, y hago esto para hacer una programación mas accesible y usable ( jeje no solo lo aplico a la web) y he llegado a los mismos resultados con este modelo y es eficiente..

que dicen ustedes venga el debate....
__________________
solo firma
Fher está desconectado   Responder Citando
Antiguo 15-feb-2008, 19:48   #2 (permalink)
Bellenger ha deshabilitado el karma
 
Avatar de Bellenger
 
Fecha de Ingreso: noviembre-2004
Ubicación: Lima Peru
Mensajes: 538
Enviar un mensaje por MSN a Bellenger Enviar un mensaje por Skype™ a Bellenger
Alegría Re: Critica, aportacion, Sobre patron de diseño OOP que medio diseñe

Ummm, interesante, y creo que para empezar...
Deberias trabajar basado el OO, en PHP 5, y no en el 4, pues este aunque aun muchos lo utilizan, muy pronto dejara de tener soporte asi que todas las aplicaciones tendran que basarse en php5 hacia adelante...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
Bellenger está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 01:32.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93