You are here

class Uri in Zircon Profile 8

Same name in this branch
  1. 8 vendor/zendframework/zend-diactoros/src/Uri.php \Zend\Diactoros\Uri
  2. 8 vendor/zendframework/zend-feed/src/Uri.php \Zend\Feed\Uri
  3. 8 vendor/guzzlehttp/psr7/src/Uri.php \GuzzleHttp\Psr7\Uri
  4. 8 core/lib/Drupal/Core/TypedData/Plugin/DataType/Uri.php \Drupal\Core\TypedData\Plugin\DataType\Uri
Same name and namespace in other branches
  1. 8.0 vendor/zendframework/zend-feed/src/Uri.php \Zend\Feed\Uri

Hierarchy

  • class \Zend\Feed\Uri

Expanded class hierarchy of Uri

13 files declare their use of Uri
AbstractFeed.php in vendor/zendframework/zend-feed/src/Writer/AbstractFeed.php
Atom.php in vendor/zendframework/zend-feed/src/Writer/Renderer/Entry/Atom.php
Callback.php in vendor/zendframework/zend-feed/src/PubSubHubbub/Subscriber/Callback.php
Deleted.php in vendor/zendframework/zend-feed/src/Writer/Deleted.php
Entry.php in vendor/zendframework/zend-feed/src/Writer/Entry.php

... See full list

1 string reference to 'Uri'
core.data_types.schema.yml in core/config/schema/core.data_types.schema.yml
core/config/schema/core.data_types.schema.yml

File

vendor/zendframework/zend-feed/src/Uri.php, line 12

Namespace

Zend\Feed
View source
class Uri {

  /**
   * @var string
   */
  protected $fragment;

  /**
   * @var string
   */
  protected $host;

  /**
   * @var string
   */
  protected $pass;

  /**
   * @var string
   */
  protected $path;

  /**
   * @var int
   */
  protected $port;

  /**
   * @var string
   */
  protected $query;

  /**
   * @var string
   */
  protected $scheme;

  /**
   * @var string
   */
  protected $user;

  /**
   * @var bool
   */
  protected $valid;

  /**
   * Valid schemes
   */
  protected $validSchemes = [
    'http',
    'https',
    'file',
  ];

  /**
   * @param  string $uri
   */
  public function __construct($uri) {
    $parsed = parse_url($uri);
    if (false === $parsed) {
      $this->valid = false;
      return;
    }
    $this->scheme = isset($parsed['scheme']) ? $parsed['scheme'] : null;
    $this->host = isset($parsed['host']) ? $parsed['host'] : null;
    $this->port = isset($parsed['port']) ? $parsed['port'] : null;
    $this->user = isset($parsed['user']) ? $parsed['user'] : null;
    $this->pass = isset($parsed['pass']) ? $parsed['pass'] : null;
    $this->path = isset($parsed['path']) ? $parsed['path'] : null;
    $this->query = isset($parsed['query']) ? $parsed['query'] : null;
    $this->fragment = isset($parsed['fragment']) ? $parsed['fragment'] : null;
  }

  /**
   * Create an instance
   *
   * Useful for chained validations
   *
   * @param  string $uri
   * @return self
   */
  public static function factory($uri) {
    return new static($uri);
  }

  /**
   * Retrieve the host
   *
   * @return string
   */
  public function getHost() {
    return $this->host;
  }

  /**
   * Retrieve the URI path
   *
   * @return string
   */
  public function getPath() {
    return $this->path;
  }

  /**
   * Retrieve the scheme
   *
   * @return string
   */
  public function getScheme() {
    return $this->scheme;
  }

  /**
   * Is the URI valid?
   *
   * @return bool
   */
  public function isValid() {
    if (false === $this->valid) {
      return false;
    }
    if ($this->scheme && !in_array($this->scheme, $this->validSchemes)) {
      return false;
    }
    if ($this->host) {
      if ($this->path && substr($this->path, 0, 1) != '/') {
        return false;
      }
      return true;
    }

    // no host, but user and/or port... what?
    if ($this->user || $this->port) {
      return false;
    }
    if ($this->path) {

      // Check path-only (no host) URI
      if (substr($this->path, 0, 2) == '//') {
        return false;
      }
      return true;
    }
    if (!($this->query || $this->fragment)) {

      // No host, path, query or fragment - this is not a valid URI
      return false;
    }
    return true;
  }

  /**
   * Is the URI absolute?
   *
   * @return bool
   */
  public function isAbsolute() {
    return $this->scheme !== null;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
Uri::$fragment protected property
Uri::$host protected property
Uri::$pass protected property
Uri::$path protected property
Uri::$port protected property
Uri::$query protected property
Uri::$scheme protected property
Uri::$user protected property
Uri::$valid protected property
Uri::$validSchemes protected property Valid schemes
Uri::factory public static function Create an instance
Uri::getHost public function Retrieve the host
Uri::getPath public function Retrieve the URI path
Uri::getScheme public function Retrieve the scheme
Uri::isAbsolute public function Is the URI absolute?
Uri::isValid public function Is the URI valid?
Uri::__construct public function