Custom conditions are datatypes that implement Phing\Task\System\Condition\Condition.
For example a custom condition that returns true if a string is all upper case could be written as:
class AllUpperCaseCondition implements Condition
{
private $value;
// The setter for the "value" attribute
public function setValue(string $value)
{
$this->value = $value;
}
// This method evaluates the condition
public function evaluate()
{
if ($this->value === null) {
throw new BuildException("value attribute is not set");
}
return strtoupper($this->value) === $this->value;
}
}
Adding the condition to the system is achieved as follows:
<typedef
name="alluppercase"
classname="AllUpperCaseCondition"/>
This condition can now be used wherever a Core Phing condition is used.
<condition property="allupper">
<alluppercase value="THIS IS ALL UPPER CASE"/>
</condition>