1. 核心目录文件介绍;
app
:包含了应用程序的核心代码(核心代码指的是自己写的代码)。业务逻辑主要写在 app/Http
里。里面包含了 MVC 中的 C,也叫 Controllers。也就是以后书写 Controllers 的地方
bootstrap
:包含框架启动和自动加载配置的文件。里面有一个 bootstrap/app.php
文件加载配置
config
:包含所有应用程序的配置文件,比如缓存 config/cache.php
、数据库 config/database.php
、队列 config/queue.php
、视图 config/view.php
database
:包含数据库迁移与填充文件
public
:包含了入口 index.php
以及项目的静态资源文件(js、css、图片资源等)
resource
:包含了视图以及原始的资源文件。resource/views
,也就是 MVC 中的 V,视图都要写在这里
routes
:包含路由文件:routes/web.php
和 routes/api.php
。
storage
:包含了编译后的模板文件、以及基于文件的 SESSION、文件缓存、日志等
tests
:单元测试目录。放的是测试代码
vendor
:包含 composer 加载的依赖模块
2. 路由和 MVC;
2.1 路由;
2.11 路由简介;
Laravel 框架中的 MVC 不同与传统的 MVC,传统 MVC 请求直接对应控制器,但是 Laravel 中的请求对应路由 Laravel 中的路由简单的来说就是将用户的请求转发给相应的程序进行处理 作用就是建立 URL 和程序之间的映射(这里的程序指的是 处理函数 )。优点就是灵活的修改 URL,而不需要对程序进行修改 请求类型:get、post、put、patch、delete
2.12 基本路由;
Laravel 5.3 之前,路由文件的路径是 app/Http/routes.php
。之后 app/Http/routes.php
文件被移动到 routes 目录下,并且被分割成两个文件:routes/web.php
和 routes/api.php
。web.php 中的路由应用了 web 中间件组,而 api.php 中的路由应用了 api 中间件组。 打开 routes/web.php
<?php
Route: : get ( 'basic1' , function ( ) {
return 'Hello world' ;
} ) ;
Route: : post ( 'basic2' , function ( ) {
return 'basic2' ;
} ) ;
2.13 多请求路由;
<?php
Route: : match ( [ 'get' , 'post' ] , 'multi1' , function ( ) {
return 'multi1' ;
} ) ;
Route: : any ( 'multi2' , function ( ) {
return 'multi2' ;
} ) ;
2.14 路由参数;
<?php
Route: : get ( 'user/{id}' , function ( $id ) {
return 'user_' . $id ;
} ) ;
Route: : get ( 'user/{name?}' , function ( $name = 'name' ) {
return 'user_' . $name ;
} ) ;
Route: : get ( 'user/{name?}' , function ( $name = 'name' ) {
return 'user_' . $name ;
} ) - > where ( 'name' , '[A-Za-z]+' ) ;
Route: : get ( 'user/{id}/{name?}' , function ( $id , $name = 'name' ) {
return 'user-id-' . $id . '-name-' . $name ;
} ) - > where ( [
'id' = > '[0-9]+' ,
'name' = > '[A-Za-z]+'
] ) ;
2.15 路由别名;
<?php
Route: : get ( 'user/member-center' , [ 'as' = > 'center' , function ( ) {
return 'member-center' ;
} ] ) ;
Route: : get ( 'user/member-center' , [ 'as' = > 'center' , function ( ) {
return route ( 'center' ) ;
} ] ) ;
2.16 路由群组;
很多路由会有公共的需求,比如 URL 区段、中间件、命名空间、前缀等。可以用路由群组套用属性到多个路由、而不是每个路由都要设置。
<?php
Route: : group ( [ 'prefix' = > 'member' ] , function ( ) {
Route: : get ( 'user/center' , [ 'as' = > 'center' , function ( ) {
return route ( 'center' ) ;
} ] ) ;
Route: : any ( 'multi2' , function ( ) {
return 'member-multi2' ;
} ) ;
} ) ;
2.17 路由中输出视图;
<?php
Route: : get ( 'view' , function ( ) {
return view ( 'welcome' ) ;
} ) ;
2.2 控制器;
Laravel 中路由只是用来接收请求,并转发给控制器的方法 进行处理
2.21 新建控制器;
新建控制器 app/Http/Controllers/MemberController.php
<?php
namespace App\ Http\ Controllers ;
class MemberController extends Controller {
public function info ( ) {
return 'member-info' ;
}
}
2.22 控制器和路由关联 ;
需要和路由关联才能访问这个控制器 修改 routes/web.php
<?php
Route: : get ( 'member/info' , 'MemberController@info' ) ;
Route: : match ( [ 'get' ] , 'member/info' , [ 'uses' = > 'MemberController@info' ] ) ;
2.23 关联控制器后,路由的特性如何使用;
<?php
Route: : get ( 'member/info' , [
'uses' = > 'MemberController@info' ,
'as' = > 'memberinfo'
] ) ;
namespace App\ Http\ Controllers ;
class MemberController extends Controller {
public function info ( ) {
return route ( 'memberinfo' ) ;
}
}
<?php
Route: : get ( 'member/{id}' , [
'uses' = > 'MemberController@info'
] ) - > where ( 'id' , '[0-9]+' ) ;
namespace App\ Http\ Controllers ;
class MemberController extends Controller {
public function info ( $id ) {
return 'member-info-id-' . $id ;
}
}
2.3 视图;
2.3.1 新建视图;
member- info php
member/ info blade
{ { $name } }
{ { $age } }
2.3.2 输出视图;
<?php
namespace App\ Http\ Controllers ;
class MemberController extends Controller {
public function info ( $id ) {
return view ( 'member-info' ) ;
}
}
namespace App\ Http\ Controllers ;
class MemberController extends Controller {
public function info ( $id ) {
return view ( 'member/info' , [
'name' = > 'Tom' ,
'age' = > '30'
] ) ;
}
}
2.4 模型;
2.4.1 新建模型;
模型(Model) 路径在 app
下,app/User.php
就是示例文件 新建模型 app/Member.php
<?php
namespace App ;
use Illuminate\ Database\ Eloquent\ Model ;
class Member extends Model {
public static function getMember ( ) {
return 'member is Tom' ;
}
}
2.4.2 使用模型。
修改控制器 app/Http/Controllers/MemberController.php
<?php
namespace App\ Http\ Controllers ;
use App\ Member ;
class MemberController extends Controller {
public function info ( $id ) {
return Member: : getMember ( ) ;
}
}
访问 http: