expectException(\LogicException::class); $this->expectExceptionMessage(\sprintf('Macro name "%s" is not a valid PHP identifier.', $name)); new MacroReferenceExpression(new TemplateVariable('foo', 1), $name, new ArrayExpression([], 1), 1); } public static function provideInvalidMacroNames(): iterable { yield 'empty' => ['']; yield 'starts with digit' => ['1foo']; yield 'contains space' => ['foo bar']; yield 'contains semicolon' => ['foo;bar']; yield 'PHP injection payload' => ['macro_foo + 1; trigger_error("BAD") //']; yield 'contains NUL byte' => ["foo\x00bar"]; } }