Laravel 4: Jak rozwiązano fasady?
Patrzę na to, co dzieje się na Laravel 4fasady pod maską.
Weźmy tę fasadę jako przykład:
File::get(someArgs);
Jeśli się nie mylę, wywołanie krok po kroku (nadmiernie uproszczone) byłoby:
//static method invocation which are all extended from Facade class
File::__callStatic(get, someArgs)
//returns an instance of FileSystem
File::resolveFacedeInstance('files')
FileSystem->get(someArgs)
To, o czym myliłem się, znajduje się w komentarzu poniżej metodyPlik :: resolveFacadeInstance () poniżej:
protected static function resolveFacadeInstance($name)
{
if (is_object($name)) return $name;
if (isset(static::$resolvedInstance[$name]))
{
return static::$resolvedInstance[$name];
}
/**
* The line that i'm confused about
*/
return static::$resolvedInstance[$name] = static::$app[$name];
}
Moje pytania to:
Jak jestPlik :: $ app nawet zainicjowane lub przypisane wartości wewnątrz klasy elewacjiJeśliPlik :: get () to wywołana fasada
static :: $ app [$ name] rozwiąże to myślenie Application ['files'] lub Application-> pliki, które z kolei wywołują Application -> __ get ('files'), ponieważ nie mapliki nieruchomość wewnątrzPodanie klasa.
Jak powróci FileSystem Class, jeśli jest to tylko treść tej metody?
public function __get($key)
{
return $this[$key];
}