byhk44 Aslında dokümanda yazıyor ama açıklama ile anlatıldığı için iyi takip etmeniz gerekiyor. Dokümanda sizi service container sayfasına yönlendiriyor:
Instead, the Cache facade extends the base Facade class and defines the method getFacadeAccessor(). This method's job is to return the name of a service container binding. When a user references any static method on the Cache facade, Laravel resolves the cache binding from the service container and runs the requested method (in this case, get) against that object.
çünkü This method's job is to return the name of a service container binding diyerek facade kullanmak istediğiniz sınıfın service contianer içine bir isim ile binding yapılması gerektiğini belirtiyor. Mesela şöyle bir örnek vereyim:
app/Support/MyClass.php
class MyClass
{
public function doSomething()
{
//...
}
}
app/Support/Facades/MyClass.php
use Illuminate\Support\Facades\Facade;
class MyClass extends Facade
{
protected static function getFacadeAccessor()
{
return 'myclass'; // Aşağıda bind yapılırken kullanılan alias
}
}
AppServiceProvider::register():
$this->app->bind('myclass', fn() => new MyClass);
Artık
use App\Support\Facades\MyClass;
MyClass::doSomething();
şeklinde statik olmayan yönteme statik ulaşabilirsiniz. Bir alias ile bind yaptığınız için de
resolve('myclass')->doSomething();
yapabilirsiniz ama dediğim gibi şunu yapmanıza da bir engel yok:
public function index(MyClass $myclass)
{
$myclass->doSomething();
}