久久久久在线观看_又色又爽又黄的免费视频播放_一区中文字幕_日韩电影在线播放

今日焦點(diǎn) 焦點(diǎn)資訊 營(yíng)銷之道 企業(yè)報(bào)道 淘寶運(yùn)營(yíng) 網(wǎng)站建設(shè) 軟件開(kāi)發(fā) 400電話
  當(dāng)前位置: 首頁(yè) » 資訊 » 軟件開(kāi)發(fā) » 正文

Laraval之文件結(jié)構(gòu)、路由、控制器詳解

放大字體  縮小字體 發(fā)布日期:2018-03-05  來(lái)源:企業(yè)800網(wǎng)  作者:新格網(wǎng)  瀏覽次數(shù):958  【去百度看看】
核心提示:本文主要和大家分享Laraval之文件結(jié)構(gòu)、路由、控制器詳解,我們的文章路線是一、 文件結(jié)構(gòu)二、 編寫(xiě)第一行代碼三、 初始強(qiáng)大的 Artisan四、 路由五、 控制器。

本文主要和大家分享Laraval之文件結(jié)構(gòu)、路由、控制器詳解,我們的文章路線是一、 文件結(jié)構(gòu)二、 編寫(xiě)第一行代碼三、 初始強(qiáng)大的 Artisan四、 路由五、 控制器。

一、文件結(jié)構(gòu)

打開(kāi)項(xiàng)目代碼之后,我們就可以在 Sublime的左側(cè)邊欄里清楚的看到 Laravel源碼的結(jié)構(gòu):

下面簡(jiǎn)單介紹一下 Laravel源碼里每個(gè)文件夾都是用來(lái)做什么的,了解結(jié)構(gòu)才能更好地進(jìn)行后續(xù)的開(kāi)發(fā)。

文件夾

介紹

app

網(wǎng)站的業(yè)務(wù)邏輯代碼,例如:控制器/模型/路由等

bootstrap

框架啟動(dòng)與自動(dòng)加載設(shè)置相關(guān)的文件

config

網(wǎng)站的各種配置文件

database

數(shù)據(jù)庫(kù)操作相關(guān)的文件

public

網(wǎng)站的對(duì)外文件夾,入口文件和靜態(tài)資源(CSS,JS,圖片等)

resources

前端視圖文件和原始資源(CSS,JS,圖片等)

storage

編譯后的視圖、基于會(huì)話、文件緩存和其它框架生成的文件

tests

自動(dòng)化測(cè)試文件

vendor

Composer 依賴文件

app/Http/Controllers

存放控制器

app/Http/Middleware

存放中間件

resources/views

視圖路徑 blade視圖

除了上述文件夾,根目錄下有些文件也比較常用:

文件

介紹

.env

環(huán)境配置文件

.env.example

.env 文件的一個(gè)示例

.gitignore

git 的設(shè)置文件,制定哪些文件會(huì)被 git忽略,不納入文件管理

composer.json

網(wǎng)站所需的 composer擴(kuò)展包

composer.lock

擴(kuò)展包列表,確保這個(gè)網(wǎng)站的副本使用相同版本的擴(kuò)展包

gulpfile.js

GULP 配置文件( GULP 后邊會(huì)學(xué)到)

package.json

網(wǎng)站所需的 npm包

readme.md

網(wǎng)站代碼說(shuō)明文件

app/Http/routes.php

網(wǎng)站的大多數(shù)路由都定義在該文件中,該文件將會(huì)被 App\Providers\RouteServiceProvider類加載。

有個(gè)簡(jiǎn)單的了解就好,在后續(xù)開(kāi)發(fā)過(guò)程中會(huì)通過(guò)實(shí)踐對(duì) Laravel 的結(jié)構(gòu)進(jìn)行更深的理解。

二、編寫(xiě)第一行代碼

下面就讓我們編寫(xiě)第一行代碼,Hello World!

首先我們需要定位到我們之前看到過(guò)的歡迎頁(yè)面,這個(gè)頁(yè)面的位置是:resources/views/welcome.blade.php。

打開(kāi)這個(gè)文件,按 ctrl+f 搜索 Laravel 5 可以定位到代碼具體位置

修改為 Hello world 然后記得 ctrl+s 保存。

    .
    .
    .
 
    <body>
        <pclass="container">
            <pclass="content">
                <pclass="title">My first Demo</p>
            </p>
        </p>
    </body>
 
    .
    .
    .

