2013-01-15 17 views
8

Używam Laravel 3 w jednym projekcie i to była radość. Spojrzałem również na kod źródłowy kilka razy, aby zobaczyć, jak niektóre rzeczy działają za kulisami.Laravel 4: jak mogę zrozumieć, jak to wszystko działa?

Ale teraz w Laravel 4, nie wiem, od czego zacząć i jak to wszystko zrozumieć. Gdzie mogę się dowiedzieć wszystkiego za kulisami Laravel 4?

Przykład: chciałem sprawdzić, czy DB::insert() zwraca identyfikator wstawionego wiersza. Więc zacząłem szukać. 1. Znalazłem klasę Illuminate \ Support \ Facades \ Facade, która "enkapsuluje" DB. 2. Wywoływana jest funkcja resolveFacadeInstance, a następnie próbuję wydrukować te tablice, ale mój komputer zawiesza się: - /. I jestem pewien, że doprowadziłoby to do wielu innych zajęć, których nie zrozumiałbym.

Czy istnieje sposób, w jaki mógłbym spróbować poznać wewnętrzne działanie Laravel 4? Może ślady stosu?

+1

może pomóc w najbliższej przyszłości: http://area51.stackexchange.com/proposals/46607/laravel – Kriem

+2

usunięta propozycja ... – Tebe

Odpowiedz

14

Klasa elewacji to tylko klasa filtru, która umożliwia wywoływanie metod tak, jakby były statyczne. Dla odwzorowań elewacyjnych przejść tutaj: http://laravel.com/docs/facades#facade-class-reference

Punktem wyjścia do pełnego zrozumienia centrach funkcjonowanie laravel powinien rozpocząć się:

/public/index.php 

Możesz śledzić logikę programu, zauważając, że wymaga start.php, który ładuje instancję „Aplikacja”, która jest znaleźć tutaj:

/vendor/laravel/framework/src/Illuminate/Foundation/Application.php 
+0

Hmmm, to nie jest dużo, ale to dopiero początek :) –

1

Możesz sprawdzić wczesne dokumenty dla laravel 4 tutaj: http://four.laravel.com/ - powinna dać dobry punkt wyjścia

+1

To są dokumenty, jak korzystać z Laravel, a nie dokumenty o wewnętrznych działaniach. –

1

Rzeczywisty kod Laravel 4 jest dobrze udokumentowany w plikach. Jeśli chcesz zrozumieć wewnętrzne działania, otwórz pliki kodu źródłowego i przeczytaj notatki. Na przykład sprawdziłem kod DB :: insert() w /vendor/laravel/framework/src/Illuminate/Foundation/Application.php.

/** 
* Run an insert statement against the database. 
* 
* @param string $query 
* @param array $bindings 
* @return bool 
*/ 
public function insert($query, $bindings = array()) 
{ 
    return $this->statement($query, $bindings); 
} 

Ok, więc jest to wywołanie funkcji oświadczenie więc szukać instrukcji funkcyjnej w tym samym kodem/klasa:

/** 
* Execute an SQL statement and return the boolean result. 
* 
* @param string $query 
* @param array $bindings 
* @return bool 
*/ 
public function statement($query, $bindings = array()) 
{ 
    return $this->run($query, $bindings, function($me, $query, $bindings) 
    { 
     if ($me->pretending()) return true; 

     $bindings = $me->prepareBindings($bindings); 

     return $me->getPdo()->prepare($query)->execute($bindings); 
    }); 
} 

Możemy teraz zobaczyć, że ta zwraca logiczną wynik w oparciu o komentarze powyżej kodu.

4

This Tuts+ video pokazuje kilka sposobów na sprawdzenie, która klasa faktycznie wykonuje pracę.

Np .:

$root = get_class(DB::getFacadeRoot()); 
var_dump($root); 
0

Jeśli pochodzą z laravel 3 this article jest dla ciebie. Po tym należy przeczytać other tutorials z tej serii. uwaga

autora:

Ten artykuł powinien przedstawić niektóre z ważniejszych zmian laravel między wersjami 3 i nadchodzącej wersji 4. pamiętać to nie wszystkie zmiany. W miarę zbliżania się wydania Laravel 4 będę aktualizował ten artykuł.Jeśli masz jakiekolwiek problemy z Laravel 4, proszę przeskoczyć na #laravel na Freenode. W tym czasie chcielibyśmy poprosić ludzi, aby nie publikować tematów pomocy na forach.