Lor*_*yer 5 php symfony polyfills composer-php
我正在使用 Composer,并且刚刚更新了guzzlehttp/guzzle. 我对安装的软件包感到惊讶:
>composer update guzzlehttp/guzzle
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 3 installs, 1 update, 0 removals
- Installing symfony/polyfill-php72 (v1.17.0): Downloading (100%)
- Installing symfony/polyfill-mbstring (v1.17.0): Downloading (100%)
- Installing symfony/polyfill-intl-idn (v1.17.0): Downloading (100%)
- Updating guzzlehttp/guzzle (6.5.2 => 6.5.4): Downloading (100%)
Run Code Online (Sandbox Code Playgroud)
我正在使用mbstring已安装的 php 7.4,并且没有理由安装这些填充。Composer 知道我正在使用的 PHP 版本:
>composer show --platform
(...)
ext-mbstring 7.4.2 The mbstring PHP extension
(...)
php 7.4.3 The PHP interpreter
Run Code Online (Sandbox Code Playgroud)
我怀疑我在某个地方配置错误,安装这些填充对我来说没有意义。
如果软件包安装在不符合要求的服务器中,则会安装 Polyfill 。这样可以实现最大的可移植性和兼容性。
如果您知道您的项目已经依赖于特定的平台版本和/或扩展,并且因此您可以确定它们在每个部署中始终可用,那么避免安装这些包的方法是在以下部分中声明它们replace:
"replace": {
"symfony/polyfill-php72": "*",
"symfony/polyfill-mbstring": "*"
}
Run Code Online (Sandbox Code Playgroud)
这将根本阻止安装这些软件包。但这并不能确保安装应用程序时存在这些功能。为了完整起见,您应该在 require 部分添加相应的条目:
"require": {
"php": "^7.2",
"ext-mbstring": "*"
}
Run Code Online (Sandbox Code Playgroud)
这在symfony/polyfill自述文件中被掩盖了,但它只提到了 PHP 版本的 polyfill,尽管相同的逻辑适用于您的项目肯定具有足够的功能而不需要,并且您可以完全避免安装。
不过,如果您不这样做,对性能的影响很小,因此不必担心。
| 归档时间: |
|
| 查看次数: |
1149 次 |
| 最近记录: |