現(xiàn)在打開(kāi)瀏覽器,在地址欄輸入 localhost 可以看到如下效果:


很簡(jiǎn)單,我們的第一行代碼就完成了:)

三、初始強(qiáng)大的 Artisan

(一) 什么是Artisan呢?

熟悉 linux 的朋友都知道,我們平時(shí)的創(chuàng)建/刪除文件等常用操作都可以在命令行里來(lái)完成,Artisan 就相當(dāng)于 Laravel 為我們獨(dú)家定制的一個(gè)命令行工具,提供了很多實(shí)用的命令,可以用來(lái)快速生成 Laravel 開(kāi)發(fā)中常用的一些文件并完成相關(guān)的配置。

(二) 常用 Artisan 命令

使用命令行進(jìn)入我們的代碼根目錄:

cd ~/Code/myweb

然后,執(zhí)行 php artisan list 可以查看常用 artisan 命令:

php artisanlist

如下圖,可以看到顯示出了很多的 artisan 命令:

下面列出最常用的一些命令,使用方法就像上面的php artisan list一樣,先有個(gè)簡(jiǎn)單了解就好,我們?cè)诤竺娴拈_(kāi)發(fā)中會(huì)多次使用到這些命令:

命令

說(shuō)明

php artisan key:generate

生成 App Key

php artisan make:controller

生成控制器

php artisan make:model

生成模型

php artisan make:policy

生成授權(quán)策略

php artisan make:seeder

生成 Seeder文件

php artisan migrate

執(zhí)行遷移

php artisan migrate:rollback

回滾遷移

php artisan migrate:refresh

重置數(shù)據(jù)庫(kù)

php artisan db:seed

填充數(shù)據(jù)庫(kù)

php artisan tinker

進(jìn)入 tinker環(huán)境

php artisan route:list

查看路由列表

在開(kāi)發(fā)過(guò)程中,應(yīng)該盡量使用 artisan 命令,這樣不僅可以提高開(kāi)發(fā)效率,還可以減少bug。

在后續(xù)的實(shí)驗(yàn)中,我們也會(huì)多次使用 artisan 命令。

四、路由

我們學(xué)習(xí) Laravel 基礎(chǔ)功能之一:路由。

(一) 什么是路由呢?

在瀏覽器中輸入http://blog.csdn.net/u014665013我們可以訪問(wèn)實(shí)驗(yàn)樓網(wǎng)站的首頁(yè),如果我們輸入http://blog.csdn.net/u014665013/article/details/77588281呢?我們會(huì)來(lái)到博客的文章頁(yè)面。

這就是路由了,即路由系統(tǒng)會(huì)對(duì)用戶輸入的 URL 地址 進(jìn)行解析,然后分配不同的工作,有點(diǎn)像路由器。

路由不僅可以美化 URL,還可以便于用戶記憶等。

那么 Laravel 是怎么處理 url 的呢?

首先,我們打開(kāi)項(xiàng)目代碼,找到路由設(shè)置文件,文件位置:app/Http/routes.php。

我們可以看到,當(dāng)前 routes.php 文件中只有如下幾行代碼,這幾行代碼都實(shí)現(xiàn)了哪些功能呢?

Route::get('/', function(){
    return view('welcome');
});

這幾行代碼表示,當(dāng)我們輸入的 url為 網(wǎng)址 + ‘/’,也就是localhost/ 時(shí),為我們返回 歡迎頁(yè),也就是之前我們寫(xiě) Hello World 的頁(yè)面。

注意:在輸入網(wǎng)址的時(shí)候,localhost和 localhost/是一樣的。

我們可以嘗試將這段代碼修改一下:

Route::get('welcome', function(){
    return view('welcome');
});

然后我們打開(kāi)瀏覽器,再輸入localhost,我們會(huì)發(fā)現(xiàn),報(bào)錯(cuò)了!

這個(gè)錯(cuò)誤的大概意思是,沒(méi)有找到處理該 url 的辦法,因?yàn)槲覀儧](méi)有定義 '/' 這條路由。

現(xiàn)在我們輸入 localhost/welcome 并刷新頁(yè)面,我們看到了熟悉的頁(yè)面原來(lái)的征程welcome界面

通過(guò)上面的嘗試,你是否對(duì)路由有了一個(gè)簡(jiǎn)單的認(rèn)識(shí)?

