X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fnikic%2Fphp-parser%2Fdoc%2F4_Code_generation.markdown;fp=vendor%2Fnikic%2Fphp-parser%2Fdoc%2F4_Code_generation.markdown;h=0000000000000000000000000000000000000000;hp=2c0aa0ede10129a4f2596d9a2187d73e42af7f04;hb=af6d1fb995500ae68849458ee10d66abbdcfb252;hpb=680c79a86e3ed402f263faeac92e89fb6d9edcc0 diff --git a/vendor/nikic/php-parser/doc/4_Code_generation.markdown b/vendor/nikic/php-parser/doc/4_Code_generation.markdown deleted file mode 100644 index 2c0aa0ede..000000000 --- a/vendor/nikic/php-parser/doc/4_Code_generation.markdown +++ /dev/null @@ -1,84 +0,0 @@ -Code generation -=============== - -It is also possible to generate code using the parser, by first creating an Abstract Syntax Tree and then using the -pretty printer to convert it to PHP code. To simplify code generation, the project comes with builders which allow -creating node trees using a fluid interface, instead of instantiating all nodes manually. Builders are available for -the following syntactic elements: - - * namespaces and use statements - * classes, interfaces and traits - * methods, functions and parameters - * properties - -Here is an example: - -```php -use PhpParser\BuilderFactory; -use PhpParser\PrettyPrinter; -use PhpParser\Node; - -$factory = new BuilderFactory; -$node = $factory->namespace('Name\Space') - ->addStmt($factory->use('Some\Other\Thingy')->as('SomeOtherClass')) - ->addStmt($factory->class('SomeClass') - ->extend('SomeOtherClass') - ->implement('A\Few', '\Interfaces') - ->makeAbstract() // ->makeFinal() - - ->addStmt($factory->method('someMethod') - ->makePublic() - ->makeAbstract() // ->makeFinal() - ->setReturnType('bool') - ->addParam($factory->param('someParam')->setTypeHint('SomeClass')) - ->setDocComment('/** - * This method does something. - * - * @param SomeClass And takes a parameter - */') - ) - - ->addStmt($factory->method('anotherMethod') - ->makeProtected() // ->makePublic() [default], ->makePrivate() - ->addParam($factory->param('someParam')->setDefault('test')) - // it is possible to add manually created nodes - ->addStmt(new Node\Expr\Print_(new Node\Expr\Variable('someParam'))) - ) - - // properties will be correctly reordered above the methods - ->addStmt($factory->property('someProperty')->makeProtected()) - ->addStmt($factory->property('anotherProperty')->makePrivate()->setDefault(array(1, 2, 3))) - ) - - ->getNode() -; - -$stmts = array($node); -$prettyPrinter = new PrettyPrinter\Standard(); -echo $prettyPrinter->prettyPrintFile($stmts); -``` - -This will produce the following output with the standard pretty printer: - -```php -