ぺい

大阪の専門学生の落書き。主にエンジニア寄りの話。

PHPのLaravel5.4でアプリケーションを作る(インストールら編)

f:id:tikasan0804:20170528230547p:plain

Laravelとは

PHPでイケてるフレームワークで知られているアレです。最近は日本でも採用例が増えているされているので、使い方を知っておいて損はないと思います。また、日本語情報が本当に充実していて、学習のしやすさも魅力だと思います。

インストールとプロジェクト作成

これに関しては公式ドキュメントを読めばおkだと思います。

$ laravel new celler

上記のコマンドで開発に必要なフォルダ群が作成されます。

celler
├── app
├── artisan
├── bootstrap
├── composer.json
├── composer.lock
├── config
├── database
├── package.json
├── phpunit.xml
├── public
├── resources
├── routes
├── server.php
├── storage
├── tests
├── vendor
├── webpack.mix.js
└── yarn.lock
$ php artisan serve

上記のコマンドを実行すると、http://localhost:8000にアクセスすると、良さげなwelcomeページが見れます。では、ここからはさくっと動かすところまでやっていきたいと思います。
突然登場したartisanですが、これかなり便利です。

作るものについて

以下のMySQLのテーブルを用意して、CRUDするようなアプリケーションを作成します。 今回はとりあえず、固定値をViewに渡すところまでやりたいと思います。

f:id:tikasan0804:20170512153207p:plain

View

resources/views/accounts/list.blade.php
とりあえず、受け取った値を表示するだけのViewを作成します。
ビュー 5.4 Laravel

見た目部分はそれっぽくなるBootstrapを使用しています。
Bootstrap · The world's most popular mobile-first and responsive front-end framework.

<!doctype html>
<html lang="{{ config('app.locale') }}">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="">
    <title>Document</title>
    <link href="css/bootstrap/bootstrap.min.css" rel="stylesheet">
    <!--[if lt IE 9]>
        <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
        <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
</head>
<body>
<div class="container">
    <h1>accounts</h1>
    <table class="table">
        <tr>
            <th>ID</th>
            <th>name</th>
            <th>email</th>
            <th>updated_at</th>
            <th>created_at</th>
        </tr>
        @foreach ($accounts as $account)
            <tr>
                <td>{{$account['id']}}</td>
                <td>{{$account['name']}}</td>
                <td>{{$account['email']}}</td>
                <td>{{$account['updated_at']}}</td>
                <td>{{$account['created_at']}}</td>
            </tr>
        @endforeach
    </table>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="js/bootstrap/bootstrap.min.js"></script>
</body>
</html>

Controller

$ php artisan make:controller AccountsController

app/Http/Controllers/AccountsController.php
コントローラーの雛形が作成されます。
コントローラ 5.4 Laravel  

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class AccountsController extends Controller
{
    public function index() <---追加
    {
        $account['id']           = 1;
        $account['name']         = 'pei';
        $account['email']        = 'example@gmail.com';
        $account['updated_at']   = '2016-02-02 10:10:10';
        $account['created_at']   = '2016-02-02 10:10:10';
        $accounts[] = $account;

        $account['id']           = 2;
        $account['name']         = 'pei2';
        $account['email']        = 'example2@gmail.com';
        $account['updated_at']   = '2017-02-02 10:10:10';
        $account['created_at']   = '2017-02-02 10:10:10';
        $accounts[] = $account;
        return view('accounts.list',compact('accounts'));
    }
}

Routing

routes/web.phpにルーティングの定義を追加しました。
ルーティング 5.4 Laravel

// GET /accountsにアクセスされたら、AccountsControllerのindexが実行される
Route::get('/accounts', 'AccountsController@index');

いざ実行!

$ php artisan serve
$ open http://localhost:8000/accounts

f:id:tikasan0804:20170528224206p:plain
上記のような結果が帰ってきてたらOKです。  

これで、さくっとアプリケーションを作れました。まだ全然触れていませんが、イケてる雰囲気を既に感じている。