strangebuzz / microsymfony
一个初始化应用程序以使用 Symfony 作为微框架的模板
Requires
- php: >=8.2
- ext-ctype: *
- ext-dom: *
- ext-iconv: *
- ext-libxml: *
- ext-simplexml: *
- ext-xml: *
- league/commonmark: ^2.4
- symfony/asset: ~7.1.0
- symfony/asset-mapper: ~7.1.0
- symfony/console: ~7.1.0
- symfony/dotenv: ~7.1.0
- symfony/flex: ^2
- symfony/form: ~7.1.0
- symfony/framework-bundle: ~7.1.0
- symfony/http-foundation: ~7.1.0
- symfony/http-kernel: ~7.1.0
- symfony/intl: ~7.1.0
- symfony/monolog-bundle: ^3.8
- symfony/routing: ~7.1.0
- symfony/runtime: ~7.1.0
- symfony/stimulus-bundle: ^2.0
- symfony/string: ~7.1.0
- symfony/twig-bundle: ~7.1.0
- symfony/ux-turbo: ^2.16
- symfony/validator: ~7.1.0
- symfony/web-link: ~7.1.0
- symfony/yaml: ~7.1.0
- twig/extra-bundle: ^3.0
- twig/markdown-extra: ^3.7
- twig/twig: ^3.0
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.8
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-symfony: ^1.3
- phpunit/phpunit: ^11.0
- roave/security-advisories: dev-latest
- symfony/browser-kit: ~7.1.0
- symfony/css-selector: ~7.1.0
- symfony/maker-bundle: ^1.61
- symfony/requirements-checker: ^2.0
- symfony/stopwatch: ~7.1.0
- symfony/web-profiler-bundle: ~7.1.0
Conflicts
README
简介 🖋
MicroSymfony 是一个强化版的 Symfony 7.1 应用程序骨架,可直接使用。
我已经写了一篇长博客文章,详细解释了它包含的内容;它将是文档的参考。需要时我会更新它
因此,这篇博客文章是官方文档。这个 README 是 MicroSymfony 包含内容的预告。
如果您想在 composer.json
文件中使用最新的 Symfony 6.4 LTS 版本,将所有 7.1
替换为 6.4
,运行 composer up
,然后您就完成了。
演示 🌈
毕竟,现场演示总是比所有解释都要好。下面是它
- 现场演示在 https://microsymfony.ovh
- 现场演示由 FrankenPHP 提供,在 https://frankenphp.microsymfony.ovh
使用 Symfony 二进制文件快速入门 🎶
您必须在本机安装 Symfony 二进制文件 和 composer。
要从 GitHub 模板创建新项目,运行
composer create-project strangebuzz/microsymfony && cd microsymfony
然后使用 make 启动 PHP 服务器
make start
或者使用 Castor
castor symfony:start
打开 https://127.0.0.1:8000(假设您的 8000 端口是空闲的)并享受!😄
FrankenPHP 🧟
我们还可以使用 FrankenPHP 来运行 MicroSymfony。您必须在本机安装 Docker。
从 GitHub 模板创建新项目,运行
docker run --rm -it -v $PWD:/app composer:latest create-project strangebuzz/microsymfony && cd microsymfony
docker run --rm -it -v $PWD:/app composer:latest require runtime/frankenphp-symfony
然后运行
docker run \
-e FRANKENPHP_CONFIG="worker ./public/index.php" \
-e APP_RUNTIME=Runtime\\FrankenPhpSymfony\\Runtime \
-v $PWD:/app \
-p 80:80 -p 443:443 \
-d \
dunglas/frankenphp
打开 https:// 并享受!😄
PS:在 Windows 上,将 $PWD
替换为 "%cd%"
。
您还可以直接使用 FrankenPHP 分支。
需求 ⚙
可选需求 ⚙
堆栈 🔗
- Symfony 7.1
- Twig 3.8
- Hotwired stimulus 3.2 和 Turbo 8.0
- PHPUnit 11.0
- 无类CSS框架BareCSS
备注:由于BareCSS项目不再维护,已创建一个分支以修复一些问题。
特性 🚀
MicroSymfony提供以下特性,可直接使用
- 两个任务运行器
- 使用PHPStan进行静态分析
- 使用php-cs-fixer进行编码规范
- 测试(《演示》)
- 代码覆盖率100%
- GitHub CI (actions)
- 资产映射+Stimulus(《文档》)
- 自定义错误模板
注意事项 📒
在assets/app.js中禁用了Turbo表单。要为特定表单启用此功能,请向其添加data-turbo="true"
属性。或者将参数Turbo.setFormMode
更改为on
以在全局范围内激活功能。在这两种情况下,您都需要相应地修改控制器代码。详情。
其他良好实践 👌
- 在所有PHP文件中使用严格类型(《示例》)
- 在动作控制器中使用ADR模式(《示例》)(《文档”)
- 使用ergebnis/composer-normalize对composer.json文件进行规范化
- 使用composer bin 插件安装和运行php-cs-fixer
功能分支 🚅
功能分支不会被合并到主分支,而是用于集成新的供应商库或制作POC。例如,你曾经梦想过在Symfony项目上测试Eloquent,Laravel ORM吗?那么克隆eloquent
分支,运行composer install
,你就完成了。
- FrankenPHP(基于2024-09-26重新提交)
- Eloquent ORM(基于2024-09-27重新提交)
这些分支在每次发布后都会重新提交,以确保它们始终是最新的。
参考文献 📚
- 为你的Symfony控制器提供一个更好的ADR模式(strangebuzz.com)(即将推出)
- 路线、控制器和模板的好命名约定?(jolicode.com)
- 前端应用开发,Symfony风格(dunglas.dev)
- 使用Travis和PHPUnit为GitHub拉取请求进行自动测试覆盖率检查(ocramius.github.io)
- 安装和使用php-cs-fixer(strangebuzz.com)
- Castor,穿越任务运行者海洋的旅程(jolicode.com)
- 用坚实的基础初始化你的Symfony项目(strangebuzz.com)
- 组织你的Symfony项目测试(strangebuzz.com)
- 你的Symfony最佳实践是什么?(strangebuzz.com)
- 利用GitHub actions为Symfony项目设置CI/CD工作流程(strangebuzz.com)
- Symfony框架最佳实践(symfony.com)