Foros del Web » Programando para Internet » PHP »

Desacoplando Scripts de Arrays Get, Post, etc

Estas en el tema de Desacoplando Scripts de Arrays Get, Post, etc en el foro de PHP en Foros del Web. Hola a todos, Como la mayoria sabrá a partir de PHP 4.1 los arrays para las variables pasadas por GET, POST y demas arreglos. Este ...
  #1 (permalink)  
Antiguo 20/08/2003, 23:39
Nok
 
Fecha de Ingreso: abril-2001
Mensajes: 302
Antigüedad: 16 años, 7 meses
Puntos: 0
Desacoplando Scripts de Arrays Get, Post, etc

Hola a todos,

Como la mayoria sabrá a partir de PHP 4.1 los arrays para las variables pasadas por GET, POST y demas arreglos. Este problema si bien no es grande, puede presentarse en el futuro y creo conveniente adaptar nuestros scripts desde ahora para qeu en un futuro no sea tan dramatico el cambio.
A continuacion presento una posible solucion, quiesiera saber cual es su opionion al respecto y si quieren hacer un aporte, sera bienvenido.

Nota: solo se toman los arrays get, post, y server los demas se tratan de la misma manera.

Muchas gracias por su atencion.
Saludos.
Nok



Código PHP:
<?php

    
/*
        Clase AccesoUrl
        Desacople de Scripts <-> Arrays asociativos (GET, POST, etc..)
    */
    
class AccesoUrl {

        
// Donde se contiene el obj segun versión
        
var $_phpvars;

        function 
AccesoUrl() {
        
//
            //Verifico version
            
$version explode('.'phpversion());
            
//Genero el Obj requerido.
            
if($version[0] >= AND $version[1] >= 1){
            
//
                
$this->_phpvars = &new Url_4_1();
            }
            else {
                
$this->_phpvars = &new Url_4_0();
            }
        }

        
//Obtengo la variable $var del metodo get.
        
function get($var) {
        
//
            
return $this->_phpvars->get($var);
        }
        
        
//Obtengo la variable $var del metodo post.
        
function post($var) {
        
//
            
return $this->_phpvars->post($var);
        }
        
        
//Obtengo la variable $var del server.
        
function server($var) {
        
//
            
return $this->_phpvars->server($var);
        }
    }
    
    
// Para version de PHP 4.1.x o posteriores
    
class Url_4_1 {

         function 
get($var) {
        
//
            
return $_GET[$var];
        }

        function 
post($var) {
        
//
            
return $_POST[$var];
        }

        function 
server($var) {
        
//
            
return $_SERVER[$var];
        }
    }
    
    
// Para version de PHP 4.0.x o anteriores
    
class Url_4_0 {

        
         function 
get($var) {
        
//
            
global $HTTP_GET_VARS;
            return 
$HTTP_GET_VARS[$var];
        }

        function 
post($var) {
        
//
            
global $HTTP_POST_VARS;
            return 
$HTTP_POST_VARS[$var];
        }

        function 
server($var) {
        
//
            
global $HTTP_SERVER_VARS;
            return 
$HTTP_SERVER_VARS[$var];
        }
    }
?>
__________________
La casa de Noktemplate.
Zonaphp.com - Php en español.

¿Que esperas de NokTpl 2? Deja tu comentario.

Blog
Mas o menos asi .
  #2 (permalink)  
Antiguo 21/08/2003, 10:26
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 16 años, 1 mes
Puntos: 68
Excelente Clase Nok!!! como se me pasó por alto este post? (:P)

Me parece muy buena la idea de separar el acceso a los Arrays Globales de datos (desacoplar sería el término adecuado), no solo ya para evitar los problemas de compatibilidad entre versiones de PHP, sino ya para poder agregarle funcionalidades extras, para un mejor control de las entradas.

Yo personalmente, aparte de las variables _SERVER, hubiera puesto las _REQUEST, o en su defecto las _FILES, para tener una interfase comun de acceso a las mismas, y de paso, poder controlar ( en el constructor o donde más le guste ) si las magic_quotes_gpc están seteadas o no, de manera que si están seteadas, no hacer nada, pero si no lo están, escapar los datos para saber que contamos con datos seguros.

Y otra ventaja de tener objetos así, ahora que lo pienso, es la de extenderlos ( en el sentido que extends nos da ) e implementar seguridad sobre los mismos, de modo que solo algunas variables puedan ser accedidas dependiendo del nivel de usuario... que se yo... para algo puede llegar a servir

