Laravel の独習をこれから始めてみようぜ

PHPでWebサイトを作るときの定番フレームワークの１つに Laravel がある。

これは Git Hub で 3万を超える星の数や、1万を超えるフォークの数、
5千を超えるコミット回数と　ほぼ黄緑のコントリビューションの更新回数を見ると
どうもこの　おっさん１人で　がんばってるんじゃないか、と思うほど
器用に更新され続けているように見える。

https://github.com/laravel/laravel


評判をググってみよう。

「Laravelを使うべきか」kore1server
https://kore1server.com/322/Laravel%E3%82%92%E4%BD%BF%E3%81%86%E3%81%B9%E3%81%8D%E3%81%8B

ソースコードは　ぐちゃぐちゃらしい。

「phpフレームワーク laravel を仕事で使っている人はいますか？」teratail
https://teratail.com/questions/14946

他にシンプルなフレームワークがあるのに、なんで Laravel を使うのか、という話しらしい。
特に難しいのは　「構築」段階で、それ以降は楽らしい。

「Laravelとは..?! このフレームワーク流行ってるの？」ハマログ
https://blog.e2info.co.jp/2016/05/06/laravel%E3%81%A8%E3%81%AF-%E3%81%93%E3%81%AE%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF%E6%B5%81%E8%A1%8C%E3%81%A3%E3%81%A6%E3%82%8B%E3%81%AE%EF%BC%9F/

「「Laravel 5」を使って簡単な投稿フォームを作成する」tv asahi mediaplex
http://www.mediaplex.co.jp/blogs/creative/laravel-5-form/

Laravelが言う「簡単」というのは、テンプレートが用意されていて　特定のパターンなら簡単だ、という話しに見える。
どんなテンプレートがあるのか分からないが……。

フレームワークなんで、何をしたら実行速度が高速化するのかとか、メモリが省メモリになるのかとか、そういうコンピューターの方を向いた意味でのプログラミングは全部丸投げだろう。
どんな実用的な問題を解決してくれるのか、業務、画面デザインの方を調べたいところだ。

日本語版のサイトのようなドメインもあった。

「ウェブ職人のためのPHPフレームワーク。」
http://laravel.jp/

おそらく　このサイトは PHPと Laravel で作られていることが期待できる。

コミュニティや　ドキュメントは　数人で回してるんだろうか。
エヴァンジェリストが回してる感がある。


「Laravel を使った開発」indival
https://www.indival.co.jp/2016/10/19/3341/


すると　テンプレを調べたらいいのか。

「【初心者向け】Laravel5 Bladeテンプレートでレイアウトを作る方法」
http://tech-swing.net/web/blade/


うーむ。
Laravel を使うだけでなく、
何に　どんな部品を　使うかも調べないとダメか。

# Blade、というか PHPテンプレートエンジン とは？

「Laravel 5.1 Bladeテンプレート」
https://readouble.com/laravel/5.1/ja/blade.html

知ってるPHPと違う。

PHPのフレームワークでは HTMLの中に

```
<?php
```

と書くなどして PHP を埋め込むやつと、もう独自でただのテキストのやつとかがある。

独自形式ということは　デバッグ用のソフトも独自のものになりやすいということだ。

「完全版！ テンプレートエンジン チートシート (blade, twig, volt, smarty, mustache, の比較もあるよ)」sekaie engineers' blog
http://sekaie.hatenablog.com/entry/2015/12/08/203810

うわー。

Laravel の人気が伸びているのは、ビュー（HTMLとか書くやつ）に **Blade** を使っているからじゃないか、と思えなくもない。

書式は PHP に似ているようだ。
じゃあ Blade は　**後で覚える**　ことにしよう。次。


# Laravel の Version は 5.1 を勉強しておけばいいのか。

LTS (Long Term Support)というのが、不具合対応が長めに続く安定サポート版で、
それが直近では v5.1、来月に v5.5 が LTS に加わる予定らしい。

じゃあ、とりあえず Version 5.1 だけ勉強しよ。

