こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

LaravelのコントローラーにプロパティはOK?

お世話になっております。

保守開発でPHPの案件に参画したのですが、既存のソースコードを見たところ、
コントローラーの実装で以下のようなものがありました。

class HogeController extends Controller
{
private $hoge = null;
public function index(Request $request_) {
$this->hoge = new stdClass;
....
}
public function next(Request $request_) {
$foo = $this->hoge->foo;
....
}
....

コントローラーにインスタンス変数(プロパティ)があって、
それに対していろいろと処理をしているのですが、
この実装は問題ないでしょうか?

JavaでWebのMVCを開発してきた経験からすると、コントローラーは
Singleton である場合が多いのではないかと思うのです。
当案件での実行環境等は、PHP7.2, Laravel5.6 です。

よろしくお願いいたします。

投稿日時 - 2019-06-14 13:29:45

QNo.9625738

困ってます

質問者が選んだベストアンサー

あるメソッド・関数内で完結する処理だけで用いられる場合などで、期待された動作をしているなら必ずしも間違いではありません。
ただ、基本的にこういう処理の方法はLaravelであっても一般的ではないと思います。
実装の問題はなくても上手くはないといったところでしょうか。

投稿日時 - 2019-06-14 21:33:31

お礼

ご回答ありがとうございます。
そうなんですよね。なんとか止めさせたいと思うのですが、説得できるだけの材料が揃わない状態です。

Javaですと、そのインスタンスがシングルトンかどうかは簡単に確認出来ます。コンテナが1つである場合が多いので。
PHPだとプロセス毎に実行系があったり、あるいはサーバーの種類によって違ったりもするでしょうか、、なかなかシングルトンになるのかどうか、あるいはスレッドセーフだったりするのかどうか、イメージが湧きません。

こうだから、こういう実装はダメですよ…と言いたいところです。

投稿日時 - 2019-06-16 00:07:34

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問