scratch – Blame information for rev 126

Subversion Repositories:
Rev:
Rev Author Line No. Line
126 office 1 <?php
2 /**
3 *
4 * This file is part of the Aura project for PHP.
5 *
6 * @package Aura.Uri
7 *
8 * @license http://opensource.org/licenses/bsd-license.php BSD
9 *
10 */
11 namespace Aura\Uri;
12  
13 /**
14 *
15 * Processing the query string
16 *
17 * @package Aura.Uri
18 *
19 */
20 class Query extends \ArrayObject
21 {
22 /**
23 *
24 * Returns the query portion as a string.
25 *
26 * @return string The query string; e.g., `foo=bar&baz=dib`.
27 *
28 */
29 public function __toString()
30 {
31 return $this->buildString($this->getArrayCopy());
32 }
33  
34 /**
35 *
36 * Sets values from a query string; overwrites any previous values.
37 *
38 * To set from an array, use `exchangeArray()`.
39 *
40 * @param string $spec The query string to use; for example,
41 * `foo=bar&baz=dib`.
42 *
43 * @return void
44 *
45 */
46 public function setFromString($spec)
47 {
48 parse_str($spec, $query);
49 $this->exchangeArray($query);
50 }
51  
52 /**
53 *
54 * Build string from an array
55 *
56 * @param array $array
57 *
58 * @param string $prefix Defaults to null
59 *
60 * @return string Returns a string
61 */
62 protected function buildString(array $array, $prefix = null)
63 {
64 $elem = [];
65 foreach ($array as $key => $val) {
66  
67 $key = ($prefix)
68 ? $prefix . '[' . $key . ']'
69 : $key;
70  
71 if (is_array($val)) {
72 $elem[] = $this->buildString($val, $key);
73 } else {
74 $val = ($val === null || $val === false)
75 ? ''
76 : rawurlencode($val);
77 $elem[] = rawurlencode($key) . '=' . $val;
78 }
79 }
80  
81 return implode('&', $elem);
82 }
83 }