Rest
Rest copied to clipboard
Problems with callback and namespaces
Hi, I got a strange problem that I can't understand. This snippet:
<?php
namespace test;
require 'vendor/autoload.php';
use Respect\Rest\Router;
$r3 = new Router('/tools/test.php');
$r3->get('/', function() {
return array('v' => 2.0);
})->accept( array( 'text/html' => array( 'myns\\Standard', 'htmlRenderer')));
namespace myns;
class Standard
{
public static function htmlRenderer($data)
{
return 'OK';
}
}
works on window with php 5.4 and fails (Fatal error: Function name must be a string ) in ubuntu with php 5.3.
If in ubuntu I change the line 67 in file request.php from:
$response = $proxyCallback($response);
to
$response = call_user_func($proxyCallback,$response);
it works! The problem seams related to namespace because if I remove namespace it works in both environments. Can someone figure why?
This is a great library!!! Thank you
UPDATE:
It seams that the problem is related to a change in php 5.4.:
$callback = array($object, 'methodName');
$callback(); // prior to PHP 5.4 you need call_user_func()
Is php 5.4 a requirement for Respect\Rest?
@botk thank you for bringing this under our attention. =)