• ベストアンサー
  • 困ってます

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

  • 質問No.9625738
  • 閲覧数88
  • ありがとう数2
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 100% (3/3)

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

保守開発で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 です。

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

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

  • 回答No.1
  • ベストアンサー

ベストアンサー率 72% (111/153)

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

お礼率 100% (3/3)

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

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

こうだから、こういう実装はダメですよ…と言いたいところです。
投稿日時:2019/06/16 00:07
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