0

そこで、URLからすべてのget変数を格納し、末尾のスペースを削除して、他のメソッドがそれらを使用できるように返すヘルパークラスを構築しています。

問題は、最初の値だけが保存されることです。

URLは次のようになります: https ://pay.paymentgateway.com/index.php?name = xyz&amount = 10.30&checksum = abcd

私のコード出力:配列([名前] => 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);
  }
}

... ここでのループは 1 回だけ実行されます。関数がステートメントにヒットするとすぐに、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 に答える