Select Git revision
DocBlock.php 1.47 KiB
<?php
class Nmc_DocBlock {
protected $_values = array();
static protected $_multiFields = array('param');
/**
* Creates a new Nmc_DocBlock object from a DocBlock string
*
* @param string $string
* @return Nmc_DocBlock
*/
static public function createFromString($string)
{
$string = explode("\n", $string);
$string = array_slice($string, 1, -1);
$parsedDocBlock = array();
foreach($string as $lineNumber => $line) {
$leadingAstrisk = strpos($line, '*');
$line = substr($line, $leadingAstrisk + 1);
$line = trim($line);
if($line[0] == '@') {
$nextSpace = strpos($line, ' ');
$key = substr($line, 1, $nextSpace - 1);
$value = substr($line, $nextSpace + 1);
if(in_array($key, self::$_multiFields)) {
$parsedDocBlock[$key][] = $value;
} else {
$parsedDocBlock[$key] = $value;
}
} else {
$parsedDocBlock['description'] .= $line . "\n";
}
}
$docBlock = new Nmc_DocBlock();
foreach($parsedDocBlock as $key => $value) {
$docBlock->$key = $value;
}
return $docBlock;
}
public function __get($name)
{
return $this->_values[$name];
}
public function __set($name, $value)
{
$this->_values[$name] = $value;
}
}