タグ

DIに関するlax34のブックマーク (20)

  • PHP-DIイントロダクション - Qiita

    この記事について 最近はDIライブラリが標準で付いているPHPフレームワークも多いと思いますが、フレームワークの機能に極力依存せずにDIをしたかったので、外部ライブラリーによるDIを試してみました。 PHP用のDIいくつかあったのですが今回はPHP-DIについて調べたのでその基的な使い方を記載したいと思います。 自分が知りたかった箇所のみ記載してますので、詳しい使用方法は公式ページで確認してみてください。 環境 今回はphp と composer のみの最小構成の環境で試してます。 $ php -v PHP 7.3.0 (cli) (built: Dec 6 2018 02:17:00) ( ZTS MSVC15 (Visual C++ 2017) x86 ) $ composer -v Composer version 1.8.0 2018-12-03 10:31:16

    PHP-DIイントロダクション - Qiita
    lax34
    lax34 2019/10/04
  • PHPのSlimフレームワークでオートワイヤリングする - akrfjmtの日記

    はじめに 私が好きなPHPのWebフレームワークはSymfonyです。 特に、サービスコンテナが既定でオートワイヤリングを利用できるのが便利で良いです。ここで言うオートワイヤリングは、自明な依存関係については設定を書かずとも勝手に依存関係を解決してくれる、そして、コントローラクラスのアクションメソッドにパラメータの型名を書いておくと実行時にそれが渡されてくるという便利機能です。なお、オートワイヤリングの元祖はSymfonyではなく、JavaのSpring方面から来たものだと私は思っています。 一方で、Symfonyの欠点は「デプロイが面倒」などが上げられます。PHPは、番環境にスクリプトをgit cloneすると動くという素晴らしい特徴を持つ処理系だと思われていましたが、Symfonyを利用する場合はその限りではありません。Symfonyのプロジェクト番環境にデプロイするためには、ま

    PHPのSlimフレームワークでオートワイヤリングする - akrfjmtの日記
  • GitHub - akrfjmt/slim-beauty: dependency injector for slim3

    lax34
    lax34 2019/05/11
  • Dependency injection in Slim framework 2

    Slim framework comes with a Dependency Injection container called Set. The basics The DIC is accessed via the container property of $app. To set, you use the set() method: $app->container->set('foobar', function() { return new Foo\Bar(); } ); If you need a given resource to be shared, then use the singleton method: $app->container->singleton('foobar', function() { return new Foo\Bar(); } ); And th

    Dependency injection in Slim framework 2
    lax34
    lax34 2019/05/10
  • DI(依存性注入)について

    3. DI(依存性注入)とは なるほど。わからん。 依存性の注入(英: Dependency injection)とは、コンポーネント間の依存関係をプロ グラムのソースコードから 排除し、外部の設定ファイルなどで注入できるようにするソ フトウェアパターンである。英語の頭文字からDIと略される。 wikipediaより https://ja.wikipedia.org/wiki/依存性の注入 4. DI(依存性注入)とは 依存性の注入(英: Dependency injection)とは、コンポーネント間の依存関係をプロ グラムのソースコードから 排除し、外部の設定ファイルなどで注入できるようにするソ フトウェアパターンである。英語の頭文字からDIと略される。 wikipediaより https://ja.wikipedia.org/wiki/依存性の注入 言葉の意味から考えてみよう! 6.

    DI(依存性注入)について
    lax34
    lax34 2016/10/15
  • 「なぜDI(依存性注入)が必要なのか?」についてGoogleが解説しているページを翻訳した  - Qiita

    イマイチ理解しきれていなかったDIに関して調べていところ、Google Guiceの解説がすごく分かりやすかったので、和訳してみました。 (ところどころ意訳気味です。明らかに解釈の誤った訳がありましたら、ご指摘ください) ちなみにGoogle Guiceというのは、Googleが開発したDIライブラリです。この例ではJavaが使用されていますが、Scalaでも使用可能です。最近Play Frameworkでも採用されたので話題になっているようです。 用語の定義 文を読む前に目を通すことで、内容をスムーズに理解できます。 用語 意味 文中の例

    「なぜDI(依存性注入)が必要なのか?」についてGoogleが解説しているページを翻訳した  - Qiita
  • DI・DIコンテナ、ちゃんと理解出来てる・・? - Qiita

    意外と分からずに、「とりあえず」とか「なんとなく」で使っちゃうパターンが多い系案件な気がして書いてみます。 こんな事ありませんか? DIとDIコンテナの違いを説明出来ない DIとサービスロケータの違いを説明出来ない DIを使ってるつもりが、サービスロケータになっている DI、サービスロケータが、ただの「パターン」の1つであることを理解してない DI(Dependency Injection)を正しく理解する そもそも、Dependeny Injectionを日語にするとどういう意味になるでしょうか。 多くの人が「依存性の注入」とか応えるのではないでしょうか? 私もそうでした。きっと何かで読んだのでしょう。 (wikipediaに「依存性の注入」と書いてありますね) 補足 なぜ依存性を注入してあげると良いのか、そのメリット等は後述しますが、 DIというのはただのパターンの1つです。 たまに

    DI・DIコンテナ、ちゃんと理解出来てる・・? - Qiita
  • Angular2のDIを知る - Qiita

    Injectする側 これをComponentでDIします。DIするにはComponentのprovidersプロパティにDIしたいクラスを指定し、コンストラクタでそのクラスの引数を取ります。 import {Component} from 'angular2/core' import FooService from "./fooService"; @Component({ selector: 'my-app', providers: [FooService], template: ` <div> <h2>Hello {{name}}</h2> </div> `, directives: [] }) export class App { constructor(private fooService: FooService) { this.name = fooService.say(); }

    Angular2のDIを知る - Qiita
  • 作って理解するDIコンテナ - きしだのHatena

    DIコンテナ使ってるけど、アノテーションってなんなの!って聞かれて、作ってみたらわかるよと答えてみたので、自分でも作ってみました。 よくわかった。 「DIコンテナ使うと何がいいの?」ということも、作ってみるとわかります。あと「DIって何がいいの?」に関しては、「DIはちょっとコードを書くのが楽になるだけで、それだけあっても仕方ない、大事なのはコンテナ」と答えるようにしてますが、コード比率からもそれがよくわかります。 続編としてWebフレームワークも作っているので参考まで。 作って理解するWebフレームワーク - きしだのHatena まずはコンテナを作る とりあえず1ソースの状態で。 こんな感じで、管理する型を登録できるようにします。 static Map<String, Class> types = new HashMap<>(); static void register(String

    作って理解するDIコンテナ - きしだのHatena
  • Symfony 2.8とPHP-DIのAuto Wiring - プログラミングメモ

    この記事は Symfony Advent Calendar 2015 の16日目です。昨日は@Issei_Mさんの「最近のSymfony Standard Editionのディレクトリ構成」でした。 内製フレームワークからの移行先を探してSymfonyを調査中です。その過程でDIのAuto Wiringの使い方を確認したので、ここにまとめます。 概要 Symfony 2.8ではサービスのAuto Wiringが可能になりました (New in Symfony 2.8: Service Auto Wiring (Symfony Blog))。これまでは、services.ymlにサービスの名前とクラス名の定義、依存先のサービスも(たとえばコンストラクタの引数として)指定が必要でした。Auto Wiring有効時は、コンストラクタのタイプヒンティングを利用して、これらの定義が簡略化できるように

    Symfony 2.8とPHP-DIのAuto Wiring - プログラミングメモ
  • やはりあなた方のDependency Injectionはまちがっている。 — A Day in Serenity (Reloaded) — PHP, FuelPHP, Linux or something

    今日はPHP界隈で大人気のDependency Injectionと、それに関連する用語について整理しておこうと思います。 以下のような状況があるのではないか?と思ったからです。 多くのPHPユーザがDependency Injection(DI)をよくわかっていない、あるいは正確に説明できません。 そして、デザインパターンである「DIパターン」とDIをサポートするツールである「DIコンテナ」を混同しています。 また、「DIパターン」と「サービスロケータパターン」をうまく区別できていません。 Dependency Injectionとは何か? Dependency Injectionとは「Dependency」を「Injection」するというデザインパターンです。 日語では何故か「依存性の注入」と訳されており、これが混乱の元ではないかと思います。 日語で「依存性」と言うと、「依存性は

  • Pimpleでシンプルに正しくDIを理解する

    オブジェクト指向でソフトウェアを実装していると、オブジェクトの生成に一連の手続きが必要なものがでてきます。このような生成に関する手続きがあちこちのソースコードへ散在すると、望ましくない状況になることは想像に難くないでしょう。この問題に対処するために、Simple FactoryやFactory Methodといったデザインパターンがあり、オブジェクトの生成に関する手続きや関連オブジェクトも含めたオブジェクトの構成(オブジェクトコンストラクション)に関する知識は1箇所にまとめるということが定石となっています。 しかし、単にファクトリーを導入するだけだと、オブジェクトの構成処理は分離・隠蔽できても、利用オブジェクトがファクトリー自体に依存してしまうことになります。このような試行錯誤の歴史から登場したのがDependency Injection(依存性の注入)パターンです。Dependency

    Pimpleでシンプルに正しくDIを理解する
  • DIについてあれこれ - tototoshi の日記

    Dependency Injectionとはコンポーネント間の依存関係をプログラムのソースコードから排除し、外部の設定ファイルなどで注入できるようにするソフトウェアパターンである ってwikipedia先生が言ってました。 Scalaにおける最適なDependency Injectionの方法を考察する 〜なぜドワンゴアカウントシステムの生産性は高いのか〜 - Qiita を読んでいろいろ考えたので、なんで今さらって感じのことを書きます。 ScalaでDIというとDIコンテナとかCake PatternとかReader Monadとかって話になっちゃうんですが、これらはいかにかっこよくDIするかの話であって、別にこういった道具やパターンを使わなくてもDIは可能という話です。 Constructor Injection 簡単な例で考えます。今ここにUserRepositoryにべったり依存し

    DIについてあれこれ - tototoshi の日記
  • GitHub - fuelphp-storage/dependency: Fuel Dependency package based on League\Container

  • fuelphp/dependency - Packagist

  • DIとサービスロケータの違い

    DIとサービスロケータは、いずれもオブジェクトの構築と依存の解決という仕事を切り出すためのパターンです。ところで、この2つのパターンの違いを明確に説明できるでしょうか? Pimpleでシンプルに正しくDIを理解する のコードは以下のようになっていました。 <?php require_once '../vendor/pimple/pimple/lib/Pimple.php'; // インフラ interface MailerInterface { public function send($body); } class SendmailMailer implements MailerInterface { public function send($body) { } } // ドメイン class NewsletterTransfer { protected $mailer; public

    DIとサービスロケータの違い
  • 要するに DI って何なのという話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    友人から「しんぺいさん DI について書いてほしい」みたいな話をだいぶ前からされてたんだけど書く気力ずっとなかった。でも仕事の気分転換にちょっとずつ書いたやつがいい量まとまったので公開するです。たいしたことは書いてないっていうか知ってるひとにはあたりまえのことしか書いてない。サンプルコードはわたしの趣味Scala で書いてあるが、Java が読めればなんとなく読めると思います。 DI ってなに Dependency Injection、日語で言えば依存性の注入です。おしまい。 で記事を終えてもいいんだけど、そもそも依存性とはなんなのか、それを注入するとはどういうことなのか、なぜ DI が必要となるのかみたいな話をこれからします。 そもそも依存性ってなあに 例を出します。入力された文字列をもとにおみくじをひいて、その結果を twitter に投稿するプログラムにしましょう。 まずは普通

    要するに DI って何なのという話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    lax34
    lax34 2014/02/13
  • JavaScriptでDIできる Injector.js つくった - mizchi log

    仕事でRobotlegsというAS3のフレームワークを使っているのだけど、DI機構がかっこよかったので、Injectorだけ真似て作ってみた。 mizchi/injector.js · GitHub https://github.com/mizchi/injector.js Robotlegs AS3 Micro-Architecture - Home http://www.robotlegs.org/ 使い方 ConstructorClass.inject に {key:InjectedClass} で実体化するインスタンス名と実体化するクラスを登録する。 CoffeeScriptで違和感無いような記法でチューニングしてある。 class UserModel class X_View Injector.register(@) @inject: model: UserModel Injec

    JavaScriptでDIできる Injector.js つくった - mizchi log
  • Pinocoでシンプルに正しく(&ぶっちゃけで)DIを理解する - なんたらノート第三期ベータ

    Pinocoだって実はすごいんだぞ、Pimpleになんて負けないもん、というわけで、 PHPメンターズ -> Pimpleでシンプルに正しくDIを理解する をPinocoで理解してみようというネタをやります。先にこれを見ておいてください。 あ、「Pinocoってなんやねん、あっちょんぶりけかよ」って思った人すみません。Pinocoは拙作のマイクロフレームワークです。いわゆるオレオレの一種ですが、オレオレにしてはかなりよくできたほうだと思います。RESTなAPIを作る他のと比べて、どっちかといえばWebサイトを作るほうが強い感じのヤツ。 https://github.com/tanakahisateru/pinoco で、DIですよ。依存性注入ですよ。楽しんご的なアレじゃないですよ。オブジェクト指向ですよ。 Pinocoの第一印象はみんな「プレーンPHPっぽいね」で、それはそれで狙い通りなん

    Pinocoでシンプルに正しく(&ぶっちゃけで)DIを理解する - なんたらノート第三期ベータ
  • PHP製DIコンテナ"yadif"をZend_Applicationと共に使う - noopな日々

    Zend_Applicationはフレームワークの設定と主要インスタンスの管理に使いますが、今のところモデル用のリソースがありません。 PHP製のシンプルなDIコンテナ"yadif"は設定によるオブジェクトの生成と管理が可能で、モデルの管理にも適します。ここでは、yadifを利用してサービスリソースを作成し、アプリケーションからモデルにシンボル名でアクセスできるようにします。 Zend_Applicationでのリソースの作成その他については、公式マニュアルに十分な解説がありますが、こちら(Zend_Application (5) 実戦的使い方 - noopな日々)でも書きました。 Yadif - Yet Another Dependency Injection Framework を使う GitHub - tsmckelvey/yadif: Yet Another (PHP) Depen

    PHP製DIコンテナ"yadif"をZend_Applicationと共に使う - noopな日々
  • 1