亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

初識laravel5

2024-05-04 23:31:43
字體:
來源:轉載
供稿:網友
laravel5發布了,目前國內相關資料還比較少,只能先翻墻去官網先看看了,初步總結了一些變化,就想寫下來。
 

目錄結構變化

laravel5最先強調的是項目目錄結構的變化,與4.2區別還是蠻大的,逐條來說吧。

新的目錄結構看上去像這樣:

app
    Commands
    Console
    Events
    Handlers
        Commands
        Events
    Http
        Controllers
        Middleware
        Requests
        Kernel.php
        routes.php
    Providers
    Services
bootstrap
config
database
    migrations
    seeds
public
    package
resources
    lang
    views
storage
    cache
    logs
    meta
    sessions
    views
    work
tests

4.2的目錄結構:

app
    commands
    config
    controllers
    database
    lang
    models
    start
    storage
    tests
    views
bootstrap
public
對比一下,改變還是比較大的,可以看到 config,database被移動到根目錄,lang,views目錄被移動到resources目錄下,controllers被整合到http目錄里,models目錄不見了,還有一些新增的目錄就略了。

App命名空間

laravel5里還有一個變化,那就是app目錄默認加上了一個根命名空間 App ,在 App 下的所有目錄、類都應當在該命名空間下,簡而言之就是采用了psr4標準。

HTTP

laravel5認為,新的目錄結構是目前最好的結構之一,可以讓我們的開發更加得心應手,比如http目錄:

Http
    Controllers
    Middleware
    Requests
    Kernel.php
    routes.php
Middleware 很陌生,其實它是原來的路由filter的一個升級版,現在不用在filters.php里定義過濾器,取而代之的是在 Middleware 目錄中創建類,并在Kernel.php中配置全局還是可選,全局的Middleware在每個請求都會執行,而可選的就相當于原來的filter,可以在路由中使用,也可以在控制器中使用。

Requests是對核心類Request的擴展,你可以擴展不同的Requests類,添加不同的功能。

可以認為,所有關于http請求有關的處理都在http目錄中,比如控制器就是用來接受一個請求并返回的,所以將它放在 Http 目錄里合情合理。

路由

路由跟以前的區別不大,但是需要注意的當我們指定控制器命名空間時,命名空間不是絕對路徑,而是相對于 App/Http/Controllers,舉例:

 

復制代碼代碼如下:

Route::controllers([
    'auth' => 'Auth/AuthController',
    'password' => 'Auth/PasswordController',
]);

 

可以在 App/Http/Controllers/Auth 目錄下找到對應的類。

此外,路由還支持緩存,以提升性能,通過命令行工具

 

復制代碼代碼如下:

php artisan route:cache

 

即可輕松生成,也可以通過

 

復制代碼代碼如下:

php artisan route:clear

 

清理緩存。

Services

我們看到在App目錄下還有一個Services目錄,我覺得這是一個很贊的理念,一直以來,我都對于控制器中出現大段的業務邏輯代碼而煩躁,我很想用一個單獨的層把這些業務邏輯封裝起來,而services就可以用來干這個活,當然,它不是必須的,但我強烈建議使用。就以laravel5自帶的demo來看看吧:

 

復制代碼代碼如下:

# Http/Controllers/Auth/AuthController.php
<?php namespace App/Http/Controllers/Auth;
use App/Http/Controllers/Controller;
use Illuminate/Contracts/Auth/Guard;
use Illuminate/Contracts/Auth/Registrar;
use Illuminate/Foundation/Auth/AuthenticatesAndRegistersUsers;
class AuthController extends Controller {
    /*
    |--------------------------------------------------------------------------
    | Registration & Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles the registration of new users, as well as the
    | authentication of existing users. By default, this controller uses
    | a simple trait to add these behaviors. Why don't you explore it?
    |
    */
    use AuthenticatesAndRegistersUsers;
    /**
     * Create a new authentication controller instance.
     *
     * @param  /Illuminate/Contracts/Auth/Guard  $auth
     * @param  /Illuminate/Contracts/Auth/Registrar  $registrar
     * @return void
     */
    public function __construct(Guard $auth, Registrar $registrar)
    {
        $this->auth = $auth;
        $this->registrar = $registrar;
        $this->middleware('guest', ['except' => 'getLogout']);
    }
}

 

