A veces tenemos que mantener el QueryString entre varias páginas, pero cambiar algún valor según en qué enlace pulses, pues esta clase lee el QueryString y te facilita variarlo y obtenerlo nuevamente como un String.
Es una lástima que PHP 4.x no tenga polimorfismo, "toStringWith" es una marranada.
class QueryString {
var $aParams = array();
function QueryString() {
}
function readURL() {
$this->aParams = $_GET;
}
// Establece el valor $v del parámetro $k
function setParam($k, $v) {
$this->aParams[$k] = $v;
}
// Establece el valor de varios parámetros
// enviados en un array asociativo
function setParams($pp) {
while(list($k, $v)=each($pp)) {
$this->aParams[$k] = $v;
}
}
// Establece el valor $v del parámetro $k si este no existe
function setDefault($k, $v) {
if(!isset($this->aParams[$k])) {
$this->aParams[$k] = $v;
}
}
// Establece el valor de varios parámetros
// enviados en un array asociativo si estos no existen
function setDefaults($pp) {
while(list($k, $v)=each($pp)) {
if(!isset($this->aParams[$k])) {
$this->aParams[$k] = $v;
}
}
}
// Devuelve el QueryString como un String
function toString() {
$retval = "";
while(list($k, $v)=each($this->aParams)) {
$retval .= $k."=".$v."&";
}
return ($retval!=""? "?":"").substr($retval, 0, -1);
}
// Devuelve el QueryString con los parámetros indicados en el array $pp
// pero no modifica el estado de la clase
function toStringWith($pp) {
$retval = "";
$aParams = $this->aParams;
while(list($k, $v)=each($pp)) {
$aParams[$k] = $v;
}
while(list($k, $v)=each($aParams)) {
$retval .= $k."=".$v."&";
}
return ($retval!=""? "?":"").substr($retval, 0, -1);
}
// Devuelve el QueryString sin los parámetros indicados en el array $pp
// pero no modifica el estado de la clase
function toStringWithout($pp) {
$retval = "";
$aParams = $this->aParams;
while(list($a, $k)=each($pp)) {
unset($aParams[$k]);
}
while(list($k, $v)=each($aParams)) {
$retval .= $k."=".$v."&";
}
return ($retval!=""? "?":"").substr($retval, 0, -1);
}
}