Laravelの概要

15822 ワード

LaravelはMVC設計モデルに基づくPHPフレームワークであり、データベース、ルーティング、フォーム検証など、便利なAPIインターフェースを提供し、PHPの開発をより迅速かつ優雅にし、一言で述べる.Laravel WEB !
1.インストール
PHPがインストールされていることを確認してから、公式サイトのインストールチュートリアルを直接参照してインストールすることができます.
ネットワークの問題が発生した場合、上記のインストールチュートリアルが正常にインストールできない場合は、PHPパッケージ管理ツールcomposerをダウンロードすることもできます.phar、PHPコマンドラインでインストールを実行します.
php composer.pharのインストールに成功した後、composerの環境変数を設定して、グローバルコマンドラインが呼び出されるようにします.windowsの下のパスは~AppDataRoamingComposervendorbinです.
最後にcomposerでLaravelのすべての依存ファイルをダウンロードし、実行します.
composer create-project laravel/your_project_name–prefer-distはすべてのファイルのダウンロードが成功するのを待っています.プロジェクトフォルダにはすでにapp、publicなどのフォルダがあり、主なファイルはapp/フォルダの下に配置されています.以下で説明します.
2.ルーティング
ルーティングの設定はいずれもapp/routers.phpまたはapp/Http/routers.php)に書かれており、ルーティングにはgetリクエストとpostリクエストに基づく2種類があります.
Route::get('welcome', function() { return 'hello world by GET'; });
Route::post('welcome', function() { return 'hello world by POST'; });

もちろん、GETでもPOSTでも、すべてのリクエスト動作をサポートするルーティングを実現することができます.
Route::any('welcome', function() { return 'hello world'; });

これで、/welcomeにアクセスすると、ページに「hello world」が表示されます.
簡単に言えば、ルーティングのフォーマットは、Route::Method(Path_str, Function_handler)である.ここでfunction_handlerは、定義されたcontroller内の制御関数であってもよい.
ルーティング名
ルーティング名が長すぎて、頻繁にパスを取得する必要がある場合は、ルーティングに名前を付けることができます.
Route::get('lxjwlt_home_page', array('as' => 'home', function() { 
    return 'welcome to my home';
}));

ルーティングに名前を付けると、以下の方法でルーティングパスを取得できます.Route::to('home');
3.ビュー
ビュー(view)は表現層を提供し、単純にインタフェース効果を提供し、ビューコードと論理コードを分離する.
ビューファイルはresources/views(またはapp/views)内に配置され、ビューコードはHTML形式で表示されますが、HTMLとは異なり、PHP文を{}}で挿入できます.

<html>
    <head>head>
    <body>
        <h1>{{'1+1='.(1 + 1)}}h1>
        <b>{{$keyword or 'default value'}}b>
    body>
html>

ルーティングリクエストによってビューを返すことができます.
Route::get('/', function() {
    return View::make('demo');
});

bladeテンプレート
ページの重複コードのために、通常はページ内の共通の部分を抽出します.例えば、
およびいくつかの外部リソースの参照を、異なるページに対して適切な組み合わせを行います.
LaravelはBladeモジュールエンジンを提供し、テンプレートの継承とテンプレートクリップを実現するのに便利である.これらのテンプレートはすべて.blade.phpの終わり.
次に、すべてのページに適用されるページlayoutテンプレートを実装します.

<html>
    <body>
        @yield('content', 'Default content!')
    body>
html>

上記のコードでは、@yieldは、コンテンツを挿入するための場所を宣言します.1番目のパラメータはIDで、2番目のパラメータはデフォルトコンテンツで、content位置が挿入コンテンツの場合、デフォルトコンテンツが表示されます.
次に、layoutテンプレートを継承するホームページを実装します.

@extends('layout')
@section('content')
<h1>welcome to lxjwlt's homeh1>
@stop

ホームページはlayoutテンプレートを継承し、キーワード@extendsを継承します.@sectionはcontentの位置を定義するための内容です.最終Bladeエンジンはホームページを次のようにレンダリングします.
<html>
    <body>
        <h1>welcome to lxjwlt's homeh1>
    body>
html>

コンテンツを挿入できるかどうかは、次の条件を満たす必要があります.
公共資源を引用することができるが、公共資源をカバーすることができ、特有の資源を引用することができる.次に、ホームページリファレンススタイルファイルを例に挙げます.

<html>
    <head>
        @section('CSS')
        <link rel="stylesheet" href="common.css" />
        @show
    head>
    <body>
        @yield('content', 'Default content!')
    body>
html>

