咱们以前都是将一个闭包函数做为第二个参数传入到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这些字了。
好了,本节到这里结束。这几节都很是的简单,单存阅读的话,很快就能看完,必定要本身去测试和运行,不然后续的教程是确定学不下去的。