タグ

diに関するshimookaのブックマーク (31)

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

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

    Pimpleでシンプルに正しくDIを理解する
  • Slim4-Skeleton解析のためのSlim4解析のためのPHP-DIの解析 - がるの健忘録

    タイトルが長い(笑 いやまぁ色々と調べていてそれはそれで後で記事にするのですが。 Slim4で使われているContainerについてちょいと調べたので、備忘録かてがて。 Slim3では "pimple/pimple" が使われていたのですが、Slim4では "php-di/php-di" が使われています。 ……いや「plainなinstallすると色々とアレがナニ」な感じで色々と色々なのですが、その辺はまた別に記載いたします*1。 似たようなもんか……と思いきや色々と差異があったりするので、その辺を調べてみました。 一端、ざっくりとSlim4をインストールしてある、とか思ってくださいませ。 ちと別件もあるので少し余計なものが入ってますが、composer.jsonが { "require": { "slim/slim": "^4.4", "twig/twig": "^3.0", "php

    Slim4-Skeleton解析のためのSlim4解析のためのPHP-DIの解析 - がるの健忘録
  • PHP-DI - The Dependency Injection Container for humans

    Type-hint your constructor parameters and the container can guess which dependencies to inject. class Foo { private $bar; public function __construct(Bar $bar) { $this->bar = $bar; } } Covers 80% of the use cases with 0 configuration. Expressive configuration PHP-DI's configuration is written in PHP, allowing to benefit from auto-completion, static analysis and refactoring support with any IDE.

  • テンプレートエンジンのくせに最近のPHPはオブジェクト志向やらDIやらイキり始めた件 - JavaScriptをがんばるブログ

    ※2017/05/29現在Repositoryの章までしか聞けていません。聞いている際に浮かんだインスピレーションが揮発しないよう永続化する為に書いた記事です。 php-genba.shin1x1.com まさか日語でこの内容を聞けるコンテンツがあるとは思わなかったです。 これは英語をマスターすれば Sound of Symfony The Laravel Podcast Ruby on Rails Podcast JavaScript Air devchat.tv などのPodcastからより多くの興奮を得られる事を意味します。 プログラミング経験3年、細かい修正ばかりで設計レベルの経験値が全くない自分ですが、各章について以前から個人的に思っていた事、お三方の知見からインスピレーションを得た内容を書き残します。 1. DI 「依存性の注入(Dependency Injection)」と

    テンプレートエンジンのくせに最近のPHPはオブジェクト志向やらDIやらイキり始めた件 - JavaScriptをがんばるブログ
    shimooka
    shimooka 2017/05/30
    id:heavenshell テストのためだけにrunkit使う勢もいるわけで、そこまで過剰でもない(過剰) / 『サービスロケータパターンで全部入りコンテナを受け取っている』そう、この部分とこれに纏わる煩雑な設定がモヤモヤする
  • DI・DIコンテナ、ちゃんと理解出来てる・・? - Qiita

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

    DI・DIコンテナ、ちゃんと理解出来てる・・? - Qiita
    shimooka
    shimooka 2016/08/02
    DIコンテナ使う時のキー("database.authenticator"とか"file.loggger")って知らなきゃ使えないが、個人的にはこれらを調べたり覚えるコストが意外に高い。なので、DI系フレームワークをいじるのは食傷気味。。。
  • やはりあなた方の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」するというデザインパターンです。 日語では何故か「依存性の注入」と訳されており、これが混乱の元ではないかと思います。 日語で「依存性」と言うと、「依存性は

  • PHPで簡単に華麗にDIとAOPをキメる - c4se記:さっちゃんですよ☆

    PHP Advent Calendar 2014の11日目です。昨日は普通じゃないモッキングフレームワークAspectMockがパワフル過ぎるでした。明日は @shin1x1 さんです。 おくすりをきめキメた。 経緯 AspectMockに続いて日はAOPです。DIもあるよ。 去年のPHP Advent CalendarではRay.DiとRay.Aopをキメました。 cf. PHP でRay.DiとRay.Aopをやってみる http://c4se.hatenablog.com/entry/2013/12/20/015945 お花屋さんでWebサイトを作ってゐるうちにDIが欲しくなりPimpleを使うてゐましたが、いつか見たannotationでしゅるっとDIするやつやりたい>ω< でもアレめんどくさい><← といふのでPimpleを拡張して自作しました。 cf. PHPでDI (依存性

    PHPで簡単に華麗にDIとAOPをキメる - c4se記:さっちゃんですよ☆
    shimooka
    shimooka 2014/12/15
    あとで読む
  • PHPでDI(Dependency Injection) - Qiita

    何かと話題のPHPでのDIについてまとめてみました。 そもそも DI(Dependency Injection)ってなんぞ? その名の通り、 依存性(Dependency)の 注入(Injection)です。 依存をクラス内で生成せずに外から設定します。 まだパッとしないので具体例を挙げて説明してみます。 まずDIでないパターン class Car { /** * @var EngineInterface */ private $engine; public function __construct() { $this->engine = new Engine(); } public function run() { $energy = $this->engine->burn(); } } このコードの良くない点 別のエンジンに変えたい時にCar.phpを修正しなければならない。 エンジン

    PHPでDI(Dependency Injection) - Qiita
  • 要するに DI って何なのという話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

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

    要するに DI って何なのという話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    shimooka
    shimooka 2014/02/13
  • PHPフレームワーク「Aura v2」がクリーン過ぎるので試してみる — A Day in Serenity (Reloaded) — PHP, CodeIgniter, FuelPHP, Linux or something

    でまだ誰も紹介していないようなので、今日は新しいPHPフレームワーク「Aura v2 -- Aura.Web_Project」を紹介します。 Lighter than Silex, and slimmer than Slim, the Aura.Web_Project package is a minimalist web-specific project framework that starts out small and grows only as you need it. http://auraphp.com/blog/2013/12/12/aura-v2-web-project/ 参考訳:Silexより軽く、Slimよりスリム、Aura.Web_Projectパッケージは、あなたが必要とする小さく始めて成長する、ミニマリストのWebに特化したプロジェクトのフレームワークです。

    PHPフレームワーク「Aura v2」がクリーン過ぎるので試してみる — A Day in Serenity (Reloaded) — PHP, CodeIgniter, FuelPHP, Linux or something
  • 「速く、簡単に、もっときれいに:DIコンテナとサービスロケータを区別する方法について」を翻訳しました

    PHPメンターズ道場生 kumamidori です。 PHPのエキスパートとして世界的に知られている方の1人に、Paul M. Jonesさんがいらっしゃいます。 フレームワーク「Aura for PHP」のリードであり、PHP-FIGの策定メンバーに入られている方です。 通称 pmjones さんのブログで、昨年末、DIに関する下記エントリがありました。 「Quicker, Easier, More Seductive: How To Tell A DI Container From A Service Locator」 興味深い内容のようだったので、翻訳しました。翻訳記事の公開について、著者ご人から快諾頂けたため、掲載させて頂きます。 文中にあるとおり、この記事に対する訂正として、「Quicker, Easier, More Seductive: Names, Usage, and

    「速く、簡単に、もっときれいに:DIコンテナとサービスロケータを区別する方法について」を翻訳しました
  • Android用DIコンテナDaggerはGuiceの数倍速い - _development,

    概要 Android用のDIコンテナDaggerのパフォーマンスをGuiceと比較しました。 Dagger自体の使い方などは述べていませんので、公式サイトのドキュメントなどを参照してください。 DaggerはSquare社製のAndroidをターゲットにしたDIコンテナです。 開発者の一人であるJesse Wilson氏がプレゼンテーション(InfoQ - Dagger: A Fast Dependency Injector for Android and Java)のなかで It's like Guice, but with speed instead of features と述べているように、Guiceと同じくJSR330のAnnotationを使ってオブジェクトの依存関係を記述します。また、上述のとおりGuiceでサポートされている機能のいくつかはサポートしないかわりにパフォーマン

    Android用DIコンテナDaggerはGuiceの数倍速い - _development,
  • Google Code Archive - Long-term storage for Google Code Project Hosting.

    Code Archive Skip to content Google About Google Privacy Terms

    shimooka
    shimooka 2013/03/07
    設定ファイルはXMLなのか。。。Strutsの悪夢が蘇る?
  • PHPのDIで動的にオブジェクトを確保する考察

    Dependency InjectionがPHPでも流行っているそうです。が、未だによくわからないので、わからないところを自分なりに考察してみます。 ※DIコンテナではなくデザインパターンとしてのDIを考えます。 Dependency Injectionとは Dependency Injectionはデザインパターンの一種です。日語なら依存性の注入と訳されます。「Inversion of Control コンテナと Dependency Injection パターン」が原典でしょうか。 ざっくり要約すると「クラスの中でnewしてはいけない。必要なインスタンスは外から突っ込むべし」というところかな。 class Y { private $x; function __construct() { $this->x = new X; } //...$xを使ったコード色々... } 上記のYクラス

    PHPのDIで動的にオブジェクトを確保する考察
  • WEB+DB PRESS PHP連載第3回「SymfonyではじめるDI」を執筆しました

    2018年1月10日に開催された DCI Tokyo 1 に続き、2018年3月27日に DCI Tokyo 2 が開催されました。今回も James Coplien @jcoplien さんをお招きしてのトークセッションとなりました。会場は 株式会社ヴァル研究所 様に提供していただきました。 セッションは、前回同様 @remore さんと @ganchiku さんによる同時通訳とともに進められました。 今回のテーマはマルチパラダイムデザイン(Multi-Paradigm Design: MPD)の中核を成し、DCI / リーンアーキテクチャ(Lean Architecture)とも深く関係する 共通性/可変性分析 でした。 レポートは @smori1983 が担当させていただきます。 当日の様子は Coplien さんの許可を得て YouTube の DCI Tokyo 公式アカウントに

    WEB+DB PRESS PHP連載第3回「SymfonyではじめるDI」を執筆しました
  • PHPカンファレンス2012で「実践Dependency Injection」の講演を行いました

    2018年1月10日に開催された DCI Tokyo 1 に続き、2018年3月27日に DCI Tokyo 2 が開催されました。今回も James Coplien @jcoplien さんをお招きしてのトークセッションとなりました。会場は 株式会社ヴァル研究所 様に提供していただきました。 セッションは、前回同様 @remore さんと @ganchiku さんによる同時通訳とともに進められました。 今回のテーマはマルチパラダイムデザイン(Multi-Paradigm Design: MPD)の中核を成し、DCI / リーンアーキテクチャ(Lean Architecture)とも深く関係する 共通性/可変性分析 でした。 レポートは @smori1983 が担当させていただきます。 当日の様子は Coplien さんの許可を得て YouTube の DCI Tokyo 公式アカウントに

    PHPカンファレンス2012で「実践Dependency Injection」の講演を行いました
  • JMSDiExtraBundle - JMSDiExtraBundle Documentation - Version: master

    Versions master 1.0 1.1 Table Of Contents Introduction Documentation License Support You can obtain free community support for example through stackoverflow, or also through the Symfony2 mailing list. If you think you found a bug, please create a ticket in the bug tracker. Continuous Inspections If you take code quality seriously, try out the new continuous inspection service. scrutinizer-ci.com I

    shimooka
    shimooka 2012/07/13
    アノテーションが良い感じ / だがSymfony2.1からっぽい。。。
  • 4me blog.stripejam » [Symfony2] DIコンテナ用設定ファイル

    この記事は、Symfonyアドベントカレンダー2010に参加しています。 Symfony Advent 2010 : ATND Symfonyアドベントカレンダー 2010 | 日Symfonyユーザー会 前記事: Doctrine on symfony1.4でマスタースレーブ @vectorxenon さん 今までブログを書いた事がなかったのですが、このイベントを機にブログを始めてみようと思います。 題のSymfony2ですが、最近ではPreview Release4が発表され、日でもSymfony2に関する情報が 徐々に増えつつあり、今後の展開がますます楽しみになってきました。 記事では、Symfony2の特徴の1つといえるDIコンテナを拡張する設定ファイルについて見ていこうと思います。 設定ファイルを利用すると、コードをほとんど書く事なくDIコンテナに機能拡張を施す事がで

  • [Symfony2]Symfony2 Deep Tour 2 | うえちょこ@ぼろぐ

    前回は、フロントコントローラが起動して、Kernelが実行されたところまでを書きました。今回はKernelの初期化時にDIコンテナが生成される所までを書こうかと思います。実際のHttpリクエストなどを処理するHttpKernelが実行されるところ以降は次回となります(ここらへんはEventDispatcherフル稼働なのでまだ理解できていません)。 では深く潜っていきましょう! Kernelのブート [@/src/vendor/symfony/src/Symfony/Component/HttpKernel/Kernel.php] Kernelクラスのインスタンス$kernelは、そのKernelがブート済みかどうかのフラグ$this->bootedを持っています。基的にフロントコントローラから呼ばれた最初のKernel::handle()ではまだブートしていないはずなので、Kernel

    [Symfony2]Symfony2 Deep Tour 2 | うえちょこ@ぼろぐ
  • Dependency injection for Controllers