Laravel:File::files($hoge)で取得した値がprivateで変数に出来ない時の対処法

Laravel:File::files($hoge)で取得した値がprivateで変数に出来ない時の対処法

Laravel:File::files($hoge)で取得した値がprivateで使えない

システムのDirectory内一覧を取得しようとFile関数を利用した時の事。取得した値がPrivateとなり変数として再利用できない。こんな場面に遭遇しました。

Fileの使用目的は画像データの一覧を取得したかったから。画像取得の速度を上げるために、システム内の画像の検索性を上げようと保存しているデータをDBに書いて仕舞えと思ったのですが、Fileで取得した値を再利用できない。

File::files($hoge)の結果を変数に入れる事が出来ない

実行結果

どうやら「【File::】で取得した値はPrivate なのでアナタには使えません」と言われている様子。

そもそも取得できてないのか?と思い確認してみます。

var_dump() すると取得できている

var_dumpで確認するとPrivateと前置きをされていますが欲しい情報が取得できています。

でも使えなきゃ意味ないのだよ!
classのプロパティ―をPublic に 変更する?
いやいや、それ出来るとしてもあまりいい方法じゃないよね。

Getter を使うとちゃんと再利用できる!

上のスクリプトをこんな感じに変えました。

取得したいカラム名の前にgetを付けるだけ。

関数 File::files() は取得した値をobjectで返してくれます。
その為【$name = pathinfo($file->getfileName());】と言った感じになります。

まとめ

システムの関数を使い取得が出来ない値があった場合、Getterを使って取得を試みてみましょう。

さぁ、一時テーブル作ってあげたけど速度上がるかなぁ~。
速度が上がらなかったら、折角作ったけどお蔵入り。
システム作ってるとそんなことはよくありますよね。