php – 如何使用SLIM Microframework组织大型Rest API?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 如何使用SLIM Microframework组织大型Rest API?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用Slim,但我不确定我是否可以使用这样的结构来增长:

$app->group('/robots',function () use ($app) {

    include_once('controller/RobotController.PHP');

    $controller = new RobotController();

    $app->get('/:id',array($controller,'getRobot'))
        ->condITions(array('id' => '[0-9]'));
});

我只想拥有一个Controller(瘦)模型(胖)结构并响应json.但是我不希望将所有文件都放在一个文件中,而且我不想加载我不需要的每个控制器.

你有什么方法

遗憾的是,此网址没有帮助:
http://www.slimframework.com/2011/09/24/how-to-organize-a-large-slim-framework-application.html

解决方法

请记住,使用$app->组不会隔离其中包含的任何语句.在您的情况下,无论路由是否匹配,控制器都将被实例化.

考虑这个例子:

$app->group('/group1',function () use ($app) {

    $app->get('/route1',function () use ($app) {
        echo '<br> group1 route1';
    });

    echo '<br>group1';
});

$app->group('/group2',function () use ($app) {
    echo '<br> group2';
});

$app->group('/grouP3',function () use ($app) {
    echo '<br> group3';
});

请求/ group1 / route1将输出

group1
group2
group3
group1 route1

在您的情况下,最好组织您的文件夹结构以利用PSR@L_304_10@加载.如果你已经在使用作曲家,这应该是微不足道的.然后你的小组看起来像

$app->group('/robots',function () use ($app) {

    $app->get('/:id','controller\RobotController:getRobot')
        ->conditions(array('id' => '[0-9]'));
});

如果您的自动加载器知道命名空间“控制器”映射到“控制器”文件夹,那么您不需要手动包含所述类.

请注意我使用冒号:而不是paamayim ::,因为我希望Slim实例化RobotController并在该实例上调用非静态方法.

澄清:让自动加载器“知道”意味着添加适当的映射,在composer.json中指定自动加载器条目.这允许将命名空间映射到我们方便的任意文件

"autoload": {
    "psr-4": {
        "controller\\": "src/controllers_folder","model\\": "src/doctrine_models"
    }
},

这将延迟控制器的实例化,直到您有匹配的路由.

您可以使用其他技巧,例如将不同的路由组保存在不同的文件中,然后只包括与请求的网址的第一部分匹配的路由(在您的情况下,路由将是robots.PHP)

脚本宝典总结

以上是脚本宝典为你收集整理的php – 如何使用SLIM Microframework组织大型Rest API?全部内容,希望文章能够帮你解决php – 如何使用SLIM Microframework组织大型Rest API?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。