我有一个用PHP编写的程序。当前版本是7.4,一切都很好。
今天我已经在composer中升级了PHP版本。Json到8.2,一切仍然正常。现在问题来了。我的软件现在使用的是最新版本的PHP吗?还是我还需要做些什么?
是否也需要更新代码?例如,枚举是新的。
前面的枚举在我的代码中是这样的:
use ElaoEnumSimpleChoiceEnum;
final class LogReason extends SimpleChoiceEnum
{
public const NEW_REGISTRATION = 'NEW_REGISTRATION';
}
有必要更新吗?或者只要它能工作就行吗?
在composer.json
中更新PHP版本号只告诉编写者你的项目应该使用哪个版本的PHP。它使用它来决定哪些包与您的应用程序兼容。
。如果你有"php": "8.2"
,那么它只会安装与PHP 8.2兼容的软件包版本。
它还可以防止您在安装了错误版本的PHP的环境中运行composer install
等。
要真正升级你使用的PHP版本,你需要将它安装在应用程序运行的环境中(在你的服务器,VM, Docker容器,XAMPP, MAMP,本地操作系统,WSL或其他)。
要确保您的软件现在正在使用php8.2运行,您可以通过调用phpinfo()函数进行检查。
但是你需要确保你所有的代码仍然在工作。要做到这一点,如果提供的话,您可以运行应用程序的测试套件。
我建议您阅读向后不兼容的更改,并检查代码没有使用它。你必须做三次,每个版本(8.0、8.1、8.2)一次。你应该为不推荐的特性做一次,这样迁移到PHP9会更容易。
你已经升级了作曲器。Json,很多库也升级了。因此,在开发和鉴定环境中,一些手动测试可能是一个好主意。
关于枚举类型,不需要升级代码(但对于可维护性来说是个好主意)。
当我们谈论" PHP版本"时,我们通常指的是"执行PHP脚本的软件版本"。(理论上,我们可以指"该软件实现的语言规范的版本",但PHP没有外部语言标准,因此软件本质上就是规范。)
打个比方,假设你买了一台新电脑,把你现有的键盘插进去。您可能需要检查以下三件事:
- 你确定是插对电脑了吗?你可以看看电线,或者你可以打开记事本开始打字。
- 它能在新电脑上完全工作吗?也许它有特殊的宏键可以打开你最喜欢的软件,或者在你最喜欢的游戏中执行一个特殊的动作。你可以测试它们是否仍能达到你的预期;或者你可以查看说明书,了解新系统需要设置什么。
- 是否有以前不能使用的新功能?也许宏键现在可以做额外的事情;但如果你不使用它,并不意味着你没有使用你的新电脑。
对于PHP升级,您可以问同样的三个问题:
- 你确定要用那个版本的软件吗?你可以查看系统设置,或者直接使用phpinfo、phpversion等函数询问PHP。
- 你的程序在新版本上工作正确吗?理想情况下,您将拥有一套不错的自动化测试;更现实的做法是,你可以手动测试功能,密切关注你的错误日志;您还可以查阅PHP手册中的迁移指南,了解可能需要更改的内容。要特别注意从7.4到8.0的迁移,因为这是大多数"中断"的地方。发生了变化。
- 是否有以前不能使用的新功能?这就是枚举的用武之地——如果您愿意,现在可以使用它们,但不使用它们并不意味着不使用PHP 8.2。有一种新的方法来做某事并不意味着旧的方法会立即或永远停止工作。