Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Bypass Finals Laravel Package

dg/bypass-finals

DG\BypassFinals lets you bypass PHP’s final classes and methods at runtime so you can mock, extend, or patch code that’s otherwise locked down—useful for testing legacy dependencies. Lightweight, Composer-ready, and works with popular test frameworks.

View on GitHub
Deep Wiki
Context7
v1.10.0

✨ New Features

  • bootstrap.php – activate BypassFinals at the earliest possible moment, before vendor/autoload.php loads, so nothing slips through unmodified (#74, #58)

🐛 Bug Fixes

  • Fixed proc_open() when given a ['file', ...] descriptor spec – the native wrapper no longer chokes on file-based descriptors (#43)
  • Fixed premature EOF: stream_eof() now waits for an actual empty read before reporting end-of-stream, preventing truncated reads (#75, #50)
  • The cache directory is now created recursively, so deeply nested cache paths just work out of the box (#70, #66)
  • Cleared the stat cache after the is_dir() check in stream_open(), fixing stale filesystem state on cache writes (#69, #67)
  • Fixed debugInfo() output so bypass tokens are reported correctly (#68)
  • NativeWrapper::stream_seek() now detects whether the underlying stream is actually seekable instead of blindly seeking (#63)
  • Final-token removal now preserves constant names, so identifiers that happen to look like the final keyword survive untouched (#64)
  • Added a T_READONLY constant polyfill for PHP < 8.1, keeping older runtimes happy (51736af)
  • Consolidated all cache I/O into a single native stream-wrapper cycle, simplifying the read/write path and reducing wrapper churn (#71, #55)
v1.9.0
  • Make PHPUnitExtension configurable (#59)
  • added BypassFinals::debugInfo()
v1.8.0
  • BypassFinals: added allowPaths() & denyPath()
  • PHPUnitExtension: denies path 'vendor/phpunit'
v1.7.0
  • add settings to cache hash [Closes #53]
  • fixed throwing errors in exists-check functions (#54) [Closes #52]
  • open_stream fail when $path is directory (#56)
v1.6.0
  • added PHPUnitExtension
  • NativeWrapper: implemented stream_set_option()
  • MutatingWrapper has been separated from BypassFinals
v1.5.1

DG\BypassFinals::enable(bypassReadOnly: false);

v1.5.0
  • removes keyword 'readonly' too [Closes #39]
v1.4.0
  • implemented cache
  • calls previous wrapper if one was set [Closes #9]
  • divided into classes BypassFinals & NativeWrapper
  • fixed some bugs
  • tested in PHP 8.2
v1.3.1

fixed some bugs #28, #25

v1.2.0
  • requires PHP 7.1
  • Add setWhitelist() method to allow controlling which files get replaced. (#7)
v1.1.0
  • a lot of fixes
  • respects final as non-keyword [Closes #4]
v1.0.0
  • initial release
  • requires PHP 5.6
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle
atriumphp/atrium