mksec / silex-base
Silex应用程序的基本类
Requires
- php: ~7.0
- silex/silex: ~2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.7
- phpunit/phpunit: ^6.4
- silex/web-profiler: ^2.0
- symfony/asset: ~2.8 || ^3.0
- symfony/browser-kit: ~2.8 || ^3.0
- symfony/twig-bridge: ~2.8 || ^3.0
- twig/twig: ~1.28 || ^2.0
Suggests
- silex/web-profiler: For using the Web Profiler in BaseUiApplication
- symfony/asset: For using the BaseUiApplication
- symfony/twig-bridge: For using the BaseUiApplication
- twig/twig: For using the BaseUiApplication
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_handler
和core.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
会更简单。 - 同样适用于安全组件(
SecurityServiceProvider
、RememberMeServiceProvider
、SessionServiceProvider
):想象一个无状态的认证应用——在这种情况下使用后两个组件是没有意义的。 - 交互式应用可能会使用
CsrfServiceProvider
和FormServiceProvider
。然而,它们的依赖性高度依赖于最终的应用,例如,如果使用默认的表单模板,则需要TranslationServiceProvider
,但对于自定义模板可能是不必要的。
提供者
-
主题提供者
ThemeServiceProvider
可用于动态确定 Twig 视图和资源的路径。虽然它打算与BaseUiApplication
一起使用,但它与简单的 Silex 应用程序兼容。主题 可能 在其根目录下有一个名为
assets.php
的文件,用于返回在模板中使用的命名包数组(例如 Bootstrap、jQuery 等)。可以通过扩展$app
的assets.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 许可。