PHP code example of herrera-io / annotations
1. Go to this page and download the library: Download herrera-io/annotations library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
herrera-io / annotations example snippets
use Herrera\Annotations\Tokenizer;
$tokenizer = new Tokenizer();
$tokens = $tokenizer->parse(
<<<DOCBLOCK
/**
* @My\Annotation(
* a="string value",
* @Nested,
* {"a list"},
* A_CONSTANT
* )
*/
DOCBLOCK
);
/*
* array(
* array(DocLexer::T_AT),
* array(DocLexer::T_IDENTIFIER, 'My\\Annotation'),
* array(DocLexer::T_OPEN_PARENTHESIS),
* array(DocLexer::T_IDENTIFIER, 'a'),
* array(DocLexer::T_EQUALS),
* array(DocLexer::T_STRING, 'string value'),
* array(DocLexer::T_COMMA),
* array(DocLexer::T_AT),
* array(DocLexer::T_IDENTIFIER, 'Nested'),
* array(DocLexer::T_OPEN_CURLY_BRACES),
* array(DocLexer::T_STRING, 'a list'),
* array(DocLexer::T_COMMA),
* array(DocLexer::T_IDENTIFIER, 'A_CONSTANT'),
* array(DocLexer::T_CLOSE_CURLY_BRACES),
* array(DocLexer::T_CLOSE_PARENTHESIS)
* )
*/
use Herrera\Annotations\Tokenizer;
$tokenizer = new Tokenizer();
$tokenizer->ignore(
array(
'author',
'package'
)
);
$aliases = array('ORM' => 'Doctrine\\ORM\\Mapping');
$parsed = $tokenizer->parse($docblock, $aliases);
array(
'Annotation', 'Attribute', 'Attributes', 'Required', 'SuppressWarnings',
'TODO', 'Target', 'abstract', 'access', 'api', 'author', 'category', 'code',
'codeCoverageIgnore', 'codeCoverageIgnoreEnd', 'codeCoverageIgnoreStart',
'copyright', 'deprec', 'deprecated', 'endcode', 'example', 'exception',
'filesource', 'final', 'fixme', 'global', 'ignore', 'ingroup', 'inheritDoc',
'inheritdoc', 'internal', 'license', 'link', 'magic', 'method', 'name',
'override', 'package', 'package_version', 'param', 'private', 'property',
'return', 'see', 'since', 'static', 'staticVar', 'staticvar', 'subpackage',
'throw', 'throws', 'todo', 'tutorial', 'usedby', 'uses', 'var', 'version',
)
use Doctrine\ORM\Mapping as ORM;
$aliases = array(
'Assert' => 'Symfony\Component\Validator\Constraints',
'ORM' => 'Doctrine\ORM\Mapping',
'Route' => 'Sensio\Bundle\FrameworkExtraBundle\Configuration\Route',
);
/**
* @author Some Author <[email protected] >
*
* @package MyPackage
*
* @ORM\Column(name="MyColumn")
*/
$parsed = array(
array(DocLexer::T_AT),
array(DocLexer::T_IDENTIFIER, 'Doctrine\\ORM\\Mapping\\Column'),
array(DocLexer::T_OPEN_PARENTHESIS),
array(DocLexer::T_IDENTIFIER, 'name'),
array(DocLexer::T_EQUALS),
array(DocLexer::T_STRING, 'MyColumn'),
array(DocLexer::T_CLOSE_PARENTHESIS)
);
use Herrera\Annotations\Sequence;
use Herrera\Annotations\Tokens;
$tokens = new Tokens($parsed);
$sequence = new Sequence($parsed);
$sequence = new Sequence($tokens); // also accepts a Tokens object
use Herrera\Annotations\Convert\ToArray;
$toArray = new ToArray();
$array = $toArray->convert($tokens);
$array = $toArray->convert(
new Tokens (
$tokenizer->parse(
<<<DOCBLOCK
/**
* @Annotation\A("Just a simple value.")
* @Annotation\B(
* name="SomeName",
* nested=@Annotation(),
* {
* "an array",
* {
* "within an array"
* }
* }
* )
*/
DOCBLOCK
)
)
);
$array = array(
(object) array(
'name' => 'Annotation\\A',
'values' => array(
'Just a simple value.'
)
),
(object) array(
'name' => 'Annotations\\B',
'values' => array(
'name' => 'SomeName',
'nested' => (object) array(
'name' => 'Annotation',
'values' => array()
),
array(
'an array',
array(
'within an array'
)
)
)
),
);
echo $array[0]->name; // "Annotation\A"
echo $array[0]->values[0]; // "Just a simple value."
echo $array[1]->values['nested']->name; // "Annotation"
use Herrera\Annotations\Convert\ToString;
$toString = new ToString();
$string = $toString->convert($tokens);
$string = $toString->convert(
new Tokens(
$tokenizer->parse(
<<<DOCBLOCK
/**
* @Annotation\A("Just a simple value.")
* @Annotation\B(
* name="SomeName",
* nested=@Annotation(),
* {
* "an array",
* {
* "within an array"
* }
* }
* )
*/
DOCBLOCK
)
)
);
$string = <<<STRING
@Annotation\A("Just a simple value.")
@Annotation\B(name="SomeName",nested=@Annotation(),{"an array",{"within an array"}})';
STRING;
$toString->setIndentSize(4);
$string = <<<STRUNG
@Annotation\A(
"Just a simple value."
)
@Annotation\B(
name="SomeName",
nested=@Annotation(),
{
"an array",
{
"within an array"
}
}
)
STRUNG;
use Herrera\Annotations\Convert\ToXml;
$toXml = new ToXml();
$doc = $toXml->convert($tokens);
$doc = $toXml->convert(
new Tokens(
$tokenizer->parse(
<<<DOCBLOCK
/**
* @Annotation\A("Just a simple value.")
* @Annotation\B(
* name="SomeName",
* nested=@Annotation(),
* {
* "an array",
* {
* "within an array"
* }
* }
* )
*/
DOCBLOCK
)
)
);
echo $doc->saveXML();