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.但是我不希望将所有文件都放在一个文件中,而且我不想加载我不需要的每个控制器. 你有什么方法? 遗憾的是,此网址没有帮助: 解决方法
请记住,使用$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自动加载.如果你已经在使用作曲家,这应该是微不足道的.然后你的小组看起来像 $app->group('/robots',function () use ($app) { $app->get('/:id','controllerRobotController:getRobot') ->conditions(array('id' => '[0-9]')); }); 如果您的自动加载器知道命名空间“控制器”映射到“控制器”文件夹,那么您不需要手动包含所述类. 请注意我使用冒号:而不是paamayim ::,因为我希望Slim实例化RobotController并在该实例上调用非静态方法. 澄清:让自动加载器“知道”意味着添加适当的映射,在composer.json中指定自动加载器条目.这允许将命名空间映射到我们方便的任意文件夹 "autoload": { "psr-4": { "controller": "src/controllers_folder","model": "src/doctrine_models" } }, 这将延迟控制器的实例化,直到您有匹配的路由. 您可以使用其他技巧,例如将不同的路由组保存在不同的文件中,然后只包括与请求的网址的第一部分匹配的路由(在您的情况下,路由将是robots.php) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |