为路由调用类方法

时间:2014-01-08 11:19:33

标签: php class slim

我已经将Slim用于了几个项目,我总是通过$app->route('/', array('MyClass', 'method'));

将路由连接到类方法

然而,在使用composer安装它之后,这就是我得到的错误:

call_user_func_array() expects parameter 1 to be a valid callback, non-static method Pages::home() should not be called statically

这是代码:     

class Pages {
  function home() {
    print 'home';
  }
}

$app = new \Slim\Slim();
$app->get('/', array('Pages', 'home'));
$app->run();

我错过了什么吗?我应该另外编辑我的课吗?

谢谢!

2 个答案:

答案 0 :(得分:8)

您的错误报告看起来比过去更高,因为我相信您收到的错误是E_STRICT错误。如果您将function home()方法更改为public static function home(),则不会再出现错误。

尽管如此,更好的解决方案可能是尝试新的(-ish)controller feature in Slim 2.4.0。您的新路线将如下所示:

$app->get('/', '\Pages:home');

答案 1 :(得分:0)

代码错误,您将数组作为参数而不是回调传递。尝试传递一个函数。

GET路线的文件: http://docs.slimframework.com/#GET-Routes

class Pages {
  function home() {
    print 'home';
  }
}

$app = new \Slim\Slim();
$app->get('/',function() {
    $page = new Pages();
    $page->home(); 
});
$app->run();