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

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

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

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

4448閲覧

Laravel6 DIしたいクラスのconstructorに引数がある場合

nnahito

総合スコア2004

Laravel

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2019/12/06 09:49

質問

LaravelのControllerで、ビジネスロジックを使おうと思ったのですが、
そのビジネスロジックに引数がある場合はどのようにすればいいのでしょうか。

コード

php

1class HogeController extends Controller 2{ 3 public function __construct(Business $business) { // ←DIで注入しようとすると引数がないので怒られる 4 } 5}

php

1class Business 2{ 3 public function __construct(string $hoge) { 4 } 5}

検索しても情報がない…?

あまり検索が得意ではない(結構致命的)なのですが、答えが出てこない…
つまり自分のやり方が悪いのだと思うのですが…

こちら、どのように改善するのでしょうか。
ご存じの方がいらっしゃいましたら、ご教示いただけますと幸いです。
ツールの使い方なので知らないとどうしようもなく…

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

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

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

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

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

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

m.ts10806

2019/12/06 12:12

>ツールの使い方なので 本件にツール要素はどこにあるのでしょうか。
guest

回答1

0

ベストアンサー

AppServiceProvider@registerなどで自分で登録。

php

1$this->app->bind(Business::class, function ($app) { 2 return new Business(config('business.hoge')); 3});

サービスコンテナはLaravelの肝ながら理解するのは中々難しいけど。

何も登録してない場合:普通にnew Business()してるのと同じ。

登録してる場合:登録した初期化方法でサービスコンテナから取り出すイメージ。

その他の方法。app()かresolve()ヘルパーを使う。

php

1public function __construct() { 2 $business = app(Business::class, ['hoge' => $hoge]); 3}

投稿2019/12/06 12:38

kawax

総合スコア10377

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

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

nnahito

2019/12/08 05:35

有難うございます! 「AppServiceProvider」というもので登録できるのですね! 助かりました><
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問