質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

1001閲覧

USEについてお聞きしたいことがあります

toll_tree

総合スコア199

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2019/05/11 03:24

laravelを学習していたのですが、お聞きしたい部分があった為、ご質問させて頂きました。

<?php /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ // Route::get('hello','HelloController@index'); // Route::post('hello','HelloContoroller@post'); $html = <<<EOF <html> <head> <title>Hello</title> <style> body {font-size:16pt;color:#999;} h1 {font-size:100pt;text-align:right; color:#eee; margin:-40px 0px -50px 0px; } </style> </head> <body> <h1>Hello</h1> <p>This is sample page</p> <p>これは、サンプルで作ったページです。</p> </body> </html> EOF; Route::get('hello',function() use ($html){ return $html; });

上記コードは、ルート情報を管理する、「routes」フォルダ内の「web.php」です
お聞きしたい部分は、「Route::get('hello',function() use ($html){return $html;});」こちらのuse 以降の記載についてです。
useを調べましたら、クラスを宣言する際に使用されるとの情報がありましたが、クラスなどは作っていないため、クラスとは無関係に思えます。
どなたか、情報をお持ちでしたらご助言頂けましたら幸いです。
よろしくお願いします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

use違いでちゅ。そのuseは無名関数のuseでちゅ。

https://www.php.net/manual/ja/functions.anonymous.php

例3 親のスコープからの変数の引き継ぎ

でちゅねぇ。

投稿2019/05/11 03:26

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toll_tree

2019/05/11 03:33

ありがとうございます。 となりますと、関数内で、「$html」をreturnするため、useにて変数を引き継いでいるといった理解であっていますでしょうか?
toll_tree

2019/05/11 03:34

laravelの特殊な構文なのかなと思っていたのですが、PHPの構文だったのですね。。
退会済みユーザー

退会済みユーザー

2019/05/11 03:35

>関数内で、「$html」をreturnするため、useにて変数を引き継いでいるといった理解であっていますでしょうか? はい、それで合っていまちゅよ。
退会済みユーザー

退会済みユーザー

2019/05/11 03:37

// 引き継がれた変数の値は、関数が定義された時点のものであり、 // 関数が呼ばれた時点のものではありません
退会済みユーザー

退会済みユーザー

2019/05/11 03:38

ここのところが重要なため、useを使っているみたいでちゅね。
退会済みユーザー

退会済みユーザー

2019/05/11 03:41 編集

Laravelしゃんが、例示の無名関数を利用する時に例示の$htmlを利用するためには、 Route::get('hello', function($html){ return $htm; }); というわけにはいかないのでちゅ。 利用するときのスコープは違いまちゅからね。
toll_tree

2019/05/11 03:43

今調べていましたら、ちょうど引き継がれた変数の値が、定義されていた時点のものだとの説明が書いてありました。 この変数の値に関しては、無名関数の引数だからという訳ではなく,useの特性ということですよね? 度々申し訳ないです。
退会済みユーザー

退会済みユーザー

2019/05/11 03:47

聞いている事の意味が良くわからないのでちゅが、useまで含めて「PHPでの無名関数の実装」でちゅ。 無名関数は大体どの言語でも、その関数を定義した場所でのスコープが利用されるのでちゅが、 PHPは後付けで無名関数が実装されたので、それまでのPHPと互換性を保つために 無名関数定義時のスコープにある変数を利用するための手段としてuseというのを使うようにした、 という事なのでちゅ。
toll_tree

2019/05/11 03:58

分かりました。ありがとうございました。
guest

0

そもそもの話をすれば勉強中だろうとLaravelでそういう書き方はしないほうがいい。

こう書けばいいだけのことだし

Route::get('hello', function(){ $html = <<<EOF EOF; return $html; });

本来はこれさえもよくなくて最初からviewを使うのが普通のLaravel。新規プロジェクトを作れば最初からこう書かれてるのにわざわざ違う使い方するのは学習方法を間違えてる。

Route::get('hello', function() { return view('welcome'); });

Laravelの前にPHPの基礎を勉強する段階。

投稿2019/05/11 04:18

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toll_tree

2019/05/11 04:27

書籍でlaravelの勉強をしていまして、Route::getの働きとしてこういうこともできる、との紹介されていたコードの一つでした。 本格的なwebページを作る際は、別の方法が用意されているとの記載は、されていましたね
toll_tree

2019/05/11 04:28

「Route::get('hello', function(){ $html = <<<EOF EOF; return $html; });」 こちらの書き方の紹介もありましたね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問