下面我們來(lái)系統(tǒng)的學(xué)習(xí)一下 Laravel 的路由。

(二) 基本路由

網(wǎng)站的大多數(shù)路由都定義在 app/Http/routes.php 文件中,該文件將會(huì)被 App\Providers\RouteServiceProvider 類加載。最基本的 Laravel 路由僅接受 URI 和一個(gè)閉包,下面我們?cè)俣x兩條路由。

app/Http/routes.php

<?php

 
Route::get('welcome', function(){
    return view('welcome');
});
 
Route::get('/', function(){
    return'Index Page';
});
 
Route::get('/help', function(){
    return'Help Page';
});

然后我們分別訪問(wèn) localhost 和 localhost/help 可以看到返回了對(duì)應(yīng)的信息:

(三) 路由動(dòng)作

我們知道,一個(gè)url請(qǐng)求可能有多種類型,除了常用的GET,還可能有 POST、PUT、DELETE 等類型的請(qǐng)求。

對(duì)應(yīng)的處理方法如下:

Route::post('/foo', function(){
    //該路由將匹配 post方法的 '/foo' url
});
 
Route::put('/foo', function(){
    //該路由將匹配 put方法的 '/foo' url
});

除此之外,還可以用 match 來(lái)同時(shí)處理多種類型的請(qǐng)求:

Route::match(['get', 'post'],'/foo', function(){
    // 該路由將匹配 get 和 post 方法的 'foo' url
});

甚至,還可以使用 any 來(lái)同時(shí)處理所有類型的請(qǐng)求:

Route::any('/foo', function(){
    // 該路由將匹配所有類型的 'foo' url
});

(四) 路由參數(shù)

1.基礎(chǔ)的路由參數(shù)

有時(shí)候你可能需要從 URL 中獲取一些參數(shù),比如姓名、年齡等。

下面打開(kāi) routes.php,加入一個(gè)帶參路由。

app/Http/routes.php

<?php
Route::get('name/{name}', function($name){
    return'I`m '.$name;
});

然后我們?nèi)绻L問(wèn) localhost/name/Tom 我們可以看到網(wǎng)頁(yè)返回了對(duì)應(yīng)的信息:

如果試圖訪問(wèn) localhost/name 將會(huì)出現(xiàn)錯(cuò)誤:

我們也可以定義多個(gè)參數(shù):

app/Http/routes.php

<?php
Route::get('name/{name}/age/{age}', function($name, $age){
    return'I`m '.$name.' ,and I`m '.$age;
});

然后我們?nèi)绻L問(wèn) localhost/name/Tom/age/28 我們可以看到網(wǎng)頁(yè)返回了對(duì)應(yīng)的信息:


2.可選的路由參數(shù)

有時(shí)你需要指定可選的路由參數(shù),可以通過(guò)在參數(shù)后面加上 ?來(lái)實(shí)現(xiàn)。

app/Http/routes.php

<?php
Route::get('hello/{name?}', function($name = null){
    return'Hello! '.$name;
});

這時(shí)你訪問(wèn) localhost/hello 將不會(huì)報(bào)錯(cuò),只是參數(shù)是空值。

你可以為該可選參數(shù)設(shè)定一個(gè)默認(rèn)值,當(dāng) url 未傳參時(shí),將顯示默認(rèn)值。

app/Http/routes.php

<?php
Route::get('hello/{name?}', function($name = 'Tom'){
    return'Hello! '.$name;
});

這時(shí)訪問(wèn) localhost/hello 將返回默認(rèn)的信息,如下圖:


如果訪問(wèn)localhost/hello/John 將會(huì)顯示參數(shù),如下圖:


(五) 命名路由

所謂命名路由,就是給路由起個(gè)名字,這樣我們就可以通過(guò)這個(gè)名字獲取到該條路由的相關(guān)信息,也更利于后期維護(hù)。

建議在開(kāi)發(fā)過(guò)程中給每個(gè)路由命名,使用下面兩種方式都可以為一個(gè)路由命名。

Route::get('foo', ['as' => 'foo', function(){
    //方法一
}]);
 
Route::get('foo', function(){
    //方法二
})->name('foo');


(六) 路由群組

路由群組允許你共用路由屬性,例如:中間件、命名空間等,你可以利用路由群組統(tǒng)一為多個(gè)路由設(shè)置共同屬性,而不需在每個(gè)路由上都設(shè)置一次。共用屬性被指定為數(shù)組格式,當(dāng)作Route::group方法的第一個(gè)參數(shù)。

