Methods.php
<?php
namespace Tlf\Lexer\Test\Directives;
trait Methods {
protected $_method_tests = [
'Method.SimpleBody'=>[
// 'expect_failure'=>true,
'ast.type'=>'class_body',
'start'=>['php_code'],
'input'=>
<<<PHP
public function is_the_us_imperialist():bool {
\$var = new \Value();
return true;
}
PHP,
'expect'=>[
'methods'=>[
0=>[
'type'=>'method',
'args'=>[],
'modifiers'=>['public'],
'name'=>'is_the_us_imperialist',
'return_types'=>['bool'],
'body'=>"\$var = new \\Value();\nreturn true;",
'declaration'=>'public function is_the_us_imperialist():bool',
],
],
],
],
'Method.ReturnReference'=>[
'ast.type'=>'class_body',
'start'=>['php_code'],
'input'=>'public function &abc() {',
'expect'=>[
'methods'=>[
0=>[
'type'=>'method',
'args'=>[],
'modifiers'=>['public'],
'return_by_reference'=>true,
'name'=>'abc',
'body'=>[],
'declaration'=>'public function &abc()',
],
],
],
],
'Method.WithNestedBlock.2'=>[
// 'expect_failure'=>true,
'ast.type'=>'class_body',
'start'=>['php_code'],
'input'=>
<<<PHP
public function is_the_us_imperialist():bool {
if (\$you_buy_into_imperialist_propaganda){
return false;
}
return true;
}
public function is_the_us_nice():bool {
if (\$you_are_rich){
return true;
}
return false;
}
PHP,
'expect'=>[
'methods'=>[
0=>[
'type'=>'method',
'args'=>[],
'modifiers'=>['public'],
'name'=>'is_the_us_imperialist',
'return_types'=>['bool'],
'body'=>
"if (\$you_buy_into_imperialist_propaganda){"
."\n return false;"
."\n}"
."\nreturn true;",
'declaration'=>'public function is_the_us_imperialist():bool',
],
1=>[
'type'=>'method',
'args'=>[],
'modifiers'=>['public'],
'name'=>'is_the_us_nice',
'return_types'=>['bool'],
'body'=>
"if (\$you_are_rich){"
."\n return true;"
."\n}"
."\nreturn false;",
'declaration'=>'public function is_the_us_nice():bool',
],
],
],
],
'Method.WithNestedBlock'=>[
// 'expect_failure'=>true,
'ast.type'=>'class_body',
'start'=>['php_code'],
'input'=>
<<<PHP
public function is_the_us_imperialist():bool {
if (\$you_buy_into_imperialist_propaganda){
return false;
}
return true;
}
PHP,
'expect'=>[
'methods'=>[
0=>[
'type'=>'method',
'args'=>[],
'modifiers'=>['public'],
'name'=>'is_the_us_imperialist',
'return_types'=>['bool'],
"body"=>
"if (\$you_buy_into_imperialist_propaganda){"
."\n return false;"
."\n}"
."\nreturn true;",
'declaration'=>'public function is_the_us_imperialist():bool',
],
],
],
],
'Method.WithReturnType'=>[
'ast.type'=>'class_body',
'start'=>['php_code'],
'input'=>'static public function abc(bool $b): string {',
'expect'=>[
'methods'=>[
0=>[
'type'=>'method',
'args'=>[
0=>[
'type'=>'arg',
'arg_types'=>['bool'],
'name'=>'b',
'declaration'=>'bool $b',
],
],
'modifiers'=>['static', 'public'],
'name'=>'abc',
'return_types'=>['string'],
'body'=>'',
'declaration'=>'static public function abc(bool $b): string',
],
],
],
],
'Method.TwoArgs'=>[
'ast.type'=>'class_body',
'start'=>['php_code'],
'input'=>'/* whoo */ private function abc($arg1, $arg2) {',
'expect'=>[
'methods'=>[
0=>[
'type'=>'method',
'args'=>[
0=>[
'type'=>'arg',
'name'=>'arg1',
'declaration'=>'$arg1',
],
1=>[
'type'=>'arg',
'name'=>'arg2',
'declaration'=>'$arg2',
],
],
'docblock'=>['type'=>'docblock','description'=>'whoo'],
'modifiers'=>['private'],
'name'=>'abc',
'body'=>'',
'declaration'=>'private function abc($arg1, $arg2)',
],
],
],
],
'Method.OneArg'=>[
'ast.type'=>'class_body',
'start'=>['php_code'],
'input'=>'/* whoo */ public function abc(string $def=96) {',
'expect'=>[
'methods'=>[
0=>[
'type'=>'method',
'args'=>[
0=>[
'type'=>'arg',
'arg_types'=>['string'],
'name'=>'def',
'declaration'=>'string $def=96',
'value'=>'96',
],
],
'docblock'=>['type'=>'docblock','description'=>'whoo'],
'modifiers'=>['public'],
'name'=>'abc',
'body'=>'',
'declaration'=>'public function abc(string $def=96)',
],
],
],
],
'Method.Simple.OneArg'=>[
'ast.type'=>'class_body',
'start'=>['php_code'],
'input'=>'public function abc($def) {',
'expect'=>[
'methods'=>[
0=>[
'type'=>'method',
'args'=>[
0=>[
'type'=>'arg',
'name'=>'def',
'declaration'=>'$def',
],
],
'modifiers'=>['public'],
'name'=>'abc',
'body'=>'',
'declaration'=>'public function abc($def)',
],
],
],
],
'Method.Static'=>[
'ast.type'=>'class_body',
'start'=>['php_code'],
'input'=>'static public function abc() {',
'expect'=>[
'methods'=>[
0=>[
'type'=>'method',
'args'=>[],
'modifiers'=>['static','public'],
'name'=>'abc',
'body'=>'',
'declaration'=>'static public function abc()',
],
],
],
],
'Method.Simple'=>[
'ast.type'=>'class_body',
'start'=>['php_code'],
'input'=>'public function abc() {',
'expect'=>[
'methods'=>[
0=>[
'type'=>'method',
'args'=>[],
'modifiers'=>['public'],
'name'=>'abc',
'body'=>'',
'declaration'=>'public function abc()',
],
],
],
],
];
}