Muy buena idea Nok. !
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #3 (permalink)  
Antiguo 22/08/2003, 10:08
Nok
 
Fecha de Ingreso: abril-2001
Mensajes: 302
Antigüedad: 16 años, 7 meses
Puntos: 0
Muy Buen aporte

Gracias Webstudio, muchas gracias por tus comentarios y tienes razon en el potencial que tienen, no lo habia pensado en un principio, pero ahora que lo mencionaste se abren muchas mas opciones.



Muchas Gracias.
Saludos
Nok

Espero mas comentarios...
__________________
La casa de Noktemplate.
Zonaphp.com - Php en español.

¿Que esperas de NokTpl 2? Deja tu comentario.

Blog
Mas o menos asi .
  #4 (permalink)  
Antiguo 22/08/2003, 10:15
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Y que tal esto???

Código PHP:
extract ($_GET);
extract ($_POST);
extract ($_SERVER); 


Mas simple, no?
__________________
Manoloweb
  #5 (permalink)  
Antiguo 22/08/2003, 10:28
Nok
 
Fecha de Ingreso: abril-2001
Mensajes: 302
Antigüedad: 16 años, 7 meses
Puntos: 0
Bien, creo que deberiamos separar en dos aspectos, por un lado lo que es "practico" y por otro lo que esta "bien", es reusable, extensible.
Si bien, la solucion de Manoloweb es practica, nose hasta que punto es reusable o extensible, ya que esta limitando el script a la funcion extract(), si en un futuro esta funcion cambiará o los arrays cambiaran, tendriamos que cambiar todos nuestros scripts de la misma manera.

Lo que se busca es desacoplar el script lo mas posible, para lograr asi su mejor reutilizacion.

Saludos y Gracias por tu comentario.

Nok
__________________
La casa de Noktemplate.
Zonaphp.com - Php en español.

¿Que esperas de NokTpl 2? Deja tu comentario.

Blog
Mas o menos asi .
  #6 (permalink)  
Antiguo 22/08/2003, 11:40
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 16 años, 1 mes
Puntos: 68
Manoloweb, lo siento, pero tu opción lo único que logra es volver a hacer al PHP todo lo inseguro que era antes de la versión 4.1.
La idea es ir hacia adelante, no hacia atrás.

Saludos.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #7 (permalink)  
Antiguo 22/08/2003, 13:18
Avatar de chubu  
Fecha de Ingreso: enero-2002
Ubicación: Buenos Aires
Mensajes: 133
Antigüedad: 15 años, 10 meses
Puntos: 0
Nok, me parece excelente la idea, y Pablo tiene razón, hay muchas cosas que se pueden implementar sobre eso...

Que bien me hubiera venido esto hace unos meses, me habría ahorrado varios dolores de cabeza

salutes
__________________
:pensando:hay algo mal que no anda bien
  #8 (permalink)  
Antiguo 22/08/2003, 20:37
Avatar de MSDark  
Fecha de Ingreso: noviembre-2002
Ubicación: Talca VII región
Mensajes: 337
Antigüedad: 15 años, 1 mes
Puntos: 1
para los requeste seria?

function request($var) {
//
return $_REQUEST[$var];
}


y la otra

function request($var) {
//
global $HTTP_REQUEST_VARS;
return $HTTP_REQUEST_VARS[$var];
}

es que quiero completarlo con todas las variables , es decir, $_SESSION, $_COOKIE, etc


Saludos
!Excelente!
__________________
DelirioLinux.. Software Libre y tecnología.. php también..
Saludos :arriba:
Usuario Linux #198486 y Ubuntu #12791
Gutsy Gibbon
  #9 (permalink)  
Antiguo 25/08/2003, 13:41
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 16 años, 1 mes
Puntos: 68
De hecho, ahora que lo pienso y lo estoy repensando, algo asi voy a necesitar para el FrameWork que estoy diseñando, ya que de esta manera, puedo incluso abstraer los datos a los que accede mi script, sin saber si son precisamente desde parámetros GET/POST o incluso, desde un Remote Procedure Call con XML o SOAP o lo que venga en gana. Incluso, hasta podría abstraer los parámetros pasamos por línea de comandos a un script PHP llamado por shell script o similar, o con PHP-CLI.

Y claro, que este tipo de objetos, también pueden abstraerse para poder trabajar, no ya con los tipos de datos simples, sino para serializar objetos o arrays, y que esta serialización/deserialización sea transparente para el usuario.

Saludos.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
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 17:13.