Chapter 22. PHP
Overview
PHP is a widely-used general-purpose scripting language that is especially suited for Web development. The PHP support is part of the
camel-script
module.
Adding the script module
To use PHP in your routes you need to add a dependency on
camel-script
to your project as shown in Example 22.1, “Adding the camel-script dependency”.
Example 22.1. Adding the camel-script dependency
<!-- Maven POM File --> ... <dependencies> ... <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-script</artifactId> <version>${camel-version}</version> </dependency> ... </dependencies>
Static import
To use the
php()
static method in your application code, include the following import statement in your Java source files:
import static org.apache.camel.builder.camel.script.ScriptBuilder.*;
Built-in attributes
Table 22.1, “PHP attributes” lists the built-in attributes that are accessible when using PHP.
Attribute | Type | Value |
---|---|---|
context | org.apache.camel.CamelContext | The Camel Context |
exchange | org.apache.camel.Exchange | The current Exchange |
request | org.apache.camel.Message | The IN message |
response | org.apache.camel.Message | The OUT message |
properties | org.apache.camel.builder.script.PropertiesFunction | Function with a resolve method to make it easier to use the properties component inside scripts. |
The attributes all set at
ENGINE_SCOPE
.
Example
Example 22.2, “Route using PHP” shows a route that uses PHP.
Example 22.2. Route using PHP
<camelContext> <route> <from uri="direct:start"/> <choice> <when> <language language="php">strpos(request.headers.get('user'), 'admin')!== FALSE</language> <to uri="seda:adminQueue"/> </when> <otherwise> <to uri="seda:regularQueue"/> </otherwise> </choice> </route> </camelContext>
Using the properties component
To access a property value from the properties component, invoke the
resolve
method on the built-in properties
attribute, as follows:
.setHeader("myHeader").php("properties.resolve(PropKey)")
Where PropKey is the key of the property you want to resolve, where the key value is of
String
type.