This release introduces a
#[UnitTest]
PHP attribute for skipping framework boot on individual test methods, variadic support for model attributes like
#[Fillable]
和
#[Hidden]
, a new
BatchStarted
event in the job batching lifecycle, and more.
- 新的
#[UnitTest]attribute to skip framework boot per test method - Variadic args for
#[Fillable],#[Appends],#[Hidden], and other model attributes - 新的
BatchStartedevent for job batch lifecycle monitoring - Memory usage shown in verbose queue worker output
- Security:
install:broadcastingnow passes--ignore-scriptsto npm/pnpm
什么是新的
#[UnitTest]
属性
新的
#[UnitTest]
attribute lets you skip framework booting for individual test methods within a
TestCase
that extends Laravel's base test case. This is useful when most tests in a class need the container but a few are pure unit tests that don't.
Without it, every test in the class pays the cost of booting the full framework. With
#[UnitTest]
, those specific methods run as bare PHPUnit tests — which can be an order of magnitude faster.
使用
Illuminate\Foundation\Testing\Attributes\UnitTest
;班级
LocationServiceTest
延伸
测试用例{
民众
功能
test_getCoordinates_resolves_address_for_us
()
:
空白{
// needs the container}#[
UnitTest
]
民众
功能
test_getState_returns_state_from_abbreviation
()
:
空白{
// no framework boot needed}}
拉取请求: #59432
Variadic Model Attributes
Several Eloquent model attributes now accept variadic arguments. Previously, you had to pass an array; now you can pass each value as a separate argument:
// 前#[
可填写
([
'名'
,
'姓'
])]#[
隐
([
'密码'
,
'秘密'
])]班级
用户
延伸
模型
{}// 后#[
可填写
(
'名'
,
'姓'
)]#[
隐
(
'密码'
,
'秘密'
)]班级
用户
延伸
模型
{}
Passing a single array is still supported, so there are no breaking changes.
拉取请求: #59421
BatchStarted
事件
新的
BatchStarted
event fires when the first job in a batch is processed (whether it succeeds or fails). This fills in a gap in the batch lifecycle:
BatchDispatched— jobs are queued, no worker has touched them yetBatchStarted— first job has been processedBatchFinished— all jobs are done (or cancelled)BatchCanceled— batch was cancelled
This makes it possible to distinguish between a batch that's been queued and one that's actively being worked, which is useful for progress monitoring and UI updates.
拉取请求: #59458
Memory Usage in Verbose Queue Worker Output
When running the queue worker with
-v
, each processed job now includes current memory usage alongside the existing timing information:
# 前2026-04-01 09:45:39 App\Jobs\ProcessReport 121599597 database reports 110.57ms DONE# 后2026-04-01 09:45:39 App\Jobs\ProcessReport 121599597 database reports 44.58ms 132.5MB DONE
The memory reading uses the same logic as the worker's internal
memoryExceeded
check, so it gives you a direct view of how close a job is pushing toward the
--memory
limit.
拉取请求: #59379
其他修复和改进
队列和工作者:
- Forward
releaseOnTerminationSignalsthrough schedule groups ( #59357 ) - 额外
LostConnection到WorkerStopReason( #59370 ) - Fixed dependency injection of faked queueing dispatcher ( #59378 )
- Cached
getLockForPopping()result inDatabaseQueue( #59435 ) - Enum support added to
QueueManagerconnection methods ( #59389 ) - Enum support added to
LogManagerchannel and driver methods ( #59391 )
Scheduling:
- Fixed sub-minute scheduling skips at minute boundaries ( #59331 )
模型与数据库:
- 固定的
incrementEach/decrementEachto scope to the model instance ( #59376 ) - 固定的
MorphToeager load matching whenownerKeyis null and the result key is a non-primitive ( #59394 ) CollectedByattribute now follows inheritance ( #59419 )Stringableobjects can now be returned fromcasts()( #59479 )- Fixed macros with static closures ( #59414 )
HTTP & Requests:
- 额外
->file()方法$request->safe()for accessing validated file inputs ( #59396 ) - Pass request to
afterResponsecallback ( #59410 )
类型:
- 额外
isNotEmpty()方法到Uriclass ( #59408 ) - 额外
withoutFragment()方法到Uriclass ( #59413 ) - Fixed URI fragment preservation when decoding query strings ( #59481 )
测试:
收藏品:
Collectionmethods are now compatible with extended subclass constructors ( #59455 )
Schema:
MariaDbSchemaStatenow usesmysql --versionfor client detection instead ofmariadb --version( #59360 )
Security:
- 这
install:broadcastingcommand now passes--ignore-scriptsto npm/pnpm when installing packages, preventing lifecycle scripts from running during installation ( #59485 )
升级说明
对于一般应用场景,预计不会出现重大变更。升级时请查看完整的变更日志以了解详细信息。
参考