這是一個登陸授權的控制器,我們看 __construct構造函數,利用參數自動注入了一個 "接口實現(參考手冊IoC)" 的綁定,我們看下Registrar:

 

復制代碼代碼如下:

<?php namespace App/Services;
use App/User;
use Validator;
use Illuminate/Contracts/Auth/Registrar as RegistrarContract;
class Registrar implements RegistrarContract {
    /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return /Illuminate/Contracts/Validation/Validator
     */
    public function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required|max:255',
            'email' => 'required|email|max:255|unique:users',
            'password' => 'required|confirmed|min:6',
        ]);
    }
    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return User
     */
    public function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
    }
}

 

提交用戶名密碼時的處理:

 

復制代碼代碼如下:

public function postRegister(Request $request)
{
    $validator = $this->registrar->validator($request->all());
    if ($validator->fails())
    {
        $this->throwValidationException(
            $request, $validator
        );
    }
    $this->auth->login($this->registrar->create($request->all()));
    return redirect($this->redirectPath());
}

 

可以看到,表單驗證的業務邏輯僅僅一行:

 

復制代碼代碼如下:

$validator = $this->registrar->validator($request->all());

 

整個控制器的代碼顯得干凈易讀,我們可以把很多通用的業務邏輯封裝成service,比不倫不類地直接封裝在控制器類好。

模型

models目錄不見了,因為不是所有應用都需要用到數據庫的,所以laravel5默認不提供該目錄可以理解,而且由于提供了 App 這個namespace,所以我們可以自己在 App/ 下創建 Models 目錄,其中所有模型類都聲名namespace App/Models;即可,只是使用上比以前麻煩一些,需要先use,不過這樣也使得項目結構更加清晰,一切類庫都在命名空間的組織之下。

