Callback interface
If you want to use a non-static method as a callback for XML_Query2XML you have to use an instance of a class that implements this interface. Your command class (read more about the command pattern here) therefore has to implement a public method that is named "execute" and accepts an array as its first argument. Here goes an example:
require_once 'XML/Query2XML/Callback.php';
class MyCallback implements XML_Query2XML_Callback
{
public function execute(array $record)
{
$data = $record['some_column'];
// do some really complex things with $data
return $data;
}
}
$myCallback = new MyCallback();
XML_Query2XML will always invoke the execute() method and will pass the current record as an associative array as the first and only argument. A command object can be used for
- Simple Element Specifications
- Complex Element Specifications ($options['value')
- Simple Attribute Specifications
- Complex Attribute Specifications ($options['value')
- $options['condition']
- $options['sql']['data']
- $options['idColumn']
If you want to use the same command class for different columns, I suggest you pass the column name to the constructor:
require_once 'XML/Query2XML/Callback.php';
class MyCallback implements XML_Query2XML_Callback
{
private $_columnName = '';
public function __construct($columnName)
{
$this->_columnName = $columnName;
}
public function execute(array $record)
{
if (!isset($record[$this->_columnName])) {
// throw an exception here
}
$data = $record[$this->_columnName];
// do some really complex things with $data
return $data;
}
}
$myCallback = new MyCallback('some_column_name');
Located in /Query2XML/Callback.php (line 84)