simpletools / functionparser
Function parser for PHP functions, methods, and closures
Requires
- php: >=7.4
This package is auto-updated.
Last update: 2024-10-16 16:43:25 UTC
README
The PHP Function Parser library by Jeremy Lindblom.
Purpose
The PHP FunctionParser provides the ability to parse and retrieve the code defining an existing function as a string. This can be used in clever ways to generate documentation or example code or even to serialize a closure.
The class also allows you to get information about the function like the parameter names and the names and values of
variables in the use
statement of a closure.
General Use
The FunctionParser relies on the Reflection API and also on the PHP tokenizer (token_get_all()
), so PHP must be
compiled with the --enable-tokenizer
flag in order for the tokenizer to be available.
Here is a small example of how it works:
use FunctionParser\FunctionParser; $foo = 2; $closure = function($bar) use($foo) { return $foo + $bar; }; $parser = new FunctionParser(new \ReflectionFunction($closure)); $code = $parser->getCode();
You can also use the fromCallable
factory method as a convenient way to generate the reflected function automatically
from any PHP callable:
$parser = FunctionParser::fromCallable(function($foo) {echo $foo . 'bar';}); $parser = FunctionParser::fromCallable('Foo::bar'); $parser = FunctionParser::fromCallable(array('Foo', 'bar'));
Installation
The FunctionParser relies on the Reflection API and also on the PHP tokenizer (token_get_all()
), so PHP must be
compiled with the --enable-tokenizer
flag in order for the tokenizer to be available.
Requirements:
- PHP 5.3.2+
- PHPUnit for tests
- Composer for consuming FunctionParser as a dependency
To install FunctionParser as a dependency of your project using Composer, please add the following to your
composer.json
config file.
{ "require": { "jeremeamia/FunctionParser": "*" } }
Then run php composer.phar install --install-suggests
from your project's root directory to install the FunctionParser.
Building
There is a buid.xml
file that you can use to generate test coverage reports, documenation, and code analytics. The
current file is designed to be used with ant
, but I will be migrating this to phing
sometime soon. More on this later.
The test suite and code coveage report are currently setup to run in Travis CI. [See FunctionParser on Travis CI] travis-ci