| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- <?php
- namespace Joypack\Tencent\Map;
- /**
- * 腾讯位置服务
- * 公共参数
- */
- class Option
- {
- const OUTPUT_JSON = 'json';
- const OUTPUT_JSONP = 'jsonp';
-
- protected $option = [];
-
- protected $secret;
-
- public function __construct($key=null, $secret=null)
- {
- $this->setKey($key);
- $this->setSecret($secret);
- }
-
- public function setSecret($value)
- {
- $this->secret = $value;
- }
-
- /**
- * 开发密钥
- * @param string $value
- */
- public function setKey($value)
- {
- $this->option['key'] = $value;
- }
-
- /**
- * 返回格式:支持JSON/JSONP,默认JSON
- * @param string $value
- */
- public function setOutput($value=self::OUTPUT_JSON)
- {
- $this->option['output'] = $value;
- }
-
- /**
- * JSONP方式回调函数
- * @param string $value
- */
- public function setCallback($value)
- {
- $this->option['callback'] = $value;
- }
-
- /**
- * 签名
- * @param string $uri
- */
- public function setSig($uri)
- {
- $this->option['sig'] = $this->buildSig($uri, $this->getAll());
- }
-
- /**
- * 获得所有参数
- * @return array
- */
- public function getAll()
- {
- return $this->option;
- }
-
- /**
- * 生成签名
- * @param string $uri
- * @return string
- */
- protected function buildSig($uri, $option)
- {
- ksort($option);
-
- $pieces = [];
- foreach ($option as $key => $val)
- {
- $pieces[] = "{$key}={$val}";
- }
-
- $str = sprintf('%s?%s', rtrim($uri, '/'), implode('&', $pieces));
-
- /*
- echo '<pre>';
- print_r("{$str}{$this->secret}");
- die;
- //*/
-
- return md5("{$str}{$this->secret}");
- }
- }
|