PlinkerRPC PHP client/server makes it really easy to link and execute generic PHP components on remote systems, while maintaining the feel of a local method call.
Docs: https://plinker-rpc.github.io/core
New changes in version 3 include:
- Now compaible with PHP extension.
- Built-in core components and info method added so components can be discovered.
- Only one client instance is now needed, made use of __get() to dynamically set component.
- User defined components/classes, so you can call your own code.
- Both request and response is encrypted and signed.
Require this package with composer using the following command:
$ composer require plinker/core
This component does not require any additional setup.
Creating a client instance is done as follows:
<?php
require 'vendor/autoload.php';
/**
* Initialize plinker client.
*
* @param string $server - URL to server listener.
* @param string $config - server secret, and/or a additional component data
*/
$client = new \Plinker\Core\Client(
'http://example.com/server.php',
[
'secret' => 'a secret password',
]
);
// or using global function
$client = plinker_client('http://example.com/server.php', 'a secret password');
Creating a server listener is done as follows:
Optional features:
- Set a secret, which all clients will require.
- Lock down to specific client IP addresses for addtional security.
- Define your own classes in the
classes
array then access like above$client->class->method()
, which can interface out of scope components or composer packages. - Define addtional key values for database connections etc, or you could pass the parameters through the client connection.
<?php
require 'vendor/autoload.php';
/**
* Initialize plinker server.
*/
if (isset($_SERVER['HTTP_PLINKER'])) {
// init plinker server
echo (new \Plinker\Server([
'secret' => 'a secret password',
'allowed_ips' => [
'127.0.0.1'
],
'classes' => [
'test' => [
// path to file
'classes/test.php',
// addtional key/values
[
'key' => 'value'
]
],
// you can use namespaced classes
'Foo\\Demo' => [
// path to file
'some_class/demo.php',
// addtional key/values
[
'key' => 'value'
]
],
// ...
]
]))->listen();
}
Once setup, you call the class though its namespace to its method.
The info method returns defined endpoint methods and their parameters.
Call
$result = $client->info();
Response
Array
(
[class] => Array
(
[Foo\Demo] => Array
(
[config] => Array
(
[key] => value
)
[methods] => Array
(
[config] => Array
(
)
[this] => Array
(
)
[test] => Array
(
[0] => x
[1] => y
)
)
)
)
)
$ composer test
Please see CONTRIBUTING for details.
If you discover any security related issues, please contact me via https://cherone.co.uk instead of using the issue tracker.
If you use this code and make money from it and want to show your appreciation, please feel free to make a donation https://www.paypal.me/lcherone, thanks.
Get your company or name listed here.
The MIT License (MIT). Please see License File for more information.
See organisations page for additional components.