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

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

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

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

PHP

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

Q&A

解決済

1回答

472閲覧

PHP(Laravel)におけるApplication.phpの$this[$key]の設定箇所ついて

nao3451

総合スコア1

Laravel

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

PHP

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

0グッド

0クリップ

投稿2022/01/17 06:22

はじめて質問させていただきます、よろしくお願いいたします。

現在Laravel(及びPHP)の勉強の為、簡単なアプリケーションを作成しつつ、
Laravel自体のコードを読んで理解を深めようとしています。

本題ですが、一部流れが追えない処理があり、readouble等いくつか調べてみたのですが、
詳細まで記載がないこともありピンとこなかった為、こちらで質問させていただければと思います。

Application.phpにおける$this[$key]の設定箇所について

Application.php内で以下参考ソースのように参照している箇所がいくつかありますが、
このkey / valueをどこで設定しているのかをご教示いただければと思います。

参考:Application.php>setLocale内の$this['config']など

/** * Set the current application locale. * * @param string $locale * @return void */ public function setLocale($locale) { $this['config']->set('app.locale', $locale); $this['translator']->setLocale($locale); $this['events']->dispatch(new LocaleUpdated($locale)); }

同じくApplication.php内にregisterCoreContainerAliases()があり、ここでエイリアスを定義していますが、
こちらはmake()などでDIする際のエイリアスの定義と理解しており、おそらく別の箇所で設定しているのかなと見ています…。

確認環境
・Laravel:8.78.1

どうぞよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Applicationではなく親のContainerの機能。

php

1class Container implements ArrayAccess, ContainerContract

ArrayAccess。
https://www.php.net/manual/ja/class.arrayaccess.php
オブジェクトを配列のように扱えるのでこの辺は全部同じ結果なはず。

php

1app()->make('config'); 2app()['config']; 3app()->config; 4//ユーザー側では↓だけ覚えればいい。 5config(); 6FacadeのConfig:: 7app('config');

app()であるApplication内では$thisでいい。
$this['config']$this->make('config')は同じこと。

投稿2022/01/17 08:50

kawax

総合スコア10377

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

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

nao3451

2022/01/17 09:41

ご回答いただき、ありがとうございます。 理解しました! 確かに親クラスの Container で ArrayAccess を実装しており、 以下の offsetGet() で与えられた引数に一致する値を $this->make($key) から返している為、 記載いただいた方法で同じ結果になるようでした。 -------- /** * Get the value at a given offset. * * @param string $key * @return mixed */ #[\ReturnTypeWillChange] public function offsetGet($key) { return $this->make($key); } -------- モヤモヤが晴れ、すっきりしました。 回答いただき、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問