| 
<?php$path_to_phpf = __DIR__ . '/../../src/phpf.php';
 
 function executeCommand( $args, $stdin ) {
 global $path_to_phpf;
 
 $arguments = '';
 foreach ( $args as $option => $value ) {
 if ( is_numeric( $option ) ) {
 $arguments .= ' ' . escapeshellarg( $value );
 } else if ( $value === true ) {
 $arguments .= " $option";
 } else {
 $arguments .= " $option=" . escapeshellarg( $value );
 }
 }
 
 $cmd = sprintf( 'php %s %s -o=- -', $path_to_phpf, $arguments );
 
 $descriptorspec = array(
 0 => array( 'pipe', 'r' ), // stdin is a pipe that the child will read from
 1 => array( 'pipe', 'w' ), // stdout is a pipe that the child will write to
 );
 
 $process = proc_open( $cmd, $descriptorspec, $pipes );
 
 if ( is_resource( $process ) ) {
 // $pipes now looks like this:
 // 0 => writeable handle connected to child stdin
 // 1 => readable handle connected to child stdout
 
 fwrite( $pipes[0], $stdin  ); // file_get_contents('php://stdin')
 fclose( $pipes[0] );
 
 $stdout = stream_get_contents( $pipes[1] );
 fclose( $pipes[1] );
 
 // It is important that you close any pipes before calling
 // proc_close in order to avoid a deadlock
 $return_value = proc_close( $process );
 
 return $stdout;
 }
 }
 
 ?>
 
 |