soluble / japha-pjb62-compat
Soluble PHP Java bridge PJB62 compatibility layer
Installs: 61
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/soluble/japha-pjb62-compat
Requires
- php: ^5.6 || ^7.0
- soluble/japha: ^1.0
Requires (Dev)
- belgattitude/pjbserver-tools: ^2.1.1
- friendsofphp/php-cs-fixer: ^2.0.0
- phpunit/phpunit: ^4.8 || ^5.4
Suggests
- belgattitude/pjbserver-tools: PHPJavabridge standalone server support (unit tests)
README
Introduction
*** Work in progress ***
Historically the PHP/Java bridge client didn't support namespaces.
Install this package if you have existing code relying on legacy php-java-bridge and don't want to refactor to the newer implementation provided by soluble/japha.
Features
- Make soluble-japha compatible with the procedural phpjavabridge legacy api
Requirements
- PHP 5.5+, 7.0 or HHVM >= 3.2.
- The PHPJavaBridge server running
Installation
- 
PHP installation (client) Through composer. $ composer require "soluble/japha-pjb62-compat"Most modern frameworks will include Composer out of the box, but ensure the following file is included: <?php // include the Composer autoloader require 'vendor/autoload.php'; 
- 
PHP-Java-bridge server Refer to the latest documentation provided in the soluble-japha project. Or as quick install guide use the standalone server : $ mkdir -p /my/path/pjbserver-tools $ cd /my/path/pjbserver-tools $ composer create-project --no-dev --prefer-dist "belgattitude/pjbserver-tools" $ ./bin/pjbserver-tools pjbserver:start -vvv ./config/pjbserver.config.php.dist The server will start on default port 8089. If you like to change it, create a local copy of ./config/pjbserver.config.php.distand refer it in the above command.Use the commands pjbserver:stop,pjbserver:restart,pjbserver:statusto control or query the server status.For production the recommended way is to deploy the JavaBridge servlet into a J2EE compatible server (Tomcat,...). Have a look to the complete java server installation documentation. 
Examples
Connection example
Configure your bridge adapter with the correct driver (currently only Pjb62 is supported) and the PHP-Java-bridge server address.
<?php use Soluble\Japha\Bridge\Adapter as BridgeAdapter; $ba = new BridgeAdapter([ 'driver' => 'Pjb62', 'servlet_address' => 'localhost:8089/servlet.phpjavabridge' ]);
This replace the include('xxx/Java.inc) used in previous versions.
Basic Java usage
With legacy mode enabled you can use the java* function directly
<?php use Soluble\Japha\Bridge\Adapter as BridgeAdapter; $ba = new BridgeAdapter([ 'driver' => 'Pjb62', 'servlet_address' => 'localhost:8083/servlet.phpjavabridge' ]); $bigint = new Java("java.math.BigInteger", 1); $system = java_class('java.lang.System); java_instanceof($bigint, 'java.math.BigInteger'); // -> true java_inspect($bigint); java_values($bigint); //java_invoke();
API
Refactor constants
| Constant | Example | 
|---|---|
| JAVA_HOSTS | define("JAVA_HOSTS", "127.0.0.1:8787") | 
| JAVA_SERVLET | define("JAVA_SERVLET", "/MyWebApp/servlet.phpjavabridge") | 
| JAVA_PREFER_VALUES | define("JAVA_PREFER_VALUES", 1) | 
| JAVA_LOG_LEVEL | define("JAVA_LOG_LEVEL", null) | 
| JAVA_SEND_SIZE | define("JAVA_SEND_SIZE", 8192) | 
| JAVA_RECV_SIZE | define("JAVA_RECV_SIZE", 8192) | 
| JAVA_DISABLE_AUTOLOAD | Not applicable anymore - PSR4 ;) | 
Initialization
| Old way | New way | 
|---|---|
| include(... /Java.inc) | $ba = new Bridge\Adapter($option); | 
API
The following table maps old and new recommended API.
| Legacy | Bridge\Adapter($ba) | 
|---|---|
| new Java($class, $args=null):Java | $ba->java($class, $args=null):Interfaces\JavaObject | 
| java_class($class):JavaClass | $ba->javaClass($class)Interfaces\JavaClass | 
| java_instanceof($object, $class):boolean | $ba->isInstanceOf($object, $class):boolean | 
(under review, soon to be implemented)
| Legacy | Bridge\Adapter($ba) | 
|---|---|
| java_values($object):mixed | $ba->getValues($object):mixed | 
| java_invoke($object, $method, $args=null): `mixed | null` | 
| java_inspect($object):string | $ba->debug()->inspect($object):string | 
| getLastException:Exception | $ba->debug()->getLastException():Exception | 
| clearLastException | $ba->debug()->clearLastException() | 
function java_is_null($value) function java_is_true($value) function java_is_false($value)
Refactoring guidelines
Keep a step by step approach... you can use both API at the same time.
- Try to change intialization sequence