You are here

ParamTag.php in Zircon Profile 8

File

vendor/phpdocumentor/reflection-docblock/src/phpDocumentor/Reflection/DocBlock/Tag/ParamTag.php
View source
<?php

/**
 * phpDocumentor
 *
 * PHP Version 5.3
 *
 * @author    Mike van Riel <mike.vanriel@naenius.com>
 * @copyright 2010-2011 Mike van Riel / Naenius (http://www.naenius.com)
 * @license   http://www.opensource.org/licenses/mit-license.php MIT
 * @link      http://phpdoc.org
 */
namespace phpDocumentor\Reflection\DocBlock\Tag;

use phpDocumentor\Reflection\DocBlock\Tag;

/**
 * Reflection class for a @param tag in a Docblock.
 *
 * @author  Mike van Riel <mike.vanriel@naenius.com>
 * @license http://www.opensource.org/licenses/mit-license.php MIT
 * @link    http://phpdoc.org
 */
class ParamTag extends ReturnTag {

  /** @var string */
  protected $variableName = '';

  /** @var bool determines whether this is a variadic argument */
  protected $isVariadic = false;

  /**
   * {@inheritdoc}
   */
  public function getContent() {
    if (null === $this->content) {
      $this->content = "{$this->type} {$this->variableName} {$this->description}";
    }
    return $this->content;
  }

  /**
   * {@inheritdoc}
   */
  public function setContent($content) {
    Tag::setContent($content);
    $parts = preg_split('/(\\s+)/Su', $this->description, 3, PREG_SPLIT_DELIM_CAPTURE);

    // if the first item that is encountered is not a variable; it is a type
    if (isset($parts[0]) && strlen($parts[0]) > 0 && $parts[0][0] !== '$') {
      $this->type = array_shift($parts);
      array_shift($parts);
    }

    // if the next item starts with a $ or ...$ it must be the variable name
    if (isset($parts[0]) && strlen($parts[0]) > 0 && ($parts[0][0] == '$' || substr($parts[0], 0, 4) === '...$')) {
      $this->variableName = array_shift($parts);
      array_shift($parts);
      if (substr($this->variableName, 0, 3) === '...') {
        $this->isVariadic = true;
        $this->variableName = substr($this->variableName, 3);
      }
    }
    $this
      ->setDescription(implode('', $parts));
    $this->content = $content;
    return $this;
  }

  /**
   * Returns the variable's name.
   *
   * @return string
   */
  public function getVariableName() {
    return $this->variableName;
  }

  /**
   * Sets the variable's name.
   *
   * @param string $name The new name for this variable.
   *
   * @return $this
   */
  public function setVariableName($name) {
    $this->variableName = $name;
    $this->content = null;
    return $this;
  }

  /**
   * Returns whether this tag is variadic.
   *
   * @return boolean
   */
  public function isVariadic() {
    return $this->isVariadic;
  }

}

Classes

Namesort descending Description
ParamTag Reflection class for a @author Mike van Riel <mike.vanriel@naenius.com> @license http://www.opensource.org/licenses/mit-license.php MIT @link http://phpdoc.org