MrNeo config/app.php dosyasındaki providers dizisindeki sağlayıcıların önce register() yöntemleri ateşlenir ve buradaki binding dediğimiz servis konteyneri üzerindeki eşleştirme ve direktifler diğer sağlayıcılar içerisinde kullanılabilmesi için derlenir. Bu işlemden sonra başa dönülür ve yine aynı şekilde config/app.php dosyasındaki providers dizisindeki sağlayıcıların boot() yöntemi sırası ile ateşlenir. Bu aşama bootstrapping dediğimiz framework'ün yüklenme aşamasıdır. Sırayla gittiği için siz sonra yüklenen bir sağlayıcının özelliğini öncesindeki bir sağlayıcıda kullanamazsınız. O yüzden AppServiceProvider içinde Route::currentRouteName() null gelmesi normal çünkü o aşamada henüz router devreye girmemiş oluyor ve dolayısıyla istek de sevk (dispatch) edilmemiş oluyor.
View::composer() kullanırsanız ama çalışır çünkü composer kullanırken siz View::share() gibi değeri alıp direkt paylaşmıyorsunuz; sadece paylaşılacak kodu oluşturuyorsunuz ve o kod Blade dosyanız render edilmeden önce, yani framework tamamen yüklenip işlek istenip controller'ın ilgili yöntemine dispatch edildikten sonra çalışıyor. Yani aslında AppServiceProvider::boot() içinde çalışmıyor; sadece orada belirleniyor. @sineld'in dediği ayrı bir servis sağlayıcı içinde kodları toplama işi ile kastettiği bu değil, o sadece kod organizasyonu için (yani ben öyle anladım) ViewComposerServiceProvider oluşturup içinde aynı şeyi yaparsanız yine çalışmaz.
Tavsiyem framework'ün yaşam döngüsü konusunda bilgisi olmayanların View:share kullanmamaları, yerine View::composer kullanmaları. View::composer('*', fn...)
yaptığınızda View::share etkisini gerçekleştirmiş olursunuz.
View::share() ya da View::composer() ile şablonlara değişken gönderirken başına bir şey ekleyin ki yerel değişkenlerle karışmasın. Ben genelde başına iki alt çizgi (__) ekliyorum, hem karışmasını engelliyor hem de share ya da composer ile geldiğini anlamamı sağlıyor.
Şablonların başına şablondaki değişkenler @php direktifi ile eklerseniz değişkenleri anlamanız kolaylaşır ve PhpStorm gibi IDE'ler kod yardımcılarını devreye sokabilir:
@php
/** @var \App\Models\User $user */
/** @var string $__logo */
/** @var \App\Models\Product[] $products */
@endphp
@section('content')
...