确保laravel与php 5.6.x保持兼容

时间:2017-10-30 16:08:49

标签: laravel composer-php php-7 php-5.6

既然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

我意识到编写器中的规范告诉程序包保持在5.4.x范围内,我只是想确定一下,而且我还担心依赖关系在保持向后兼容方面可能不安全?我想知道我现在是否应该忘记composer update,或者我是否需要更加谨慎地调整composer.json

另请注意,我启动的下一个项目也需要PHP 5.6,我将从这里定制的laravel-base克隆,总是"laravel/framework": "5.4.*",,所以只要这样设置,我会好吗?

更新

回应@Eric Brown的回答,以及对packagist的一些研究,这就是我将主要依赖关系(+ 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,可以与原始文件一起提交。

1 个答案:

答案 0 :(得分:1)

默认情况下,Laravel不会像这样升级到较新版本的Laravel,因为正如您所指出的那样,在您的composer.json文件中,"laravel/framework": "5.4.*"指定Laravel必须始终为版本5.4.some_version_number。您不必过于担心向后兼容性,但如果您仍希望收到有关潜在错误或漏洞的更新,请添加*而不是最后一个数字,例如4.3。*而不是4.3.1。

此外,学习如何使用Git存储库(如Github或Bitbucket)并在其中存储当前版本将非常有用。它们非常适合版本控制,并确保在开发或更新过程中没有任何错误。这让我个人得救了的次数超过了我的数量。