SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
BEAR.Sunday $app
BEAR.Sunday meetup #1 17/Feb/2013 (Sun)
ソフトウエアの原則
依存関係逆転の原則

• 具体的な実装に依存してはいけない
• 抽象に依存する
• NG スタティックコール
  ×                                                      実クラスに依存


• NG サービスロケーター
   キーで取得できる実装に依存




        http://www.flickr.com/photos/rgidra/4256316243/
生成使用分離の原則

• オブジェクトは生成するか利用するかのどち
 らかで、どちらも同時にしてはいけない

• オブジェクトの使用 は抽象 を取り扱う
         使用 抽象

• オブジェクトの生成 は具象 を取り扱う
         生成 具象
デメテルの原則

• 最小知識の原則
• 必要のないオブジェクトは受け取らない
• NG $c = $obj->getB()->getC();
• OK $c = $obj->getB()->publicC
Tell, Don t ask.

• OK $dog->walk();
• OK $model->render();
• NG $renderer->set($model-
 >name)->render();
Solution ?
DI + AOP
インターフェイスとクラスを束縛します
@Injectを付けたメソッドに注入されます
束縛の集合がモジュールです
モジュールはモジュールを利用できます
実行モードに応じて束縛は変わります




APIならJSON出力、Devなら詳細なログ...
振る舞い
モードに応じて振る舞いを変えるのでなく




           NG
構成
モードに応じて振るを変えます




            OK


修正に閉じ、変更に開いています(OCP)
AOP
Aspect Oriented Programming
注釈と横断的関心時を束縛
注釈を解釈
ここでは「クラスに@Dbと注釈がある」&
「”on”で始まっている」メソッドにはDBを
セットするDBインジェクターを束縛 してい
               束縛
ます。 DBインジェクターはメソッドによっ
てmaster/slaveを選択しDBオブジェクトを注
入します。 利用側、被利用側ともにDB取得
の関心が分離されています。
モードに応じた構成で全てが束縛され...
                  Dependency + Aspects
インジェクターでアプリケーションを取得します
アプリケーションは依存を持ちます
依存も依存を持ちます
依存の依存..と取得を続け
巨大な”アプリケーションオブジェクトグラフ”を得ます
アプリケーションはシリアライズ可能で
リクエストを超え再利用されます。


アノテーションと束縛を使った膨大なオブジェクトコ
ンストラクションコストは原理的にほとんどなくなり
ます。
コンストラクタはリクエストを超えて1度しかコールさ
れず、そのときプロパティに代入した値はキャッシュ
されます。


構成に応じたコードはコンストラクタ、そうでないも
のはメソッドと区別できます。
アプリケーションはスクリプトでも取得できます
他のシステムからの利用が容易です




より長期間の運用を可能にします
アプリケーションスクリプトでサービスを記述




        自由な構成が可能です
アプリケーションオブジェクトまとめ


• DI/AOPでOOP原則に従う
• アプリケーションは1つの変数、巨大な
 オブジェクトグラフ

• スクリプトから準備なしに取得できる
• アプリケーションスクリプトでサービス
 を記述

Mais conteúdo relacionado

Destaque

omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜Sotaro Omura
 
Fuel phpをcomposerに本気で対応させた時の話
Fuel phpをcomposerに本気で対応させた時の話Fuel phpをcomposerに本気で対応させた時の話
Fuel phpをcomposerに本気で対応させた時の話Keishi Hosoba
 
Codeigniter3フレームアップデート
Codeigniter3フレームアップデートCodeigniter3フレームアップデート
Codeigniter3フレームアップデートtomohiro kitaura
 
Code igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイントCode igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイントnoldor
 
CodeIgniterのライセンスについて
CodeIgniterのライセンスについてCodeIgniterのライセンスについて
CodeIgniterのライセンスについてTakako Miyagawa
 

Destaque (6)

FuelPHP で DynamoDB
FuelPHP で DynamoDBFuelPHP で DynamoDB
FuelPHP で DynamoDB
 
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜
 
Fuel phpをcomposerに本気で対応させた時の話
Fuel phpをcomposerに本気で対応させた時の話Fuel phpをcomposerに本気で対応させた時の話
Fuel phpをcomposerに本気で対応させた時の話
 
Codeigniter3フレームアップデート
Codeigniter3フレームアップデートCodeigniter3フレームアップデート
Codeigniter3フレームアップデート
 
Code igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイントCode igniterを初めて使うときにはまった4つのポイント
Code igniterを初めて使うときにはまった4つのポイント
 
CodeIgniterのライセンスについて
CodeIgniterのライセンスについてCodeIgniterのライセンスについて
CodeIgniterのライセンスについて
 

Mais de Akihito Koriyama

PHPカンファレンス関西2014 「全てを結ぶ力」
PHPカンファレンス関西2014 「全てを結ぶ力」PHPカンファレンス関西2014 「全てを結ぶ力」
PHPカンファレンス関西2014 「全てを結ぶ力」Akihito Koriyama
 
A resource oriented framework using the DI/AOP/REST triangle
A resource oriented framework using the DI/AOP/REST triangleA resource oriented framework using the DI/AOP/REST triangle
A resource oriented framework using the DI/AOP/REST triangleAkihito Koriyama
 
An object graph visualizer for PHP - print_o
An object graph visualizer for PHP - print_oAn object graph visualizer for PHP - print_o
An object graph visualizer for PHP - print_oAkihito Koriyama
 
The new era of PHP web development.
The new era of PHP web development.The new era of PHP web development.
The new era of PHP web development.Akihito Koriyama
 

Mais de Akihito Koriyama (13)

PHPカンファレンス関西2014 「全てを結ぶ力」
PHPカンファレンス関西2014 「全てを結ぶ力」PHPカンファレンス関西2014 「全てを結ぶ力」
PHPカンファレンス関西2014 「全てを結ぶ力」
 
A resource oriented framework using the DI/AOP/REST triangle
A resource oriented framework using the DI/AOP/REST triangleA resource oriented framework using the DI/AOP/REST triangle
A resource oriented framework using the DI/AOP/REST triangle
 
BEAR.Sunday@phpcon2012
BEAR.Sunday@phpcon2012BEAR.Sunday@phpcon2012
BEAR.Sunday@phpcon2012
 
An object graph visualizer for PHP - print_o
An object graph visualizer for PHP - print_oAn object graph visualizer for PHP - print_o
An object graph visualizer for PHP - print_o
 
BEAR.Sunday.meetup #0
BEAR.Sunday.meetup #0BEAR.Sunday.meetup #0
BEAR.Sunday.meetup #0
 
BEAR.Sunday Offline Talk
BEAR.Sunday Offline TalkBEAR.Sunday Offline Talk
BEAR.Sunday Offline Talk
 
BEAR.Sunday Note
BEAR.Sunday NoteBEAR.Sunday Note
BEAR.Sunday Note
 
PHP: Dis Is It
PHP: Dis Is ItPHP: Dis Is It
PHP: Dis Is It
 
The new era of PHP web development.
The new era of PHP web development.The new era of PHP web development.
The new era of PHP web development.
 
BEAR (Suday) design
BEAR (Suday) designBEAR (Suday) design
BEAR (Suday) design
 
BEAR DI
BEAR DIBEAR DI
BEAR DI
 
BEAR Architecture
BEAR ArchitectureBEAR Architecture
BEAR Architecture
 
BEAR v0.9 (Saturday)
BEAR v0.9 (Saturday)BEAR v0.9 (Saturday)
BEAR v0.9 (Saturday)
 

BEAR.Sunday $app