mksec/silex-base

此包已弃用且不再维护。未建议替代包。

Silex应用程序的基本类

v1.4.1 2017-12-14 21:47 UTC

This package is not auto-updated.

Last update: 2020-06-12 19:48:12 UTC


README

基本的 Silex 应用程序,配置为使用常用提供者。

关于

mksec开发的大部分应用程序使用与Silex相同的通用基础设施:有一个继承自Silex Application类的类,它配置了错误和异常处理器。尽管提供者依赖于个别应用程序,但其中一些对所有应用程序都是通用的。

此存储库提供了一些提供基本基础设施的类,可以用作构建应用程序的基础类,使它们更加简单,因为不需要重复通用代码。

安装

只需使用composer将mksec/silex-base添加为项目的依赖项。

composer require mksec/silex-base

用法

使用基本应用程序类非常简单:只需使用下面列出的其中一个类代替\Silex\Application即可。对于专业应用程序,您可能希望实现一个继承自基础类之一的类。

  • BaseApplication

    BaseApplication类是一个简单的Silex Application,已注册错误和异常处理器。它可以用于没有UI的简单应用程序(例如API)。

    注意: Silex的异常处理器将在处理请求时捕获所有异常。此外,ErrorHandler将任何错误和警告(例如从非现有文件读取)转换为异常,这些异常将由Silex的相同异常处理器处理。然而,Silex不会捕获致命异常(例如ClassNotFoundException)或抛出在运行控制器之外的异常。您可以使用core.error_handlercore.exception_handler密钥访问错误和异常处理器,例如设置返回错误500页的自定义异常处理器。

    您可以使用catchAllExceptions()方法告诉ExceptionHandler将异常事件路由到Silex事件处理器。请在使用此方法之前阅读文档!

  • BaseUiApplication

    BaseUiApplication通过注册Twig和Asset服务提供者扩展了BaseApplication。它还使用CacheTrait使用应用范围内的缓存路径,该路径可以设置在app.cache路径中。

    要使用此类,您需要添加额外的依赖项

    composer require symfony/asset symfony/twig-bridge twig/twig
    

    Web Profiler可以通过enableProfiler()方法激活,该方法在注册其他提供者之后执行。您还需要添加额外的开发依赖项

    composer require --dev 'silex/web-profiler:^2.0'
    

    根据您使用的其他提供者,可能需要添加其他依赖项。有关Silex Web Profiler的更多信息,请参阅README

可以为任何类型的应用程序创建很多子类。然而,这可能效率不高,因为对于高级类来说,有太多的服务组合。

  • 在所有类型的应用程序中都可以使用MonologServiceProvider,因此没有必要添加额外的类以在所有这些中获取monolog。如果需要,直接注册MonologServiceProvider会更简单。
  • 同样适用于安全组件(SecurityServiceProviderRememberMeServiceProviderSessionServiceProvider):想象一个无状态的认证应用——在这种情况下使用后两个组件是没有意义的。
  • 交互式应用可能会使用 CsrfServiceProviderFormServiceProvider。然而,它们的依赖性高度依赖于最终的应用,例如,如果使用默认的表单模板,则需要 TranslationServiceProvider,但对于自定义模板可能是不必要的。

提供者

  • 主题提供者

    ThemeServiceProvider 可用于动态确定 Twig 视图和资源的路径。虽然它打算与 BaseUiApplication 一起使用,但它与简单的 Silex 应用程序兼容。

    主题 可能 在其根目录下有一个名为 assets.php 的文件,用于返回在模板中使用的命名包数组(例如 Bootstrap、jQuery 等)。可以通过扩展 $appassets.named_packages 键来轻松更改此列表,例如切换使用的 CDN。

    <?php
    
    use SilexBase\BaseUiApplication;
    use SilexBase\ThemeServiceProvider;
    
    $app = new BaseUiApplication();
    $app->register(new ThemeServiceProvider());
    $app->extend('assets.named_packages', function (array $packages) {
        // Switch the CDN domain.
        $packages['bootstrap']['base_urls'] = ['example.org'];
    });

    主题也可能在其根目录下提供一个名为 assets.manifest.json 的文件,以指定主题拥有的资源版本(不是命名包)。

    {
      "css/main.css": "css/main.css?abcdef"
    }

    注意:此功能是在 symfony/assets 版本 3.3 中引入的!

    此清单文件可以通过多个工具生成,例如 webpack。然而,仅为了生成清单,可以使用 bin/asset-manifest 工具。第一个参数是您的主题路径,后面的参数是资源。

    bin/asset-manifest themes/default css/main.css js/main.js
    

贡献

欢迎每个人贡献。只需分叉此存储库,在你的分支中做出更改,并为你的更改发送拉取请求。请每个拉取请求只发送一个更改。

你发现了一个错误?请 提交一个问题,并包括所有重现错误的必要信息。

许可

本项目采用 MIT 许可