下面通過(guò)幾個(gè)常用樣例來(lái)熟悉這些特性。

1.為路由群組添加共用的中間件

至于什么是中間件,在后面的實(shí)驗(yàn)中會(huì)專門的學(xué)習(xí)。

Route::group(['middleware' => 'auth'], function(){
    Route::get('/', function()    {
        // 該路由將使用 Auth 中間件
    });
 
    Route::get('name', function(){
        // 該路由也將使用 Auth 中間件
    });
});


2.為路由群組添加共用的命名空間

什么是命名空間?從廣義上來(lái)說(shuō),命名空間是一種封裝事物的方法。在很多地方都可以見(jiàn)到這種抽象概念。例如,在操作系統(tǒng)中目錄用來(lái)將相關(guān)文件分組,對(duì)于目錄中的文件來(lái)說(shuō),它就扮演了命名空間的角色。具體舉個(gè)例子,文件 foo.txt 可以同時(shí)在目錄/home/greg 和 /home/other 中存在,但在同一個(gè)目錄中不能存在兩個(gè) foo.txt 文件。另外,在目錄 /home/greg 外訪問(wèn) foo.txt 文件時(shí),我們必須將目錄名以及目錄分隔符放在文件名之前得到 /home/greg/foo.txt。這個(gè)原理應(yīng)用到程序設(shè)計(jì)領(lǐng)域就是命名空間的概念。

你可以簡(jiǎn)單的把命名空間理解為,當(dāng)前文件所在的位置。

Route::group(['namespace' => 'Admin'], function()
{
    // 控制器在「App\Http\Controllers\Admin」命名空間
 
    Route::group(['namespace' => 'User'], function()
    {
        // 控制器在「App\Http\Controllers\Admin\User」命名空間
    });
});


3.為路由群組添加共用的前綴

你可能有一系列路由都具有一個(gè)相同的前綴,比如:

Route::get('user/name', function(){
    //
});
Route::get('user/age', function(){
    //
});
Route::get('user/introduction', function(){
    //
});

這時(shí)你就可以用路由群組來(lái)簡(jiǎn)化代碼:

Route::group(['prefix' => 'user'], function(){
    Route::get('name', function()    {
        //
    });
    Route::get('age', function()    {
        //
    });
    Route::get('introduction', function()    {
        //
    });
});

路由群組也可以添加參數(shù):

Route::group(['prefix' => 'user/{id}'], function(){
    Route::get('name', function($id)    {
        // 符合 'user/{id}/name' URL 
    });
    Route::get('age', function($id)    {
        // 符合 'user/{id}/age' URL 
    });
});


(七) 查看路由

我們可以使用url('foo')函數(shù)來(lái)生成完整的 URL,例如,我們這樣修改一下代碼:

app/Http/routes.php

 
<?php
Route::get('/help', function(){
    return url('/help');
});

然后,訪問(wèn)localhost/help,我們可以看到返回了完整的 URL 信息:


我們還可以使用命名路由函數(shù)route('foo')來(lái)生成完整的 URL 信息。

app/Http/routes.php

<?php
Route::get('/help', function(){
    return route('foo');
});
 
Route::get('/foo', function(){
    //
})->name('foo');

然后,訪問(wèn) localhost/help,我們可以看到返回了 foo 路由的完整 URL 信息:


(八) 正則表達(dá)式限制路由

你可以使用 where 方法來(lái)限制參數(shù)的格式。where 方法接受參數(shù)的名稱和正則表達(dá)式。

app/Http/routes.php

<?php
Route::get('hello/{name?}', function($name = 'Tom'){
    return'Hello! '.$name;
})->where('name','[A-Za-z]+');

然后如果訪問(wèn) localhost/hello/John 這樣的 url 就會(huì)正確顯示。

如果訪問(wèn) localhost/hello/55 這樣的 url 將會(huì)報(bào)錯(cuò),如下圖:


同樣,也可對(duì)多個(gè)參數(shù)都設(shè)置正則驗(yàn)證:

app/Http/routes.php

<?php
Route::get('name/{name}/age/{age}', function($name, $age){
    return'I`m '.$name.' ,and I`m '.$age;
})->where(['name' => '[A-Za-z]+', 'age' => '[0-9]+']);

