eduluz1976 / action
Dynamic action (method/function) execution wrapper.
Requires
- guzzlehttp/guzzle: ^6.3
Requires (Dev)
- phpunit/phpunit: =7.0
- vlucas/phpdotenv: ^2.5@dev
This package is auto-updated.
Last update: 2025-02-16 22:16:07 UTC
README
Introduction
This class intends to make programatic and dynamic functions calls.
How to use
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:
- Not implemented yet
Simple function
Make a call to a global function.
Example
function multiply($x,$y) { return $x * $y; } $action = Action::factory('multiply()'); $response = $action->exec(2,5); // result = 10
Class method
Instantiate a class object, and execute the assigned method.
Constructor
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.
Examples
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
)
URL call
The class ActionURLCallTest
perform remote URL calls, and return the contents parsed.
Example
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();
Testing
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
.