eduluz1976/action

Dynamic action (method/function) execution wrapper.

0.1.1 2019-02-16 08:42 UTC

This package is auto-updated.

Last update: 2024-04-16 20:30:20 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:

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

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.