如果你想對(duì)所有的路由參數(shù)都加上某種限制,需要在RouteServiceProvider 的 boot 方法里定義這些限制。


publicfunctionboot(Router $router)
{
    $router->pattern('id', '[0-9]+');
 
    parent::boot($router);
}

五、控制器

本次實(shí)驗(yàn)我們學(xué)習(xí)控制器(Controller)。

(一) 準(zhǔn)備工作

首先,我們先創(chuàng)建一個(gè)路由,順便再練習(xí)一下上次試驗(yàn)的內(nèi)容,打開(kāi)routes.php文件。

app/Http/routes.php

<?php
Route::get('/', function(){
    return view('welcome');
});
Route::get('user/name', function(){
    return'Name Page';
});

當(dāng)我們?cè)L問(wèn)網(wǎng)站地址 localhost/user/name 時(shí),會(huì)返回 'NamePage':


但是我們知道,實(shí)際的網(wǎng)站功能不可能這么單調(diào),我們需要更多的返回信息和操作,顯然把大量的處理代碼寫(xiě)在這里是不合適的,這時(shí)候就要用到Controller。

現(xiàn)在我們對(duì)上面的代碼進(jìn)行更改:

<?php
Route::get('/', function(){
    return view('welcome');
});
Route::get('/user/name', 'UserController@name');

這段代碼的意思就是,當(dāng)用戶訪問(wèn) 'localhost/user/name' 這個(gè) URL 的時(shí)候,調(diào)用 UserController 這個(gè)控制器的 name 方法來(lái)處理請(qǐng)求。也就是說(shuō),將原來(lái)的閉包函數(shù)放到了一個(gè)單獨(dú)的文件中。

我們可以將有共同特征的路由處理函數(shù)放到一個(gè)共同的控制器中,例如下面這種方式:

Route::get('/user/name', 'UserController@name');
Route::get('/user/age', 'UserController@age');
Route::get('/user/introduction', 'UserController@introduction');

三條不同的路由的處理函數(shù)放在了同一個(gè)控制器(用戶控制器)的三個(gè)不同的方法內(nèi)。

下面我們通過(guò)幾個(gè)簡(jiǎn)單的例子來(lái)體會(huì)一下 Controller是怎么工作的。

(二) 基礎(chǔ)控制器

控制器一般存放在 app/Http/Controllers 目錄下,下面是一個(gè)基礎(chǔ)控制器的例子,先來(lái)簡(jiǎn)單感受一下控制器文件的結(jié)構(gòu):

<?php
namespaceApp\Http\Controllers;
useApp\User;
useApp\Http\Controllers\Controller;
classUserControllerextendsController
{
    
    publicfunctionshow($id)
    {
        return view('user.profile', ['user' => User::findOrFail($id)]);
    }
}

所有 Laravel 控制器都應(yīng)繼承基礎(chǔ)控制器類,它包含在Laravel 的默認(rèn)安裝中。該基礎(chǔ)類提供了一些便捷的方法,例如 middleware 方法(middleware 是中間件 后邊會(huì)講解),該方法可以用來(lái)將中間件附加在控制器行為上。

然后你就可以通過(guò)一個(gè)路由把請(qǐng)求引入到這個(gè)控制器文件來(lái),像下面這樣:

Route::get('user/{id}', 'UserController@show');

現(xiàn)在,當(dāng)請(qǐng)求和此特定路由的 URI 相匹配時(shí),UserController 類的 show 方法就會(huì)被運(yùn)行。當(dāng)然,路由的參數(shù)也會(huì)被傳遞至該方法。

現(xiàn)在,讓我們動(dòng)手實(shí)踐來(lái)感受一下控制器。

首先用 artisan 命令創(chuàng)建一個(gè)新的控制器,打開(kāi)命令行,進(jìn)入代碼根目錄:

cd ~/Code/myweb

然后運(yùn)行 artisan命令生成控制器:

phpartisanmake:controllerUserController

然后轉(zhuǎn)到 app/Http/Controllers目錄下,可以看到剛剛創(chuàng)建的 UserController.php。打開(kāi)這個(gè)文件:

<?php
 
namespaceApp\Http\Controllers;
 
useIlluminate\Http\Request;
 
useApp\Http\Requests;
useApp\Http\Controllers\Controller;
 
