我有点坚持加载 Laravel 队列/作业的文件
我正在使用 Laravel 排队/异步作业(我们称它为作业以便于使用)
好吧,让我们从头开始,我们有自己的翻译功能,我们也__()
像 Laravel 的默认功能一样命名它,不要问我为什么等等。(简单的解决方案就是重命名它,我知道)但这就是我必须坚持(除非这可能无法修复)。
因此,要在 Laravel 之前声明函数,我们是否将函数插入到 autoload 之前,index.php
就像这样。
/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader for
| our application. We just need to utilize it! We'll simply require it
| into the script here so that we don't have to worry about manual
| loading any of our classes later on. It feels great to relax.
|
*/
require __DIR__.'/../app/Helpers/localization.php'; <-- yes this file
require __DIR__.'/../vendor/autoload.php';
这适用于网站,如果我们使用SomeJob::dispatchNow()
(非异步)执行作业
但是当我们想要做一个异步工作时SomeJob::dispatch()
,index.php
不会调用它,所以永远不需要文件,所以函数也不需要。(或者我错了吗?)
我用composer.js
自动加载试过了
"autoload": {
"psr-4": {
"App\\": "app/"
},
"classmap": [
"database/seeds",
"database/factories"
],
"files": [
"app/Helpers/helpers.php", <-- works fine
"app/Helpers/Localization.php" <-- it does include tho
]
},
现在在我们使用的文件中,if (! function_exists('__'))
但此时该函数已经声明,在网站本身上它也不起作用。
简而言之,index.php 上的 require 仅适用于网站,而不适用于异步作业,因为队列执行作业时永远不会调用 index.php。
使用 composer autoload 对网站或工作都不起作用,因为在我们声明之前,Laravel 已经声明了该函数。
那么我应该在哪里需要文件/声明函数,以便网站直接和异步作业都可以使用我们的函数版本。
PS 我知道我的英语不是那么好,所以如果有什么不清楚的地方或者即使我错过了任何信息,请询问我,我会尝试编辑帖子以使其更清晰。