Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks y PHP orientado a objetos (http://www.forosdelweb.com/f68/)
-   -   Critica, aportacion, Sobre patron de diseño OOP que medio diseñe (http://www.forosdelweb.com/f68/critica-aportacion-sobre-patron-diseno-oop-que-medio-disene-556063/)

Fher 11/02/2008 13:24

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 :patada:

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....:neurotico:neurotico:neurotico:neurotico :neurotico:neurotico

Bellenger 15/02/2008 20:48

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...:patada:


La zona horaria es GMT -6. Ahora son las 11:46.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.