You are here

class Runtime in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/sebastian/environment/src/Runtime.php \SebastianBergmann\Environment\Runtime

Utility class for HHVM/PHP environment handling.

Hierarchy

  • class \SebastianBergmann\Environment\Runtime

Expanded class hierarchy of Runtime

5 files declare their use of Runtime
CodeCoverage.php in vendor/phpunit/php-code-coverage/src/CodeCoverage.php
Default.php in vendor/phpunit/phpunit/src/Util/PHP/Default.php
Renderer.php in vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer.php
TestRunner.php in vendor/phpunit/phpunit/src/TextUI/TestRunner.php
Windows.php in vendor/phpunit/phpunit/src/Util/PHP/Windows.php

File

vendor/sebastian/environment/src/Runtime.php, line 16

Namespace

SebastianBergmann\Environment
View source
class Runtime {

  /**
   * @var string
   */
  private static $binary;

  /**
   * Returns true when Xdebug is supported or
   * the runtime used is PHPDBG (PHP >= 7.0).
   *
   * @return bool
   */
  public function canCollectCodeCoverage() {
    return $this
      ->hasXdebug() || $this
      ->hasPHPDBGCodeCoverage();
  }

  /**
   * Returns the path to the binary of the current runtime.
   * Appends ' --php' to the path when the runtime is HHVM.
   *
   * @return string
   */
  public function getBinary() {

    // HHVM
    if (self::$binary === null && $this
      ->isHHVM()) {
      if ((self::$binary = getenv('PHP_BINARY')) === false) {
        self::$binary = PHP_BINARY;
      }
      self::$binary = escapeshellarg(self::$binary) . ' --php';
    }

    // PHP >= 5.4.0
    if (self::$binary === null && defined('PHP_BINARY')) {
      self::$binary = escapeshellarg(PHP_BINARY);
    }

    // PHP < 5.4.0
    if (self::$binary === null) {
      if (PHP_SAPI == 'cli' && isset($_SERVER['_'])) {
        if (strpos($_SERVER['_'], 'phpunit') !== false) {
          $file = file($_SERVER['_']);
          if (strpos($file[0], ' ') !== false) {
            $tmp = explode(' ', $file[0]);
            self::$binary = escapeshellarg(trim($tmp[1]));
          }
          else {
            self::$binary = escapeshellarg(ltrim(trim($file[0]), '#!'));
          }
        }
        elseif (strpos(basename($_SERVER['_']), 'php') !== false) {
          self::$binary = escapeshellarg($_SERVER['_']);
        }
      }
    }
    if (self::$binary === null) {
      $possibleBinaryLocations = array(
        PHP_BINDIR . '/php',
        PHP_BINDIR . '/php-cli.exe',
        PHP_BINDIR . '/php.exe',
      );
      foreach ($possibleBinaryLocations as $binary) {
        if (is_readable($binary)) {
          self::$binary = escapeshellarg($binary);
          break;
        }
      }
    }
    if (self::$binary === null) {
      self::$binary = 'php';
    }
    return self::$binary;
  }

  /**
   * @return string
   */
  public function getNameWithVersion() {
    return $this
      ->getName() . ' ' . $this
      ->getVersion();
  }

  /**
   * @return string
   */
  public function getName() {
    if ($this
      ->isHHVM()) {
      return 'HHVM';
    }
    elseif ($this
      ->isPHPDBG()) {
      return 'PHPDBG';
    }
    else {
      return 'PHP';
    }
  }

  /**
   * @return string
   */
  public function getVendorUrl() {
    if ($this
      ->isHHVM()) {
      return 'http://hhvm.com/';
    }
    else {
      return 'http://php.net/';
    }
  }

  /**
   * @return string
   */
  public function getVersion() {
    if ($this
      ->isHHVM()) {
      return HHVM_VERSION;
    }
    else {
      return PHP_VERSION;
    }
  }

  /**
   * Returns true when the runtime used is PHP and Xdebug is loaded.
   *
   * @return bool
   */
  public function hasXdebug() {
    return ($this
      ->isPHP() || $this
      ->isHHVM()) && extension_loaded('xdebug');
  }

  /**
   * Returns true when the runtime used is HHVM.
   *
   * @return bool
   */
  public function isHHVM() {
    return defined('HHVM_VERSION');
  }

  /**
   * Returns true when the runtime used is PHP without the PHPDBG SAPI.
   *
   * @return bool
   */
  public function isPHP() {
    return !$this
      ->isHHVM() && !$this
      ->isPHPDBG();
  }

  /**
   * Returns true when the runtime used is PHP with the PHPDBG SAPI.
   *
   * @return bool
   */
  public function isPHPDBG() {
    return PHP_SAPI === 'phpdbg' && !$this
      ->isHHVM();
  }

  /**
   * Returns true when the runtime used is PHP with the PHPDBG SAPI
   * and the phpdbg_*_oplog() functions are available (PHP >= 7.0).
   *
   * @return bool
   */
  public function hasPHPDBGCodeCoverage() {
    return $this
      ->isPHPDBG() && function_exists('phpdbg_start_oplog');
  }

}

Members

Namesort descending Modifiers Type Description Overrides
Runtime::$binary private static property
Runtime::canCollectCodeCoverage public function Returns true when Xdebug is supported or the runtime used is PHPDBG (PHP >= 7.0).
Runtime::getBinary public function Returns the path to the binary of the current runtime. Appends ' --php' to the path when the runtime is HHVM.
Runtime::getName public function
Runtime::getNameWithVersion public function
Runtime::getVendorUrl public function
Runtime::getVersion public function
Runtime::hasPHPDBGCodeCoverage public function Returns true when the runtime used is PHP with the PHPDBG SAPI and the phpdbg_*_oplog() functions are available (PHP >= 7.0).
Runtime::hasXdebug public function Returns true when the runtime used is PHP and Xdebug is loaded.
Runtime::isHHVM public function Returns true when the runtime used is HHVM.
Runtime::isPHP public function Returns true when the runtime used is PHP without the PHPDBG SAPI.
Runtime::isPHPDBG public function Returns true when the runtime used is PHP with the PHPDBG SAPI.