This class intends to make programatic and dynamic functions calls.
To use the Action
class, just use the factory
method, to build a new object, passing the parameters to use on this function.
At the end, just execute the instance's exec
method, passing optionally the additional parameters.
The URI patterns you can use are:
Type | Example |
---|---|
Simple function | 'mySampleFunction()' |
Class method | '\namespace\MyClass::functionName()' |
REST call* | 'POST;https://user!password@my_domain.com:8081/api/v99/xpto?v1=1&v2=2#xpto' |
- Not implemented yet
Make a call to a global function.
function multiply($x,$y) {
return $x * $y;
}
$action = Action::factory('multiply()');
$response = $action->exec(2,5);
// result = 10
Instantiate a class object, and execute the assigned method.
If your class have a constructor method, and require any parameter, you can suply it on 3rd parameter of factory
method:
$action = Action::factory('MyClass::myFunction()',[],['constructor'=>[1,'string',false]]);
On above the case, the values 1
, 'string'
and false
will be applied on MyClass
constructor.
class MyClass {
public function myFunction($id, $fieldName) {
// ...
return [
'id' => $id,
'field_name'=> $fieldName
];
}
}
$action = Action::factory('MyClass::myFunction()', [1, 'name']);
$response = $action->exec();
print_r($response);
Will display:
Array
(
[id] => 1
[field_name] => name
)
The class ActionURLCallTest
perform remote URL calls, and return the contents parsed.
Let's suppose you want to make a call to an endpoint:
$url = 'post;https://username:password@my.hostname:9090/path?arg=value#anchor';
$action = Action::factory($url);
$response = $action->exec();
To perform tests, just run vendor/bin/phpunit
from root project folder.
But to run the integration tests, is necessary start the local server to do it. On this case, just execute the script
on ~/bin/run_integration_tests.sh , and in other terminal window, run phpunit
.