Ver Mensaje Individual
  #3 (permalink)  
Antiguo 04/10/2005, 08:46
javier_enithost
 
Fecha de Ingreso: septiembre-2005
Mensajes: 30
Antigüedad: 18 años, 7 meses
Puntos: 0
Hola :

Bueno, yo voy a dar mi consideracion.
El uso de patrones de disenno es en realidad una metodologia de como realizar buenas practicas de programacion; no esta limitado nunca a ningun lenguaje en especifico.
Esto no quiere decir que no existan libros o articulos hablando de patrones y su implementacion en PHP, pero insisto, que los patrones que existen son mas bien genericos y representan metodologias de como programar ( a grandes rasgos, no estoy definiendo que cosa es un patron de disenno claro esta ).

Ahora, el uso de los patrones ( que existen muchisimos, he revisado mas de 40 patrones que son bastante utilizados ) en PHP depende del programador y si deberia ser bastante utilizado.

Voy a poner un ejemplo, el patron Singleton y el uso de Factorys se utiliza bastante, aunque no sea demasiado beneficioso para el caso del PHP4 por su propio manejo de clases, pero si se utiliza y aporta mucha flexibilidad y claridad al codigo.

Hay patrones de Acceso a Componentes de Datos ( DAC, similar al manejo que da .NET a este tema ) que al menos yo utilizo 100% de las veces que necesito interactuar con una DB y siempre me resulta muy util, como ademas le aporta flexibilidad, claridad entre otras al codigo, aqui envio un ejemplo:

Factory & DAC :

-> IDACNews [ Esto representa un tipo o interface en el modelo, como en PHP4 no existen tipos o interfaces es algo simblico pero la clase correspondiente presenta estos metodos como significado de implementacion del tipo IDACNews ]
. create ( news )
. read ( news_id )
. get_all_news()
. delete( news_id )

-> Similar para Users y Admins

Código PHP:
    class DAC
    
{
        var 
$db;
        
        function &
create$name$dac_type="mysql" )
        {
          if (
$dac_type == "mysql") {
            switch ( 
$name )
            {
                case 
"news"       : return new MySQLNews(); break;
                case 
"users"      : return new MySQLUsers(); break;
                case 
"admins"     : return new MySQLAdmins(); break;
                ......
                ......
                default           : return 
null; break;
            }             
          }    
          if (
$dac_type == "ws") {
            switch ( 
$name )
            {
                case 
"news"       : return new WSNews(); break;
                case 
"users"      : return new WSUsers(); break;
                case 
"admins"     : return new WSAdmins(); break;
                .....
                .....
                default           : return 
null; break;
            }             
          }    
        }    
    }    

    class 
MySQLNews extends MySQLDAC   //implements IDACNews
    
{
        function 
create$news )
        {
            
$sql =  sprintf"INSERT INTO news ( 0, %s )"$news );
            return 
$this->db->execute_non_query $sqltrue );                }
    
        function 
read$id )
        {
            
$sql "SELECT * FROM news WHERE news_id = %s";
            return 
$this->db->execute_querysprintf$sql$id ) );
        }
        
        function 
get_all_news() {
            
$sql "SELECT * from news";
            return 
$this->db->execute_readersprintf$sql ) );            
        }
        
        function 
delete$id )
        {
            
$sql "DELETE FROM news WHERE news_id = %s";
            
$this->db->execute_non_querysprintf$sql$id ) );            
        }
    
        function 
MySQLNews(){ parent::MySQLDAC(); }
    } 
.. Similar para Users y Admins

Espero que les haya sido util.

Saludos
__________________
Alojamiento Web - Alojamiento web y Servidores dedicados. Servidores en USA y Londres.
Hosting,PHP,Java,CSS,SEO BLOG - Web Hosting, Posicionamiento Web, Programacion en PHP, Java, CSS y mucho mas.