hyperf/jet

collect函数与laravel的collect冲突,导致无法在laravel项目里安装使用

Closed this issue · 4 comments

hyperf/jet包里用到了hyperf/utils包里面的collect()函数,这个与laravel里面的collect冲突,所以在laravel里安装了这个hyperf/jet包,会报错,你们能不能修复一下,要不然在laravel里面用不了

这个问题的处理比较麻烦,因为 jet 依赖了 hyperf/rpc 组件,而这两个组件目前都依赖 hyperf/utils 组件,虽然并没有使用到相关的全局函数,但如果移除 hyperf/utils 的全局方法也会造成较大的 BC

不过在实现 function 的时候前面是有一个 function_exists 的判断条件的,只有当 Laravel 的 collect() 方法没注册时才会注册,你可以看看怎么让 Laravel 的 Utils 先行注册,再到 hyperf/utils 的

Linij commented
use App\Events\PodcastProcessed;
use function Illuminate\Events\queueable;
use Illuminate\Support\Facades\Event;

/**
 * 注册应用的任何其他事件
 *
 * @return void
 */
public function boot()
{
    Event::listen(queueable(function (PodcastProcessed $event) {
        //
    }));
}

可以参考这种解决方式

入口函数里,先引入laravel的组件包即可