classUserControllerextendsController
{
    
    publicfunctionindex()
    {
        //
    }
 
    
    publicfunctioncreate()
    {
        //
    }
 
    
    publicfunctionstore(Request $request)
    {
        //
    }
 
    
    publicfunctionshow($id)
    {
        //
    }
 
    
    publicfunctionedit($id)
    {
        //
    }
 
    
    publicfunctionupdate(Request $request, $id)
    {
        //
    }
 
    
    publicfunctiondestroy($id)
    {
        //
    }
}

我們可以看到,Laravel 為我們生成了一些默認(rèn)的代碼,仔細(xì)觀察可以發(fā)現(xiàn)是 7 個(gè)空方法,分別是

index()、create()、store()、show()、edit、update、destroy

其中index()通常用來(lái)顯示引導(dǎo)頁(yè)/首頁(yè),其他的六個(gè)通常用來(lái)對(duì)數(shù)據(jù)的創(chuàng)建/讀取/更新/刪除操作,簡(jiǎn)稱 CRUD (Create Retrieve Update Delete)。

現(xiàn)在我們先刪除這些空操作,然后創(chuàng)建一個(gè)新方法:

<?php
 
namespaceApp\Http\Controllers;
 
useIlluminate\Http\Request;
 
useApp\Http\Requests;
useApp\Http\Controllers\Controller;
 
classUserControllerextendsController
{
    publicfunctionname(){
        return'Name Page';
    }
}

對(duì)應(yīng)之前創(chuàng)建過(guò)的路由:

Route::get('/user/name', 'UserController@name');

現(xiàn)在我們可以訪問(wèn)一下localhost/user/name看下效果:


可以看到,實(shí)現(xiàn)了跟以前一樣的效果,但是我們應(yīng)用了 Controller ,一個(gè)很簡(jiǎn)單的例子。

(三) 控制器的命名空間

可能你會(huì)注意到控制器文件中有這么一行代碼:

namespaceApp\Http\Controllers;

這行代碼就是說(shuō)明了此控制器的命名空間。

這個(gè)目錄也是控制器的默認(rèn)目錄,所以我們?cè)?routes.php 文件中引入的時(shí)候可以直接使用:

Route::get('/user/name', 'UserController@name');

有一點(diǎn)非常重要,那就是我們?cè)诙x控制器路由時(shí),不需要指定完整的控制器命名空間。我們只需要定義「根」命名空間 App\Http\Controllers 之后的部分類名稱即可。默認(rèn) RouteServiceProvider 會(huì)使用路由群組,把 routes.php 文件里所有路由規(guī)則都配置了根控制器命名空間。

現(xiàn)在假如你在 App\Http\Controller 目錄下新建了一個(gè) User 文件夾來(lái)存放 UserControllser.php。

你的 routes.php 文件中就需要這么寫(xiě):

Route::get('/user/name', 'User\UserController@name');

相應(yīng)的,控制器中的命名空間也要改變:

namespaceApp\Http\Controllers\User;

現(xiàn)在讓我們來(lái)刪掉剛才的控制器,重新生成一個(gè)新的控制器,打開(kāi)命令行:

rm app/Http/Controllers/UserController.php

然后重新生成一個(gè) UserController ,這次我們單獨(dú)創(chuàng)建一個(gè) User 文件夾來(lái)存放這個(gè) Controller 。

php artisan make:controller User/UserController

然后打開(kāi)工程文件,我們可以看到,在 app\http\Controllers 文件夾下新建了一個(gè) User 文件夾,里邊有我們剛剛創(chuàng)建的 UserController.php 文件,打開(kāi)這個(gè)文件:

<?php
 
namespaceApp\Http\Controllers\User;
 
useIlluminate\Http\Request;
 
useApp\Http\Requests;
useApp\Http\Controllers\Controller;
 
classUserControllerextendsController
{
    
    publicfunctionindex()
    {
        //
    }
 
    .
    .
    .
}

注意看命名空間,可以看到,默認(rèn)生成的命名空間就是App\Http\Controller\User 這就是 artisan 命令為我們做的。

修改為我們自己的方法:

<?php
 
namespaceApp\Http\Controllers\User;
 
useIlluminate\Http\Request;
 
useApp\Http\Requests;
useApp\Http\Controllers\Controller;
 
classUserControllerextendsController
{
    publicfunctionname(){
        return'Name Page';
    }
}

然后對(duì)應(yīng)更改 routes.php 文件:

Route::get('/user/name', 'User\UserController@name');

