[5.8] Fix Error Message issue for Missing Method with Alternative Route Registering Syntax#28397
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This PR was created to resolve issue #27344.
When working through the framework's Routing files it seems that the below
ifstatement found here on theparsemethod ofRouting/RouteAction.php, caused a problem when registering a route with the new style added by this PR. For example:Route::get('/test', [App\Http\Controllers\TestController::class, 'index']);.By passing
trueas the second argument to theis_callablefunction (reference to PHP built inis_callablefunction and its parameters can be found here), it performs a syntax only check on the$varthat is passed as the first argument.This allows the $action variable that is sent through to the
parsemethod to pass the aboveifstatement, which then sets theusesandcontrolleritems in the Route's action array as intended by the original PR.Then when the route's uri is hit in the browser it returns the proper error message, like: "Method App\Http\Controllers\TestController::index does not exist." as opposed to the generic "Function () does not exist", that the original issue report mentioned.
I ran PHPUnit and all of the tests were passing, except the ones that were skipped, see below from my console:
P.S. This is my first PR to the Laravel Framework, apologies if there are any issues.