Windows10 でLaravel開発環境構築(Atom+xampp)

Windows10 でLaravel開発環境構築(Atom+xampp)を構築してみました

 

手順はこうです

 

 

xamppインストール

以下のサイトからexeをダウンロードしてインストールする

composerインストール

以下のサイトからexeをダウンロードしてインストールする


コマンドプロンプトから以下のコマンドを実行する。

composer –version

>composer –version
Composer version 1.4.2 2017-05-17 08:17:52

 

Laravelインストール

Laravelプロジェクトを作成する場所に移動する。(例はxampp/htcos配下)

コマンドプロンプトから以下のコマンドを実行する。

cd [任意]\xamp\htdocs

 

コマンドプロンプトから以下のコマンドを実行する。

composer create-project laravel/laravel –prefer-dist プロジェクト名

 

作成したプロジェクトを確認する

xampp-controlからApacheをスタートする。

http://localhost/プロジェクト名/public」をブラウザで開く。

Laravelが表示されていればOKです。

 

Atomインストール

ここは必須ではありません。エディタやIDEはお好みで。

以下のサイトからexeをインストールする。

 

PHP開発に便利なパッケージを導入する。

 

composerを使用してphpmdとphpcsをインストールする。

composer global require phpmd/phpmd=*

composer global require squizlabs/php_codesniffer=*

 

インストール確認は以下のコマンド

phpmd –version

phpcs –version

 

D:\xampp>composer global require phpmd/phpmd=*
Changed current directory to C:/Users/suda/AppData/Roaming/Composer
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 6 installs, 0 updates, 0 removals
  - Installing symfony/filesystem (v3.3.9): Downloading (100%)
  - Installing psr/container (1.0.0): Downloading (100%)
  - Installing symfony/dependency-injection (v3.3.9): Downloading (100%)
  - Installing symfony/config (v3.3.9): Downloading (100%)
  - Installing pdepend/pdepend (2.5.0): Downloading (100%)
  - Installing phpmd/phpmd (2.6.0): Downloading (100%)
symfony/dependency-injection suggests installing symfony/yaml ()
symfony/dependency-injection suggests installing symfony/finder (For using double-star glob patterns or when GLOB_BRACE portability is required)
symfony/dependency-injection suggests installing symfony/expression-language (For using expressions in service container configuration)
symfony/dependency-injection suggests installing symfony/proxy-manager-bridge (Generate service proxies to lazy load them)
symfony/config suggests installing symfony/yaml (To use the yaml reference dumper)
Writing lock file
Generating autoload files

D:\xampp>phpmd --version
PHPMD 2.6.0

D:\xampp>composer global require squizlabs/php_codesniffer=*
Changed current directory to C:/Users/suda/AppData/Roaming/Composer
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing squizlabs/php_codesniffer (3.1.0): Downloading (100%)
Writing lock file
Generating autoload files