私たちはlayoutテンプレートでcommonを引用しました.cssは、@sectionと@showで囲まれています.注意@stopではなく@showです.
ホームページでパブリックスタイルを直接上書きできます.
@section('CSS')
<link rel="stylesheet" href="home.css" />
@stop

これでホームページはホームのみを参照します.css、commonを参照しません.css.
もちろん、共通のスタイルを上書きせずに、他のスタイルを引用する方法もあります.
@section('CSS')
@parent
<link rel="stylesheet" href="home.css" />
@stop

@parentキーワードは、親テンプレートで事前に定義された内容を保持します.上記のコードが生成されます.
<link rel="stylesheet" href="common.css" />
<link rel="stylesheet" href="home.css" />

4.コントローラ
Laravelでは、ルーティングコードでデータを処理し、ビューに挿入できますが、ログインログアウト、フォーム検証など、コントローラでバックグラウンドロジックを統一的に処理する必要があります.
Laravelのコントローラコードはapp/Http/Controllers(or app/controllers)フォルダの下に統一されており、すべてのコントローラがBaseControllerを継承する必要があります.HomeControllerコントローラを実装します.
class HomeController extends BaseController {
    public function welcome() {
        $user = array('name' => 'lxjwlt', 'age' => '22');
        return View::make('home', array('user' => $user)); //     
    }
}

コントローラにはwelcomeメソッドがあり、ビューを返します.次に、ルーティングとコントローラのwelcomeアクションをバインドします.Route::get('home', 'HomeController@welcome');で、/homeにアクセスすると、homeページビューが表示されます.
5.モデル
データベース内の各テーブルは、対応するテーブルのデータを取得するために一連のAPIインタフェースを定義するモデルに対応します.
Laravelのモデルはapp/modulesフォルダの下にあり、各モデルはEloquentクラスを継承する必要があります.usersテーブルのモデルを実装します.
class User extends Eloquent {
    static public function fetch_by_username($username) {
        // ...
    }
}

ユーザー名でユーザーデータを取得する方法を定義し、どこでも使用できます.User::fetch_by_username('lxjwlt');
6.データ移行及びデータ充填
Laravelのデータ移行と埋め込みシステムは、データベースの初期化を容易にするために、データベースを再作成できます.
想像してみてください.プロジェクトフォルダを別のホストにコピーします.このホストにはプロジェクトのデータベースはありませんが、コマンドを実行するだけで、データベース全体が再作成され、初期化データも埋め込まれています.今回はとても便利です.
まず移行を作成します.php artisan migrate:make create_users_tableすべての移行はapp/database/migrationsフォルダの下に保存されます.このフォルダは、テーブルを作成するためのupメソッドとテーブルを削除するためのdownメソッドの2つのメソッドを含むCreateUsersTableクラスを自動的に生成します.
usersテーブルが必要です.このように書くことができます.
class CreateUsersTable extends Migration {
    public function up() {
        Schema::create('users', function($table)
        {
            $table->increments('id'); //   
            $table->string('email')->unique();
            $table->string('password');
            $table->string('name')->unique();
            $table->timestamps(); // Laravel     
        });
    }
    public function down() {
        Schema::drop('users');
    }
}

移行ファイルがあれば、次のコマンドを実行してデータベースを初期化できます.php artisan migrateデータベースの初期化後、事前にいくつかのデータを挿入する必要がある場合があります.Laravelはデータの埋め込み機能を提供し、設定ファイルはapp/database/seedsフォルダの下に統一されています.1つのテーブルは、usersテーブルにデータを埋め込むなどのファイルに対応します.
class UsersTableSeeder extends Seeder {
    public function run()
    {
        DB::table('users')->delete();
        Users::create(array('name' => 'root', 'password' => '123'));
        Users::create(array('name' => 'lxjwlt', 'password' => '123'));
        Users::create(array('name' => 'john', 'password' => '123'));
    }
}

データを埋め込む前に、userテーブルの存在をLaravelに伝えます.そのため、DatabaseSeederクラスで宣言します.
class DatabaseSeeder extends Seeder {
    public function run()
    {
        Eloquent::unguard();
        $this->call('UsersTableSeeder');
    }
}

これで、次のコマンドを実行してデータを埋め込むことができます.php artisan db:seedまた、データの移行とデータの移入を同時に実行することもできます.php artisan migrate:refresh --seed
7.リソースファイル参照
JSスクリプト、CSSスタイルファイル、ピクチャリソースなどのリソースファイルは、publicフォルダの下に置くことをお勧めします.これにより、Laravelが提供するurl関数を使用してリソースのパスを取得できます.
リファレンス
Laravelの使用方法については、Laravelマニュアルを参照してください.