なんか Version 5.1 に付いてない機能もありそうだ。Artisan Console とか。
Version 5.5 に乗り換えることを狙って **Version 5.4** を勉強するのもありか。



# 山ほど出てくる PHP5.4以降の連想配列

「配列」
http://php.net/manual/ja/language.types.array.php

なんか、

「Database: Getting Started」
https://laravel.com/docs/5.1/database

```PHP
'mysql' => [
    'read' => [
        'host' => '192.168.1.1',
    ],
    'write' => [
        'host' => '196.168.1.2'
    ],
    'driver'    => 'mysql',
    'database'  => 'database',
    'username'  => 'root',
    'password'  => '',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
],
```

こういう感じで PHP5.4 以降の連想配列の書き方が山ほど　出てくるんだが、
`=>` という記号が出てくるせいで C#マンには難しいことを考えてしまうが
単に　名前 => 値　なんで、

シングルクォーテーションとか　カンマとか　いっぱいで
目が　ちかちか　してしまうんだが　省いてみれば、

```うそ構文
mysql :
    read :
        host : 192.168.1.1
    write :
        host : 196.168.1.2
    driver : mysql
    database : database
    username : root
    password :
    charset : utf8
    collation : utf8_unicode_ci
    prefix :
```

これぐらいの意味だ。PHPの連想配列の読みにくさが悪い。

ただの　コンフィグ・ファイル　ぐらいの意味で、
こういう連想配列でデータを受け渡しするのが　山ほど出てくる。
mysql.read.host = '192.168.1.1' 、とか１個１個書いていく
プログラミングとは　ちょっと違う。

C# は C# で別の簡略化した初期化方法を用意しているが、
構文のせいで　自分に分かりづらくなっているところはある。


# PHPの構文に目を慣らさないと、C#プログラマーには何がビューティフルか分かりにくい

「Artisan Console」
https://laravel.com/docs/5.1/artisan

よく　こんな書き方をする。

```PHP
$this->drip->send(User::find($this->argument('user')));
```

`->` とか、 `::` とか出てきて目がぼんやりしてくるんだが、もし C# だったら　こんな書き方になる。

```
this.drip.send( User.find( this.argument("user") ) ) ;
```

慣れるしかない。

**他のPHPに比べると ビューティフルなコード、という意味なのかもしれない。**


# インストールするにも

「Installation」
https://laravel.com/docs/5.4

公式のインストール方法を読んでもさっぱりわからん。

「How To Install Laravel PHP Framework on a CentOS 7 or RHEL 7」syslint
https://syslint.com/blog/tutorial/how-to-install-laravel-php-framework-on-a-centos-7-or-rhel-7/

うーむ。

# データベースは mariaDB ？

MySQL と mariaDB は　一緒に入れてるとバッティングするような記事も読んだし、
MySQL 捨てていいんなら MySQL 捨てて mariaDB で行くんだが、

客が　どっちにしてください、と言うかなんて　分からないからな。
mariaDB の方がいいかと思うんだが、

「Debian(Wheezly 7)で MySQLからMariaDB へ移行してみる」
http://server-setting.info/debian/debian-wheezly-mysql2mariedb.html

よくよく考えると　日本の客先で多いのは Oracle だよな。
Oracle は MySQL 買収したんだっけ？

うーむ。
どこまで外国の大企業に税金払うのが好きなんだろな。それにもよる。
個人でやるなら mariaDB なんだが。

# データベース決まらないんで座学で

周辺知識だけ調べておこう。

ディレクトリーは

`/var/www/laravel`

といった感じにするのがいいんだろうか。
そこへ composer を使って　インストールしたらいいのか。
しかし何を。

# Laravel の API

ドキュメントはあるようだ。

「Namespaces」Laravel API
https://laravel.com/api/5.4/

なんで Laravel のネームスペースの名前が illuminate なのか分からないが　分けわからん。

他の人も　なんだこれと思ってるようだ。

「Laravelソースコードの歩き方」kore1server
https://kore1server.com/326