0

所以我正在构建一个帮助类,它将存储来自 url 的所有 get 变量,删除尾随空格并将其返回,以便其他方法可以使用它们。

问题是只有第一个值被存储。

网址如下所示: https ://pay.paymentgateway.com/index.php?name=xyz&amount=10.30&checksum=abcd

我的代码输出: Array ( [name] => xyz )

我的代码:

class helperboy
{

  protected $cleanvariables = array(); 

  public function store_get_variables($_GET)
    {

       foreach ($_GET as $key => $value)
          {
            return $this->cleanvalues[$key] = trim($value);
           }
    }

  protected function display_variables()
    {
      echo "<pre>";
      print_r($this->cleanvalues);
    }
 }

我知道我在做一些愚蠢的事情,我将不胜感激。

另外,我如何在我的其他方法中访问这样的特定变量。:

$this->cleanvalues['name'];
$this->cleanvalues['amount'];
$this->cleanvalues['checksum'];
4

2 回答 2

2

你的退货声明是问题....

class helperboy
{

  protected $cleanvariables = array(); 

  public function store_get_variables($_GET)
  {

   foreach ($_GET as $key => $value)
      {
         $this->cleanvalues[$key] = trim($value);
       }
   return $this->cleanvalues;
  }

 protected function display_variables()
  {
  echo "<pre>";
  print_r($this->cleanvalues);
 }
}
于 2012-09-17T13:12:43.307 回答
1

嗯,问题是……

public function store_get_variables($_GET)
{
  foreach ($_GET as $key => $value)
  {
    return $this->cleanvalues[$key] = trim($value);
  }
}

...这里的循环将只执行一次。一旦函数命中return语句,它将中止此循环 - 并立即返回。

然而,我认为这里存在一些更大的问题。首先,我不赞成某个无所不能的助手类的想法,它了解每个人的一切。如果您打算使用一些cleaner请求参数,为什么不只是“对象化”它:

class My_Http_Request
{
  private $request;
  protected function fillGetParams() {
    $this->request['get'] = array_map('trim', $_GET);
  }
  public function getTrimmedParam($name) {
    return $this->request['get'][$name];
  }
  public function __construct() {
    $this->fillGetParams();
  }
}

这只是一个想法,而不是现成的实现(不检查丢失的元素,如果在没有任何参数的情况下调用 'getTrimmedParam' 方法,则不返回所有参数等。

于 2012-09-17T13:12:15.790 回答