Check implementation instead of assuming it is View #1571
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR ensures that Laravel Telescope does not crash when handling views that implement
Illuminate\Contracts\View\View
but are not instances ofIlluminate\View\View
. Currently, Telescope assumes all views areIlluminate\View\View
and calls methods likegetPath()
andgetName()
that are not part of the contract, leading to errors in applications with custom view implementations.Changes
Illuminate\View\View
before callinggetPath()
andgetName()
.Future Considerations
While this PR only prevents crashes, a more complete solution could involve:
name()
instead ofgetName()
, asname()
is part of the contract.extractPath()
to resolve paths fromname()
whengetPath()
is unavailable.Illuminate\Contracts\View\View
in Laravel to includegetPath()
in the future.This PR does not implement these changes but suggests them as potential improvements for broader compatibility.