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

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

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

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

PHP

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

composer

Composerとは、PHP5.3.2以上で使用可能なパッケージ管理ツールです。指定ディレクトリ内だけでパッケージ管理します。

Q&A

解決済

2回答

1257閲覧

Laravel5.5の../vendor/composer/autoload_static.phpのコードに関する疑問

SanQ

総合スコア92

Laravel

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

PHP

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

composer

Composerとは、PHP5.3.2以上で使用可能なパッケージ管理ツールです。指定ディレクトリ内だけでパッケージ管理します。

0グッド

0クリップ

投稿2020/02/20 09:09

編集2020/02/20 09:30

直接書き込まなくても../vendor/composer/autoload_static.phpへ新たにコードが書き込まれる仕組みについて知りたいです。

環境
Laravel5.5

 Laravel5.5のオートローダの仕組みについて、../vendor/composer/autoload_static.phpと同フォルダ内のClassLoader.phpのクラスClassLoader内の関数である findfile、findFileWithExtensionを使い、autoload_static.phpから読み込むクラス名とそれに対応するファイルのパスを取得し、同じクラス内の関数であるloadClass、registerを使いそのファイルを読み込むことまでは理解できました。
しかし、このClassLoad.phpやオートローダを実行している../vendor/composer/autoload_real.phpのどの関数を見ても、なぜLaravel5.5内のあるディレクトリ内(例えば../app/など)で新たなファイルを作成した際に、そのファイルのクラス名をキー、そのファイルのパスを値としてautoload_static.phpの配列$classMapへ登録されるのかがわかりませんでした。
この疑問についてどなたかお答えいただけないでしょうか。

また、Laravel5.5のオートローダの働きと../vendor/composer/installed.jsonとの関係性もわかっていないので、こちらの方も答えていただければありがたいです。

Laravel5.5の../vendor/composer/autoload_static.phpの配列$classMapで実際に追加されたキーとその値

public static $classMap = array ( 'App\Auth\Passwords\PasswordManager' => __DIR__ . '/../..' . '/app/Auth/Password/PasswordManager.php', 'App\Auth\UserTokenProvider' => __DIR__ . '/../..' . '/app/Auth/UserTokenProvider.php', 'App\Author' => __DIR__ . '/../..' . '/app/Author.php', 'App\BlowfishEncrypter' => __DIR__ . '/../..' . '/app/BlowfishEncrypter.php', 'App\Bookdetail' => __DIR__ . '/../..' . '/app/Bookdetail.php', 'App\Console\Commands\ExportOrdersCommand' => __DIR__ . '/../..' . '/app/Console/Commands/ExportOrdersCommand.php', 'App\Console\Commands\HelloCommand' => __DIR__ . '/../..' . '/app/Console/Commands/HelloCommand.php',//自動で新たに追加したファイルのクラスとパス 'App\Console\Commands\SendOrdersCommand' => __DIR__ . '/../..' . '/app/Console/Commands/SendOrdersCommand.php',//自動で新たに追加したファイルのクラスとパス //省略 'App\Http\Controllers\PdfGeneratorController' => __DIR__ . '/../..' . '/app/Http/Controllers/PdfGeneratorController.php',//自動で新たに追加したファイルのクラスとパス 'App\Http\Controllers\Register\CallbackAction' => __DIR__ . '/../..' . '/app/Http/Controllers/Register/CallbackAction.php',//自動で新たに追加したファイルのクラスとパス 'App\Http\Controllers\Register\RegisterAction' => __DIR__ . '/../..' . '/app/Http/Controllers/Register/RegisterAction.php',//自動で新たに追加したファイルのクラスとパス 'App\Http\Controllers\Register\SecondCallbackAction' => __DIR__ . '/../..' . '/app/Http/Controllers/Register/SecondCallbackAction.php',//自動で新たに追加したファイルのクラスとパス 'App\Http\Controllers\Review\RegisterAction' => __DIR__ . '/../..' . '/app/Http/Controllers/Review/RegisterAction.php',//自動で新たに追加したファイルのクラスとパス 'App\Http\Controllers\UserAction' => __DIR__ . '/../..' . '/app/Http/Controllers/UserAction.php',//自動で新たに追加したファイルのクラスとパス 'App\Http\Controllers\User\LoginAction' => __DIR__ . '/../..' . '/app/Http/Controllers/User/LoginAction.php',//自動で新たに追加したファイルのクラスとパス 'App\Http\Controllers\User\RetrieveAction' => __DIR__ . '/../..' . '/app/Http/Controllers/User/RetrieveAction.php',//自動で新たに追加したファイルのクラスとパス //省略

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

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

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

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

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

m.ts10806

2020/02/20 09:30

たぶん、知らなくても差し支えないと思いますが、知ってどうしたいのか、記載いただけますか?
m.ts10806

2020/02/20 09:31

Laravelというよりcomposerの仕組みですしね。
SanQ

2020/02/20 09:33 編集

質問に関するご指摘ありがとうございます。 本当にただ知りたいという思いです。 今のところこれを知って何か作りたいという思いはありません。
guest

回答2

0

ベストアンサー

Composerの仕組みです。
composerコマンド実行されたときにcomposer.jsonの設定に沿ってマッピングされていきます。

このあたりを読むといいかもしれません。

 →からのこれで理解できるComposerを使ったオートロード

LaravelもComposerで管理されているパッケージの1つにすぎません。

投稿2020/02/20 09:41

m.ts10806

総合スコア80875

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

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

SanQ

2020/02/20 09:44

回答ありがとうございます。 今回紹介していただいた記事を基にまた調べていこうと思います。
guest

0

vendor/composer/autoload_static.phpという名前のとおり、このファイルはComposerが生成しています。

ファイルの生成と同時に書き込まれるわけではなく、composer installなどの操作によって生成されるものです。

投稿2020/02/20 09:33

maisumakun

総合スコア146018

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

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

SanQ

2020/02/20 09:37 編集

回答ありがとうございます。 composer installの操作によって../vendor/composer以下のファイル内の処理が行われるという認識であっていますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問