時間有限,先寫這么多吧。希望大家能夠喜歡。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
米奇精品一区二区三区在线观看| 欧美激情三级免费| 日韩av电影在线播放| 日本免费一区二区三区视频观看| 亚洲女人天堂av| 国产xxx69麻豆国语对白| 国产精品黄色影片导航在线观看| 日韩精品视频在线观看免费| 亚洲午夜av电影| 精品久久久精品| 欧美亚洲成人精品| 国产亚洲精品美女| 456亚洲影院| 亚洲高清不卡av| 欧美一区二区影院| 91国产视频在线播放| 久久久亚洲网站| 久久精品国产91精品亚洲| 亚洲国产精品中文| 国产精品福利久久久| 日韩视频亚洲视频| 欧美日韩亚洲一区二区| 国产精品爽爽ⅴa在线观看| 国内精品视频一区| 欧美老女人www| 中文字幕亚洲综合久久筱田步美| 一区二区三区动漫| 久久久久久久久爱| 国产成人精品亚洲精品| 久久综合亚洲社区| 精品久久久国产| 久久国产加勒比精品无码| 精品二区三区线观看| 国产成人小视频在线观看| 久久精品亚洲94久久精品| 青青草国产精品一区二区| 国产精品视频公开费视频| 亚洲欧美综合图区| 亚洲欧美中文在线视频| 色噜噜久久综合伊人一本| 国产精品一区电影| 国产91精品青草社区| 亚洲影视中文字幕| 亚洲综合一区二区不卡| 亚洲天堂第二页| 亚洲**2019国产| 国产精品久久久久一区二区| 亚洲精品国产成人| 日韩综合视频在线观看| 欧美精品成人91久久久久久久| 午夜免费日韩视频| 精品中文字幕视频| 欧美日韩精品二区| 日韩美女免费视频| 国产一区在线播放| 国产不卡一区二区在线播放| 久久久久久久久久久网站| 久久精品国产2020观看福利| 国产在线高清精品| 91精品国产99久久久久久| 尤物九九久久国产精品的特点| 成人激情综合网| 亚洲欧美另类国产| 欧美一级高清免费| 精品久久久久久亚洲精品| 日韩av手机在线观看| 中文字幕精品www乱入免费视频| 91超碰caoporn97人人| 日韩有码在线视频| 午夜精品视频网站| 26uuu另类亚洲欧美日本一| 中文字幕av一区| 国模极品一区二区三区| 中文欧美在线视频| 日韩精品在线影院| 欧美激情第6页| 亚洲黄色www网站| 尤物精品国产第一福利三区| 欧美性理论片在线观看片免费| 国产精品高潮呻吟久久av野狼| 色老头一区二区三区| 91色在线视频| 国产精品国产三级国产aⅴ浪潮| 中文字幕亚洲无线码a| 大伊人狠狠躁夜夜躁av一区| 美女福利精品视频| 欧美极品在线视频| 欧美做爰性生交视频| 精品国产乱码久久久久久婷婷| 亚洲色在线视频| 久久亚洲国产精品成人av秋霞| 亚洲成年人影院在线| 精品久久香蕉国产线看观看gif| 亚洲人永久免费| 国产日韩欧美影视| 国产成人一区三区| 欧美性资源免费| 性色av一区二区三区红粉影视| 亚洲午夜久久久久久久| 亚洲三级黄色在线观看| 欧美国产日韩一区二区在线观看| 国产视频福利一区| 欧美性猛交xxxx免费看久久久| 91精品国产高清久久久久久| 日韩经典中文字幕在线观看| 欧美一性一乱一交一视频| 精品国产一区二区三区久久久狼| 亚洲第一精品福利| 欧美日韩国产中文字幕| 国产精品日日做人人爱| 日韩美女视频在线观看| 久久综合九色九九| 中文字幕免费国产精品| 国产女人18毛片水18精品| 亚洲国产高潮在线观看| 久久视频免费在线播放| 色播久久人人爽人人爽人人片视av| 国产精品成人一区二区三区吃奶| 91久久国产婷婷一区二区| 亚洲综合最新在线| 午夜精品99久久免费| 久久精品2019中文字幕| 青青久久av北条麻妃黑人| 国产成人97精品免费看片| 精品网站999www| 欧美麻豆久久久久久中文| 国模精品视频一区二区三区| 成人性生交大片免费看视频直播| 日韩av电影在线免费播放| 中文字幕日韩在线播放| 日韩av毛片网| 欧洲美女免费图片一区| 欧美日韩一区二区在线播放| 日韩免费在线电影| 久久亚洲国产精品成人av秋霞| 日韩欧美a级成人黄色| 亚洲精品mp4| 91精品美女在线| 欧美xxxx做受欧美.88| 尤物九九久久国产精品的特点| 亚洲情综合五月天| 26uuu日韩精品一区二区| 岛国av在线不卡| 国产小视频国产精品| 激情成人中文字幕| 一区二区三区 在线观看视| 亚洲电影免费观看高清完整版在线| 亚洲国产成人久久综合一区| 97国产成人精品视频| 亚洲人成电影网站色xx| 亚洲精品乱码久久久久久金桔影视| 色播久久人人爽人人爽人人片视av| 亚洲日本欧美中文幕| 成人免费视频xnxx.com| 国产精品久久91| 亚洲情综合五月天| 久久精品国产亚洲精品| 自拍偷拍亚洲一区| 欧洲日韩成人av| 国内伊人久久久久久网站视频| 欧美日韩成人网| 欧美成人精品一区二区| 57pao国产精品一区| 中文字幕国产精品|