Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Patrones

Estas en el tema de Patrones en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola me gustaría me presten direcciones de sitios que hablen/expliquen en español sobre patrones de diseño orientado a PHP. Saludos y gracias...
  #1 (permalink)  
Antiguo 27/08/2007, 10:05
 
Fecha de Ingreso: abril-2003
Ubicación: Córdoba
Mensajes: 160
Antigüedad: 21 años
Puntos: 0
Patrones

Hola me gustaría me presten direcciones de sitios que hablen/expliquen en español sobre patrones de diseño orientado a PHP.

Saludos y gracias
__________________
-----------------
_
__|_|__
º(-_-)º
  #2 (permalink)  
Antiguo 29/08/2007, 11:10
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 20 años, 5 meses
Puntos: 2
Re: Patrones

mirá, es complicado el tema... lo más completo que encontré es esta colección de patrones pero está en inglés.

luego hay muy buenos artículos en el blog de GatorV que sí son en español, basados en CakePHP (creo) :)

luego, el resto de contenidos en español que encontré son sólo blogs basura donde nada se explica y nada se desarrolla... son simples links a fuentes en inglés

si alguien encuentra buenos contenidos en español... avise!
  #3 (permalink)  
Antiguo 29/08/2007, 13:59
 
Fecha de Ingreso: abril-2003
Ubicación: Córdoba
Mensajes: 160
Antigüedad: 21 años
Puntos: 0
Re: Patrones

Gracias Nacho, justo ayer estuve mirando el blog de GatorV, algo me aclaro, y otro poco me marió mas, mas que nada porque estoy empezando recién con POO (como la mayoría parece).

Una pregunta? cuando uno aplica un patrón Singleton a una clase de conexión a base de datos, lo que busca es que se instancie solo una en una misma petición de pagina o se busca mantener esa instancia durante toda la session digamos. Mas allá de que se pueda o no hacer de las dos formas, mi pregunta es que se busca básicamente.

Alguien me podria poner un ejmplo de una clase para el manejo de la base de datos y que implemente el singleton. Vi varios por ahi pero no logro terminar de entenderlos. Por ejemplo en el blog de GatorV en el patron ActiveTable veo que utiliza

$this->_db = DB::getInstance();

me imagino que ahi esta usando singleton, me gustaria ver como es esa clase...

gracias
__________________
-----------------
_
__|_|__
º(-_-)º
  #4 (permalink)  
Antiguo 29/08/2007, 14:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Patrones

La clase esta ahi publicada:
Código PHP:
class DB extends PDO {
    private static 
$_instance null;

    private function 
__construct() {
        
// Obtenemos el Config desde un array, clase config etc:
        
$config Config::getInstance();
        
$db $config->DBName;
        
$user $config->UserName;
        
$pwd $config->Password;
        
        
$attrs = array();
        
$dsn 'mysql:host=localhost;dbname=' $db;
        
        
parent::__construct$dsn$user$pwd$attrs );
        
$this->setAtributePDO::ATTR_ERRMODEPDO::ERR_MODE_EXCEPTION );
    }

    public static function 
getInstance() {
        if( 
self::$_instance == null ) {
            
self::$_instance = new self();
        }
        
        return 
self::$_instance;
    }

Por la naturaleza de PHP el patron Singleton se limita al request actual ya que al terminar la pagina el objeto es destruido y en tu siguiente llamado es creado nuevamente.

Aunque te ayuda el solo tener 1 objeto en todas tus operaciones ya que asi garantizas que estas hablando solo del mismo objeto.

Saludos.
  #5 (permalink)  
Antiguo 29/08/2007, 15:34
 
Fecha de Ingreso: abril-2003
Ubicación: Córdoba
Mensajes: 160
Antigüedad: 21 años
Puntos: 0
Re: Patrones

A ver, si yo tengo esta clase asi (clase que hice yo y no se que tan ventajosa es o si no estoy haciendo algo estupido, por favor me lo dicen), estoy aplicando el singleton?

y para usarla me alcanzaría con esto?

$DB::getInstance();

$DB->consulta("select.....");

es así?

Código PHP:
<?
class DB extends mysqli
{
    private 
$query;
    private 
$errores;
    private static 
$_instance null;
    
    function 
__construct()
    {
        
parent::__construct("localhost""user""pass""base");
        
$this->errores();
    }
    
    public static function 
getInstance()
    {
        if( 
self::$_instance == null ) {
            
self::$_instance = new self();
        }
        return 
self::$_instance;
    }
    
    function 
__destruct() {
        
parent::close();
       }
    
    function 
consulta($consulta)
    {
        
$this->query parent::query($consulta);
        
$this->errores();
    }
    
    function 
Fetch()
    {
        if(
$this->query != NULL)
        {
            return 
$this->query->fetch_array(MYSQLI_ASSOC);
        }
        
$this->errores();
    }
    
    function 
actualizar($consulta)
    {
        
$query parent::query($consulta);
        
$this->errores();
        return;
    }    
    
    function 
numRegistros()
    {
        return 
$this->query->num_rows;
    }
    
    private function 
errores()
    {
        if (
$this->errno)
        {
            echo 
$this->errores "ERROR: \n".$this->error;
            return ;
        }
    }
    
}
?>
__________________
-----------------
_
__|_|__
º(-_-)º
  #6 (permalink)  
Antiguo 29/08/2007, 15:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Patrones

Seria mas que nada asi:
Código PHP:
$db DB::getInstance();
$db->consulta("select....."); 
Como tip adicional te recomiendo que a todas tus funciones declares si son o no publicas, privadas o protegidas.

Saludos.
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 06:24.