代码之家  ›  专栏  ›  技术社区  ›  Andy

Slim框架-将代码拆分为index.php以外的多个文件

  •  8
  • Andy  · 技术社区  · 9 年前

    documentation 对于Slim框架,它说

    在这个示例应用程序中,所有路由都在索引中。php,但在 实践这可能会产生一个相当长和笨拙的文件!很好 文件,或者只注册一组带有回调的路由 这实际上是在其他地方宣布的。

    include require 在里面 index.php 参考这些。

    我也不确定“注册一组实际上在其他地方声明的回调的路由”是什么意思

    有没有人对此有任何想法,因为我要构建的应用程序可能有很多路线?

    2 回复  |  直到 9 年前
        1
  •  9
  •   Álvaro González    9 年前

    作为一个微框架,Slim不强制执行任何特定方法。您可以找到现成的结构( Slim Skeleton Application 我想到)或写你自己的;与其他框架不同,Slim不会试图保护您免受PHP攻击。

    路由定义可以像字符串数组一样简单:

    <?php // routes.php
    return [
        '/'        => ['Foo\\Home',    'index'],
        '/about'   => ['Foo\\Home',    'about'],
        '/contact' => ['Foo\\Contact', 'form' ],
    ];
    

    …然后在 index.php

    $routes = require('/path/to/routes.php');
    foreach ($routes as list($path, $handler)) {
        $app->get($route, $handler);
    }
    

    您可以利用现有的Composer设置,通过将适当的目录添加到 composer.json :

    {
        "require": {
            "slim/slim": "^3.3",
            "monolog/monolog": "^1.19"
        },
        "autoload": {
            "psr-4": {"Foo\\": "./Foo/"}
        }
    }
    

    从这里开始,它可以根据需要变得复杂:在YAML文件中定义路由,从定义的类自动加载,等等。

    (显示的代码示例仅用于说明,甚至可能无效。)

        2
  •  5
  •   Stas Makarov    9 年前

    这里面有一些想法 Slim documentation

    而不是 require 这是你可以使用的 composer autoloading


    “使用实际在其他地方声明的回调注册一组路由”

    从…起 docs :

    上述每个路由方法都接受回调例程作为其最终参数。此参数可以是任何PHP可调用的。。。

    因此,您可以:

    $routeHandler = function ($request, $response) { echo 'My very cool handler'; };
    $app->get('/my-very-cool-path', $routeHandler);
    

    但通常人们使用类而不是函数: http://www.slimframework.com/docs/objects/router.html#container-resolution

    我认为你基本的想法几乎是对的。我建议阅读几遍关于路由的章节。它涵盖了一切很好。

    快乐编码,如果您需要任何其他帮助,请告诉我!

    推荐文章