Backend Development 11 min read

Refactoring PHP Calls to Java Interfaces: Architecture, Code Generation, and Seamless Integration

The article details the challenges of PHP invoking Java interfaces, compares two existing solutions, and presents a comprehensive refactoring approach that automates code conversion, resolves generic parsing and sandbox debugging issues, and reduces the integration steps from eight to three for more efficient backend development.

58 Tech
58 Tech
58 Tech
Refactoring PHP Calls to Java Interfaces: Architecture, Code Generation, and Seamless Integration

Background: PHP needs to call Java-provided interfaces, currently using two cumbersome solutions – the Architecture team’s approach and the Anjuke approach – each requiring up to eight steps, high communication cost, and lacking generic type resolution and local debugging capabilities.

Problems identified include complex multi‑step processes, inability to parse generics, difficulty debugging services that involve both online and sandbox environments, and manual copying of generated code.

Refactoring ideas focus on three directions: engineering the codebase, solving generic parsing, and enabling sandbox debugging.

Step 1 – Code Engineering : Develop a PHPbase service to download Java JARs using Maven coordinates, parse pom.xml and dependencies, extract contracts, entities, and enums, and generate corresponding PHP classes with proper namespaces, directories, and dependencies. The process includes parsing JAR files, handling parent POMs, resolving versions, and using URLClassLoader to load classes.

Step 2 – Generic Parsing : Create a hash‑based mechanism in build.php to map generic type IDs to actual entity classes for both SCFv1 and SCFv3 protocols, allowing automatic resolution of generic parameters during deserialization.

Step 3 – Sandbox Debugging : Introduce a service.xml file that lists service coordinates and sandbox IPs, enabling developers to switch between online and sandbox services without additional configuration.

The refactored workflow reduces the integration steps from eight to three: (1) add Maven coordinates to service.xml , (2) run the build script to download, convert, and place PHP code, and (3) invoke the generated PHP service class directly, achieving a seamless, “no‑trace” call experience.

Directory structure includes wscfcore for SCF files, Hashdata for hash files, package.lock for downloaded service metadata, and package for the generated code. The solution eliminates manual copying errors and improves development efficiency.

Javacode generationbackend developmentPHPAPI IntegrationSCFservice orchestration
58 Tech
Written by

58 Tech

Official tech channel of 58, a platform for tech innovation, sharing, and communication.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.