2016-12-03 5 views
0

Я новичок в Laravel Framework, у меня есть базовый Knowlege в PHP OOP, в web.php внутри маршрутов папки этого кодаLaravel Маршрут получить функцию

<?php 

/* 
|-------------------------------------------------------------------------- 
| Web Routes 
|-------------------------------------------------------------------------- 
| 
| Here is where you can register web routes for your application. These 
| routes are loaded by the RouteServiceProvider within a group which 
| contains the "web" middleware group. Now create something great! 
| 
*/ 

Route::get('/', function() { 
    echo 'Hello!'; 
}); 

Насколько я знаю, что: : оператор используется со статическими функциями, поэтому я попытался найти статическую функцию «get», но я ее не нашел.

+0

FYI https://laravel.com/docs/5.3/facades#facade-class-reference, если вам нужно знать, какой класс является фасадом для статического прокси. – lagbox

ответ

1

Route - facade нестатические функции. Вот функция Route::get(): https://laravel.com/api/5.3/Illuminate/Routing/Router.html#method_get

+0

публичная функция __construct ($ методы, $ uri, $ action) { $ this-> uri = $ uri; $ this-> methods = (array) $ methods; $ this-> action = $ this-> parseAction ($ action); if (in_array ('GET', $ this-> methods) &&! In_array ('HEAD', $ this-> methods)) { $ this-> methods [] = 'HEAD'; } if (isset ($ this-> action ['prefix'])) { $ this-> prefix ($ this-> action ['prefix']); } } –

+0

@SeifEddineSlimene OK? Что это должно означать? – ceejayoz

5

Потому что архитектура Laravel немного сложнее, чем просто использование статических классов. Это то, что мы называем Фасадами.

Когда вы вызываете Route :: get(), класс Route попытается получить экземпляр реального объекта маршрута и затем вызвать метод get().

Класс это один:

/vendor/laravel/framework/src/Illuminate/Routing/Router.php 

И метод:

/** 
* Register a new GET route with the router. 
* 
* @param string $uri 
* @param \Closure|array|string|null $action 
* @return \Illuminate\Routing\Route 
*/ 
public function get($uri, $action = null) 
{ 
    return $this->addRoute(['GET', 'HEAD'], $uri, $action); 
} 

Чтобы лучше понять фасадах, пожалуйста, прочитайте:

https://laravel.com/docs/5.3/facades

https://www.sitepoint.com/how-laravel-facades-work-and-how-to-use-them-elsewhere/

ServiceContainer является еще одним крупным игроком в этом процессе, читать об этом тоже:

https://laravel.com/docs/5.3/container

+0

Я не нашел эти строки в файле! –

+3

Из-за его сложности. Вы заглянули в предка Маршрута? Вы поняли, как работает getFacadeAccessor? Все это делается через контейнер IoC, поэтому я добавил несколько ссылок, чтобы вы поняли это лучше. –

+0

другой вопрос, пожалуйста, как я могу использовать Router в Router :: get, однако я не использую какое-либо пространство имен для его нацеливания! –

Смежные вопросы