What are some potential pitfalls of using regular expressions to extract object method calls from a template in PHP?

One potential pitfall of using regular expressions to extract object method calls from a template in PHP is that it may not account for all possible variations in method call syntax, leading to incomplete or incorrect extraction. To solve this issue, a more robust approach would be to use a PHP parser like PHP-Parser to accurately parse and extract method calls from the template.

// Using PHP-Parser to extract object method calls from a template
require 'vendor/autoload.php';

use PhpParser\ParserFactory;

$code = file_get_contents('template.php');

$parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7);
$stmts = $parser->parse($code);

$methodCalls = [];

$traverser = new PhpParser\NodeTraverser();
$traverser->addVisitor(new class extends PhpParser\NodeVisitorAbstract {
    public $methodCalls = [];

    public function enterNode(PhpParser\Node $node) {
        if ($node instanceof PhpParser\Node\Expr\MethodCall) {
            $this->methodCalls[] = $node;
        }
    }
});

$traverser->traverse($stmts);

foreach ($traverser->methodCalls as $methodCall) {
    echo $methodCall->name . ' method called on ' . $methodCall->var . PHP_EOL;
}