你的最后一个例子将使用一个匿名函数(只可在PHP 5.3 +)为JSON格式的文章列表,我们鼓励您使用控制器和JsonView类,但让我们想象你需要节省几毫秒关键API端点:
由于显而易见的原因这有可能让你的应用程序很难维护。过滤器是一个极其强大的工具,当使用得当,为每个URL添加响应处理程序在你的应用程序并不是一个好使用。但是如果你有一个有效的理由这样做,然后你有一个干净的解决方案。记住,不是所有的需要一个过滤器,控制器和组件通常是一个更准确的选择任何请求处理代码添加到应用程序。
$postsList = function($event) {
if ($event->data['request']->url !== 'posts/recent.json') {
return;
}
App::uses('ClassRegistry', 'Utility');
$postModel = ClassRegistry::init('Post');
$event->data['response']->body(json_encode($postModel->find('recent')));
$event->stopPropagation();
return $event->data['response'];
};
Configure::write('Dispatcher.filters', array(
'AssetDispatcher',
'CacheDispatcher',
'recent-posts' => array(
'callable' => $postsList,
'priority' => 9,
'on'=> 'before'
)
));
在前面的例子中,我们选择的优先级9为我们的过滤器,所以跳过任何其他逻辑放置在定制或等核心过滤器CakePHP内部路由系统。虽然不是必需的,它显示了如何使你的重要的代码运行,以防你需要削减一些请求尽可能多的脂肪。
由于显而易见的原因这有可能让你的应用程序很难维护。过滤器是一个极其强大的工具,当使用得当,为每个URL添加响应处理程序在你的应用程序并不是一个好使用。但是如果你有一个有效的理由这样做,然后你有一个干净的解决方案。记住,不是所有的需要一个过滤器,控制器和组件通常是一个更准确的选择任何请求处理代码添加到应用程序。