D:\xampp>phpcs --version
PHP_CodeSniffer version 3.1.0 (stable) by Squiz (http://www.squiz.net)

D:\xampp>php --version
PHP 5.6.30 (cli) (built: Jan 18 2017 19:48:22)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Xdebug v2.2.5, Copyright (c) 2002-2014, by Derick Rethans

D:\xampp>

PHPCS, PHPMDとは

どちらもPHPのコードチェックを行うコマンドラインツールです。

PHPCSは、PSR2などのコーディング規約に違反している箇所を教えてくれるツール。

PHPMDは不必要な変数宣言などの余分なコードや、長すぎる名前・行といった、いわゆるBuggyなコードを指摘してくれるツールです。

 

ざっくり以上です。頑張って構築してくださいね

Cloud9 時刻設定

 

Cloud9側の時間をまず合わせてみてください。
私もやってみましたがずれてますね。

 

[3:43]
これで Linux上が合いますので一度これで確認された結果をお教えください

sutaruhin:~/workspace $ date
Wed Sep 27 06:39:57 UTC 2017
sutaruhin:~/workspace $ echo "Asia/Tokyo" | sudo tee /etc/timezone
Asia/Tokyo
sutaruhin:~/workspace $ sudo dpkg-reconfigure --frontend noninteractive tzdata

Current default time zone: 'Asia/Tokyo'
Local time is now: Wed Sep 27 15:41:29 JST 2017.
Universal Time is now: Wed Sep 27 06:41:29 UTC 2017.

sutaruhin:~/workspace $ date
Wed Sep 27 15:41:35 JST 2017
sutaruhin:~/workspace $

LaravelのViewエラーの解析 謎のファイル名の正体は!

ちなみに 99a554—- はViewの場合に起こります。
プロジェクトフォルダー/storage/framework/views

のしたにこのファイルがありますので開くとその5行目がエラーです。

@includeなどが展開されたものの中間ファイルなのです。

開いてみてどの breadファイルなのかがわかるのです。

さいしょは、「なんだこりゃー」って皆さん思います。

Laravelで直接SQLをコーディングするには!

DBファサードを利用する。

公式ドキュメントは下記です
http://readouble.com/laravel/5/0/dev/ja/database.html

//SELECTクエリーを実行する
$results = DB::select('select * from items where id = ?', [3]);

//INSERT文を実行する
DB::insert('insert into items (id, name) values (?, ?)', [1, 'Larabel-PHP']);

//UPDATE文を実行する
DB::update('update items set votes = 100 where name = ?', ['Java']);

//DELETE文を実行する
DB::delete('delete from items');

//通常のSQL文を実行する
DB::statement('drop table items');

Laravel 定数

 

「Javaのpropaties みたいに設定情報などを管理することはできないか」

と質問が飛び込んできました。

Laravelでは定数として設定管理することが行います。

以下に説明いたします。

定数をコーディングするファイルを

app/config/const/定数ファイル名.php

に作成します。config配下にconstというフォルダーを作成されたほうが

沢山の関連定数が作成できます。

よく const.php という名前で作成されます。ファイル名は異なってもよいですよ。

今回のファイル名は、const.phpで説明いたします。

このPHPファイルでは、key => value形式で定数を設定することが可能です。

<?php
return array(
    'PET' => array('ねこ','犬','ハム太郎'),
    'FOOD' => array('キャットフード','ドックフード','ひまわりの種'),
    'WEIGHT' => 65,
    'HEIGHT' => 200,
);
上のコードは、4つの定数を設定した例になります。ハッシュ配列の形式で複数の定数を定義することが出来ます。

定数の利用

定数を利用する際には、

//ねこを表示したいとき
echo \Config::get('const.PET')[0];
//身長を表示したいとき
echo \Config::get('const.HEIGHT');

とすることで利用したい定数を使うことが可能です。
配列は添え字を使うことで選択できます

Config::get()を利用してLaravelのController、およびModel内で開発者が定義した定数を使うことが可能です。

またblead(画面)内での使用方法は下記となります

{{Config::get('const.FOOD')[2]}} ⇒ ’ひまわりの種’ と表示される。
{{Config::get('const.WEIGHT')}} ⇒ 65 kg と表示される。

larabelのroute定義整理

Laravelのルーティングを使ってみる

Route::get() / Route::post()

route.phpで行っているルーティングは、Routeクラスを使って行います。
getメソッドはGETアクセスされた場合、postメソッドはPOSTアクセスされた場合になります。

PHP

1
2
Route::get(URL, 処理);
Route::post(URL, 処理);

例えば、/sample/のURLにフォームを設置して、POSTした内容を同じページに表示するようにしてみます。

省略形にルート内容

Laravelのroutingも便利なもので、
Route::resource(‘users’)のようにすると
以下のようなルーティングが自動生成されます。

f:id:sugi511:20141203172113p:plain

さらに、そこから余計なものを作らない時には
以下のようにonlyで絞ることが出来ます。

    Route::group(['prefix' => 'admin', 'namespace' => 'Admin', 'before' => 'access_admin'], function()
    {
        Route::resource('users', 'UsersController', [
            'only' => ['index', 'show'],
        ]);
    }

イメージとしては、Admin画面でユーザー一覧(index)と
ユーザーページ(show)だけ存在しているという感じです。

コントローラへのルーティング

// app/Http/routes.php
Route::get('articles', 'ArticlesController@index');
Route::get('articles/{id}', 'ArticlesController@show');
Route::get('articles/create', 'ArticlesController@create');
Route::post('articles', 'ArticlesController@store');
Route::get('articles/{id}/edit', 'ArticlesController@edit');
Route::put('articles/{id}', 'ArticlesController@update');
Route::delete('articles/{id}', 'ArticlesController@delete');
+--------+----------+--------------------+------+------------------------------------------------+------------+
| Domain | Method   | URI                | Name | Action                                         | Middleware |
+--------+----------+--------------------+------+------------------------------------------------+------------+
|        | GET|HEAD | articles           |      | App\Http\Controllers\ArticlesController@index  |            |
|        | GET|HEAD | articles/{id}      |      | App\Http\Controllers\ArticlesController@show   |            |
|        | GET|HEAD | articles/create    |      | App\Http\Controllers\ArticlesController@create |            |
|        | POST     | articles           |      | App\Http\Controllers\ArticlesController@store  |            |
|        | GET|HEAD | articles/{id}/edit |      | App\Http\Controllers\ArticlesController@edit   |            |
|        | PUT      | articles/{id}      |      | App\Http\Controllers\ArticlesController@update |            |
|        | DELETE  | articles/{id}      |      | App\Http\Controllers\ArticlesController@destroy |            |
+--------+----------+--------------------+------+------------------------------------------------+------------+

参考サイト

Laravel 5.1のルーティング