<?php

//есть роут
Route::get('orders/{order}', 'OrderController@show');

//часть контроллера
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Order;

//!!!-Вопрос-!!!
//суть вопроса вот в чем - в метод show я передаю как зависимость класс Order, который ларавел сразу реализует как объект $order, модель таблицы 'orders'
//и в метод возвращается $order уже выбранная по id из таблицы 'orders', id берется из маршрута 'orders/{order}'.
//по какому правилу, и где это оговаривается, что когджа я делаю иньекцию класса в метод, то ларавел в этой инъекции стандартно создает объект , который ищется по идексу в таблице, который идет параметром в роуте?

class OrderController extends Controller
{
    public function show(Order $order) //тут $order уже именно выбранный из таблицы по индексу id, кторый берется из параметра в роуте.
    {   
        return view('auth.orders.show', compact('order'));
    }

    //...
}

//модель Order - в ней ничего особого
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\Mail;
use App\Mail\OrderCreated;

class Order extends Model
{
    //...
}