public static function create($name, ExpressionNode $value = NULL, $visibility = 'public') {
    $code = $visibility . ' $' . ltrim($name, '$');
    if ($value instanceof ExpressionNode) {
      $code .= ' = ' . $value->getText();
    }
    /** @var ClassNode $class_node */
    $class_node = Parser::parseSnippet('class Foo { ' . $code . '; }');
    return $class_node->getStatements()[0]->remove();
  }
public static function create($name, ExpressionNode $value = NULL, $visibility = 'public') {
    $code = $visibility . ' $' . ltrim($name, '$');
    if ($value instanceof ExpressionNode) {
      $code .= ' = ' . $value->getText();
    }
    /** @var ClassNode $class_node */
    $class_node = Parser::parseSnippet('class Foo { ' . $code . '; }');
    return $class_node->getStatements()[0]->remove();
  }
public static function create ( $ name , ExpressionNode $ value = NULL , $ visibility = 'public' ) { $ code = $ visibility . ' $' . ltrim ( $ name , '$' ) ; if ( $ value instanceof ExpressionNode ) { $ code .= ' = ' . $ value -> getText ( ) ; } /** @var ClassNode $class_node */ $ class_node = Parser :: parseSnippet ( 'class Foo { ' . $ code . '; }' ) ; return $ class_node -> getStatements ( ) [ 0 ] -> remove ( ) ; }
Creates a new class member.

@param string $name
The name of the member, with or without the leading $.
@param \Pharborist\ExpressionNode $value
The default value of the member, if any.
@param string $visibility
The member's visibility. Can be public, private, or protected. Defaults to
public.

@return ClassMemberListNode

@todo Not all expressions can be default values, but I forget what sorts of
expressions are valid for this. Will need better sanity checking here.
Creates a new class member .