既然Laravel 5.5
只支持PHP > 7.0
,我该怎么做才能确保它与5.6.x
兼容?我在5.6
环境中,升级PHP
不是一个选项,我想确保composer update
在开发环境中的任何时候运行都不会破坏任何东西。
从文章来看,降级似乎并不容易,所以我只想确保事情不会以某种方式被破坏。
这是作曲家条目/依赖项列表,laravel
被指定为5.4.*
{
"require": {
"php": ">=5.6.4",
"laravel/framework": "5.4.*",
"laravel/tinker": "~1.0",
"laravelcollective/html": "^5.4.0"
},
"require-dev": {
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "~5.7"
},
}
那么,这是否意味着我不能再运行composer update
?或者我仍然可以安全地更新我的其他包,例如上面指定的包,并且laravel
将保持5.4.36
?
我意识到composer中的规范告诉包保持在5.4.x
范围内,我只是想确保,而且我还担心依赖项在保持向后兼容方面可能不安全?我想知道我是应该暂时忘记composer update
,还是需要更仔细地调整composer.json
。
另外请注意,我的下一个项目也需要PHP 5.6
,我将从这里的自定义laravel库进行克隆,该库将始终具有"laravel/framework": "5.4.*",
,所以只要这样设置,我会很好吗?
更新
为了回应@Eric Brown的回答,以及对包装学家的一些研究,我将主要依赖项(+laravelcollective/html
)调整为:
"require": {
"php": ">=5.6.4",
"laravel/framework": "5.4.*",
"laravel/tinker": "1.0.*",
"laravelcollective/html": "5.4.*"
},
"require-dev": {
"fzaninotto/faker": "1.7.*",
"mockery/mockery": "0.9.*",
"phpunit/phpunit": "5.7.*"
},
接下来,我可能会用Laravel/vendor文件的副本初始化一个新的git repo,然后把它放在一个新目录中,我真的不想弄乱子模块,所以它可能会变成一个tarball,可以与原始文件一起提交。
默认情况下,Laravel不会像那样升级到Laravel的新版本,因为正如您所指出的,在您的composer.json文件中,"laravel/framework": "5.4.*"
指定Laravel必须始终是5.4.some_version_number版本。您不必太担心向后兼容性,但如果您仍然希望接收有关潜在错误或漏洞的更新,添加一个*而不是最后一个数字,例如4.3.*而不是4.3.1。
此外,学习如何使用Github或Bitbucket等Git存储库并在其中存储当前版本也是非常有益的。它们非常适合版本控制,并确保在开发或更新中不会出现太严重的错误。这对我个人来说救了我无数次。