b13 / typo3-config
用于设置TYPO3特定环境配置的Fluent API
Requires
- php: ^7.2 || ~8.0
- typo3/cms-core: ^9.5.14 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0
Requires (Dev)
- typo3/coding-standards: ^0.6
This package is auto-updated.
Last update: 2024-09-21 11:21:27 UTC
README
TLDR: 不要重复自己。
在b13,我们根据实际环境(开发/生产环境)运行相似的代码和特定于站点的功能。为此,我们通常有一个默认的“最佳实践”设置列表,我们通常将其从一个项目复制到下一个项目。
这个小型库包含一个PHP类,使我们在设置全局 $TYPO3_CONF_VARS
设置时生活更加轻松,这通常发生在本地配置、附加配置和扩展的 ext_localconf.php
文件中。
注意使用TYPO3 v12
配置文件LocalConfiguration和AdditionalConfiguration已被移动和重命名,请参阅 配置文件
原因1:我们希望配置文件与环境相关
使用我们的配置类,TYPO3的“AdditionalConfiguration”(位于 :file:typo3conf/AdditionalConfiguration.php
)看起来就像这样
<?php
\B13\Config::initialize()
->appendContextToSiteName()
->includeContextDependentConfigurationFiles();
这设置了某些合理的默认值(见下文),并且还检查以下文件的存在
config/system/development.php
config/system/production.php
如果您有具有子上下文(如“Production/QA”)的TYPO3_CONTEXT,则除了 config/system/production.php
之外,还包括 config/system/production/qa.php
文件。
原因2:我们不希望重复相同的“最佳实践”
initialize()
方法为特定环境设置合理的默认值,为开发环境激活调试,默认情况下在生产环境中禁用弃用日志。
b13使用DDEV-Local用于本地环境,但是维护相同的配置反复是很繁琐的。如果使用DDEV-Local,则 initialize
将自动设置相应的DDEV-Local环境设置。
如果您想避免任何形式的魔法,只需在您的附加配置文件中使用此方法即可。
<?php
\B13\Config::initialize(false)
->appendContextToSiteName()
->includeContextDependentConfigurationFiles();
此外,API还提供了一些有用的辅助方法,我们可以用它来设置特定的值。当然,您可以使用此API结合设置其他环境或项目特定的设置。
\B13\Config::get()
->useMailhog()
->allowInvalidCacheHashQueryParameter()
->initializeRedisCaching();
# Also set other TYPO3 configuration values as you need
$GLOBALS['TYPO3_CONF_VARS']['FE']['versionNumberInFilename'] = 'embed';
安装
在您的现有TYPO3项目中使用 composer req b13/typo3-config
安装此包——您就可以开始了。此包仅支持TYPO3 v9 LTS及以上版本,因为我们认为在某些时候,我们需要为多个版本提供多个分支,以便在此包提供稳定的API的同时不进行修改。
我们创建此包的原因
我们已经使用这种方法几年了,发布此包有助于我们以标准化的方式维护此逻辑。我们邀请其他网络公司也这样做,看看大家都可以改进什么,我们可以合作。
TYPO3没有为开发人员设置此类选项提供良好的API,这是我们的一些建议,我们喜欢与世界分享,直到TYPO3核心提供标准化和更好的解决方案。
使用TYPO3,您可以用多种方式配置您的系统,有些人通过扩展来实现,我们就是这样做的,因此:这是我们共同的基础。
缺点
-
如果您使用的是速度较慢的文件系统(NFS)或较旧的PHP版本,您的文件位置可能会因为一些额外的文件查找而减慢该包的速度。理想情况下,我们希望缓存此类信息,但TYPO3核心不支持对
TYPO3_CONF_VARS
进行缓存配置。 -
使用“安装工具”设置全局配置值可能不会按预期工作,因为我们的配置逻辑目前在加载
LocalConfiguration.php
之后才工作。这是TYPO3核心配置系统的主要问题之一。
命名TYPO3_CONTEXT
如果您的TYPO3项目使用Git、Composer和多种环境,则此包运行效果最佳。我们通常也在TYPO3的网站配置中使用上下文,并且认为如果操作得当,这将非常强大。我们内部跨项目承诺使用以下名称。
常规项目
- 开发
- 开发/DDEV
- 测试(CI)
- 测试/单元(CI)
- 生产/实时
- 生产/预发布
- 生产/预发布/特性-TicketNo
- 生产/预发布/特性-TicketNo2
如果您有一个支持多个站点的代码库,我们也会使用子子模式。
- 生产/预发布/站点A
- 生产/预发布/站点B
- 生产/预发布/站点C
- 生产/实时/站点A
- 生产/实时/站点B
- 生产/实时/站点C
谢谢
之前的功能深受Neos Flow的启发,我们的初始TYPO3解决方案是由Achim Fritz开发的。
许可证
该软件包采用GPL v2+许可证,与TYPO3核心相同。有关详细信息,请参阅此存储库中的LICENSE文件。
鸣谢
此软件包由Achim Fritz和Benni Mack于2021年为b13 GmbH创建。
查找我们开发的更多TYPO3软件包,这些软件包有助于我们在客户项目中创造价值。作为我们的工作方式的一部分,我们专注于测试和最佳实践,以确保所有代码的长期性能、可靠性和结果。