php - 如何在 Laravel 中正确安装包?

标签 php laravel laravel-5 laravel-5.1

最近,我安装了一个软件包LaravelFacebookSdk


安装

我通过添加

来更新我的 composer.json
"sammyk/laravel-facebook-sdk": "~3.0"

然后,我运行 composer update


服务提供商

在我的 /config/app.php 中,我将 LaravelFacebookSdkServiceProvider 添加到 providers 数组。

'providers' => [
    SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider::class,
    ];

一切正常。然后,我将它推送到我的存储库。


问题来了!

第二个开发人员进来做了一个git pull 并运行composer update

他会报错

 SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider::class,

未定义。因为,我在 providers 数组下的 /config/app.php 中声明了这一点。

他必须注释掉那行,然后先运行composer update。成功安装所有内容后,返回并再次取消注释该行。

其他开发人员是否每次都必须这样做,我们安装了一个新包?

我在这里遗漏了什么吗?

如果我做错了什么,请多多指教。

最佳答案

这里的问题是 php artisan clear-compiled 命令被配置为在 composer.json 文件中的更新过程之前运行。由于 artisan 是 Laravel 应用程序不可或缺的一部分,因此当应用程序代码有问题时它会提示。由于您有一个尚未存在的类的引用,它会吐出 RuntimeException。您可以通过将该命令从 pre-update-cmd 列表移动到 composer.json 中的 post-update-cmd 列表来解决此问题。

所以改变这个:

"scripts": {
    ...
    "pre-update-cmd": [
        "php artisan clear-compiled"
    ],
    "post-update-cmd": [
        "php artisan optimize"
    ]
},

到这里:

"scripts": {
    ...
    "pre-update-cmd": [
    ],
    "post-update-cmd": [
        "php artisan clear-compiled",
        "php artisan optimize"
    ]
},

现在,当引用的 LaravelFacebookSdkServiceProvider 类存在时,clear-compiled 命令将在更新过程后运行,因此不再有错误。

关于php - 如何在 Laravel 中正确安装包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34726101/

相关文章:

php - MySQLi 准备好的语句 : Short versions in one line

php - google calendar watch过期时间超过1个月?

laravel - 选择表中的最后一行

forms - Laravel5 Eloquent from 和延迟加载的关系

php - 比较 Laravel 5 中两个不同表的时间戳

php - Laravel 收银台 : Trouble Updating Card (Fatal Error)

php - 将 Sphinx 与 PHP 和 MySQL 一起使用的指南

php - 获取最后一个 "-"之前的字符(破折号)

php - 在 null 上调用成员函数 comments()

javascript - Vuejs ajax GET 请求未在 Laravel 5.1 Blade 模板中返回数据