If you use this:
Route::get('/articles', ['App\Http\Controllers\ArticlesController@show']);
Your action (2nd parameter) should be string and not array. Also, the variable name (in your controller's method parameters) should match with the wildcard in your URI, like this:
Route::get('/articles/{id}', 'App\Http\Controllers\ArticlesController@show');
Then your method:
public function show($id)
{
$article = Article::findOrFail($id);
return view('articles.show', compact('article'));
}
Also, I suggest you read this: https://laravel.com/docs/8.x/routing#route-model-binding
So you can do this easily:
Route::get('/articles/{article}', 'App\Http\Controllers\ArticlesController@show');
// or
// import
use App\Http\Controllers\ArticlesController;
// tuple route
Route::get('/articles/{article}', [ArticlesController::class, 'show']);
Then your method, like this:
public function show(Article $article)
{
return view('articles.show', compact('article'));
}