咱們以前都是將一個閉包函數做爲第二個參數傳入到Route
類對應的方法中,可是這種方式咱們在作測試的時候可使用下,真正開發的時候仍是須要將讓route能指向對應的控制器類的方法的,爲何要這麼作?laravel
第一:這樣不會讓你的路由文件太過臃腫和混亂,其次在項目正式上線前咱們會執行php artisan route:cache
來生成一個路由緩存文件,官方說這樣能使路由解析的速度快上100倍,是否是吹牛,我不知道,可是變快是確定的,可是執行這條命令的時候,只有route對應控制器的代碼纔會被緩存,因此從這兩點來看,我不建議你們在正式項目開發的時候去路由上寫閉包函數。緩存
咱們仍是打開咱們項目的route.php
文件, 此次咱們將文件中的代碼改爲這樣:bash
// Route::get('/', function () { // $users = ['Zhoujiping', 'Kuker Chou']; // return view('welcome', compact('users')); // }); Route::get('/', 'PagesController@home');
這裏先說下get()
方法,get()
對應http方法中的get
,使用get()方法,就說明這條路由是經過method=get
來訪問的,那麼若是http訪問的method=post
請求呢,那就是對應Route::post()
方法,是否是很好記,下面咱們列舉下這些方法:閉包
Route::get() // 對應http的get Route::post() // 對應http的post Route::put() // 對應http的put Route::patch() // 對應http的patch Route::delete() // 對應http的delete
回過頭來再來看:app
Route::get('/', 'PagesController@home');
這裏PagesController
是一個控制器類,home
是該控制器類的方法,整條語句的意思就是當訪問/
的時候,就會去執行PagesController類中的home方法。函數
PS:這裏要提一下命名規範,類名要用駝峯命名法,控制器類我建議你們以單詞的複數 + Controller.php
, 如咱們命名成PagesController.php
,但不要命名成PageController.php
, 固然怎麼命名都不會讓程序錯誤,這裏你們能夠想一下爲何控制器類中的單詞要使用複數呢?post
咱們來訪問一下:測試
從錯誤提示能夠看出,route已經指向了控制器,可是說控制器不存在,那麼如今咱們要去創建控制器類了,咱們能夠在app/Http/Controllers/
目錄中手動創建PagesController.php
文件,而後讓其繼承app/Http/Controllers/Controller.php
這個類。不過這麼作彷佛太過麻煩了,這時候咱們就能夠用過laravel強大的Artisan
來自動生成這個控制器類:ui
➜ cd /usr/local/var/www/Laravel52 #切換到項目根目錄 ➜ php artisan make:controller PagesController #生成控制器 Controller created successfully.
咱們不須要去記php artisan
的任何命令,你只要知道它有哪些功能便可,忘記命令的時候執行下php artisan
查看下命令便可。若是要查看某條命令的具體信息,你還能夠這麼作:
➜ php artisan help make:controller Usage: make:controller [options] [--] <name> Arguments: name The name of the class Options: --resource Generate a resource controller class. -h, --help Display this help message -q, --quiet Do not output any message -V, --version Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output -n, --no-interaction Do not ask any interactive question --env[=ENV] The environment the command should run under. -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug Help: Create a new controller class
如今咱們能夠在app/Http/Controllers/
找到咱們的PagesController.php
類了,咱們打開它,默認就生成了下面的代碼:
<?php // 聲明命名空間 namespace App\Http\Controllers; // 下面兩句咱們暫時不用,一會咱們刪除它 use Illuminate\Http\Request; use App\Http\Requests; // 控制器類都會繼承Controller類 class PagesController extends Controller { // }
下面咱們寫上咱們的home方法:
<?php namespace App\Http\Controllers; class PagesController extends Controller { public function home() { $users = ['Zhoujiping', 'Kuker Chou']; return view('welcome', compact('users')); } }
咱們再來運行下:
就那麼的簡單,咱們再來玩一下,route.php寫路由:
Route::get('about', 'PagesController@about');
PagesController中以下:
<?php namespace App\Http\Controllers; class PagesController extends Controller { public function home() { $users = ['Zhoujiping', 'Kuker Chou']; return view('welcome', compact('users')); } public function about() { return 'About Page'; } }
ok, 咱們訪問http://localhost:8000/about
就會出現About Page這些字了。
好了,本節到這裏結束。這幾節都很是的簡單,單存閱讀的話,很快就能看完,必定要本身去測試和運行,不然後續的教程是確定學不下去的。