然后訪問(wèn) localhost/user/name 可以看到實(shí)現(xiàn)了正確的跳轉(zhuǎn)!

(四) 控制器的依賴注入

細(xì)心的你肯定發(fā)現(xiàn),控制器中還有幾行神奇的代碼:

use Illuminate\Http\Request;
 
use App\Http\Requests;
use App\Http\Controllers\Controller;

這幾行代碼說(shuō)明了該控制器的依賴注入,簡(jiǎn)單來(lái)說(shuō),依賴注入就是將該控制器用到的依賴添加進(jìn)來(lái)。

比如,所有的 Controller 都依賴 基礎(chǔ) Controller.php ,所以需要:

use App\Http\Controllers\Controller;

比如,當(dāng)我們處理請(qǐng)求的時(shí)候,我們引入 Request 類,才可以使用很多 Laravel 提供的方法:

use Illuminate\Http\Request;

在后邊的實(shí)驗(yàn)中你會(huì)慢慢體會(huì)到依賴注入的強(qiáng)大之處。

相關(guān)推薦:

.net轉(zhuǎn)php laraval框架學(xué)習(xí)系列,.netlaraval_PHP教程

以上就是Laraval之文件結(jié)構(gòu)、路由、控制器詳解的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!

 
關(guān)鍵詞: Laraval,控制器,路由
長(zhǎng)春  短信群發(fā)  吉林省  紅視窗  中國(guó)  長(zhǎng)春市  長(zhǎng)春網(wǎng)站建設(shè)  玉米  振華  網(wǎng)站  設(shè)備  設(shè)計(jì)  吉林  廣州  撲克  敘利亞  聯(lián)合聲明  消費(fèi)者權(quán)益  長(zhǎng)春上門維修電腦  內(nèi)蒙古  美國(guó)白宮  新聞中心  塞內(nèi)加爾  記者會(huì)  滿洲里  中非合作論壇  突擊步槍  中消協(xié)  中國(guó)政府  化學(xué)武器  海外網(wǎng)  中國(guó)電影  消費(fèi)者  強(qiáng)臺(tái)風(fēng)  長(zhǎng)春上門修電腦  重慶市  敘政府  長(zhǎng)春北大青鳥(niǎo)  中國(guó)智能建筑節(jié)  北京市  網(wǎng)站建設(shè)  長(zhǎng)春電腦上門維修  產(chǎn)業(yè)園  國(guó)家元首  黨委書(shū)記  北斗導(dǎo)航  長(zhǎng)春上門做系統(tǒng)  指示  售前咨詢技巧  中國(guó)芯  俄羅斯  小雨  白宮  龍頭企業(yè)  美國(guó)  塞申斯  臺(tái)風(fēng)  圓桌  化武  美國(guó)人  中國(guó)軍網(wǎng)  發(fā)言人  日本  大阪  特朗普  毒品  檢察官  侯建國(guó),質(zhì)量,中國(guó)特色社會(huì)主義  位置服務(wù)  步槍  運(yùn)載火箭  特朗普,貿(mào)易戰(zhàn),美國(guó)  一帶一路  發(fā)布會(huì)  今日頭條  非洲  人民政府  中非  中國(guó)移動(dòng)  經(jīng)濟(jì)  長(zhǎng)春國(guó)貿(mào)  英國(guó)皇家海軍  小學(xué)生  中國(guó)市場(chǎng)  政治  制造  美國(guó)海軍陸戰(zhàn)隊(duì)  觀察者網(wǎng)  彈道導(dǎo)彈  郭曉東  f-35  參議院  AJAX  撫養(yǎng)費(fèi)  尼克松  微博  黨委  PHP  軍民  政府 
 
[ 資訊搜索 ]  [ 加入收藏 ]  [ 告訴好友 ]  [ 打印本文 ]  [ 違規(guī)舉報(bào) ]  [ 關(guān)閉窗口 ]

 
0條 [查看全部]  相關(guān)評(píng)論

 
網(wǎng)站首頁(yè) | 關(guān)于我們 | 聯(lián)系方式 | 使用協(xié)議 | 版權(quán)隱私 | 網(wǎng)站地圖 | 排名推廣 | 廣告服務(wù) | 積分換禮 | 網(wǎng)站留言 | RSS訂閱 | 皖I(lǐng)CP備2021004516號(hào)-14
企業(yè)800網(wǎng) · 提供技術(shù)支持