code: public function createSignedQueryString(
      	$path = '/',
      	$queryString = '',
      	$resource = 'b',
      	$permissions = 'r',
      	$start = '',
      	$expiry = '',
      	$identifier = ''
      ) {
          // Parts
          $parts = array();
          if ($start !== '') {
              $parts[] = 'st=' . urlencode($start);
          }
          $parts[] = 'se=' . urlencode($expiry);
          $parts[] = 'sr=' . $resource;
          $parts[] = 'sp=' . $permissions;
          if ($identifier !== '') {
              $parts[] = 'si=' . urlencode($identifier);
          }
          $parts[] = 'sig=' . urlencode($this->createSignature($path, $resource, $permissions, $start, $expiry, $identifier));
  
          // Assemble parts and query string
          if ($queryString != '') {
              $queryString .= '&';
  	    }
          $queryString .= implode('&', $parts);
  
          return $queryString;
      }
docs: Create signed query string
  
  @param string $path 		   Path for the request
  @param string $queryString  Query string for the request
  @param string $resource     Signed resource - container (c) - blob (b)
  @param string $permissions  Signed permissions - read (r), write (w), delete (d) and list (l)
  @param string $start        The time at which the Shared Access Signature becomes valid.
  @param string $expiry       The time at which the Shared Access Signature becomes invalid.
  @param string $identifier   Signed identifier
  @return string