0
PHP Codingin BEAR.Sunday  PHP勉強会 28/Feb/2013
テキスト
OOPの原則
依存関係逆転の原則• 具体的な実装に依存してはいけない• 抽象に依存する• NG スタティックコール  ×                                                      実クラスに依存• NG サービ...
生成使用分離の原則• オブジェクトは生成するか利用するかのどち らかで、どちらも同時にしてはいけない• オブジェクトの使用 は抽象 を取り扱う         使用 抽象• オブジェクトの生成 は具象 を取り扱う         生成 具象
デメテルの原則• 最小知識の原則• 必要のないオブジェクトは受け取らない
この4つのみ•オブジェクト自身 ($this->m())•自分自身が属性として保持しているインスタン ス ($this->a ->m())•自分自身へパラメータとして渡されたオブジェ クト ($param->m())•自分自身のメソッド内で生成...
デメテルの原則• NG $c = $obj->getB()->getC();• OK $c = $obj->getB()->publicC
Tell, Don t Ask.
Tell       Logic         Logic     Object                         Val                   Val       Object Oriented
Ask   Logic         Val     Object                   Val   LogicProcedural
Tell, Don t ask.• OK $dog->walk();• OK $model->render();• NG $renderer->set($model- >name)->render();
振る舞いモードに応じて振る舞いを変えるのでなく           NG
構成モードに応じて振るを変えます            OK修正に閉じ、変更に開いています(OCP)=開放/閉鎖原則
アプリケーションは依存を持ちます
依存も依存を持ちます
依存の依存..と取得を続け
巨大な”アプリケーションオブジェクトグラフ”を得ます
アプリケーションはシリアライズ可能で
リクエストを超え再利用されます。アノテーションと束縛を使った膨大なオブジェクトコンストラクションコストは原理的にほとんどなくなります。
コンストラクタはリクエストを超えて1度しかコールされず、そのときプロパティに代入した値はキャッシュされます。構成に応じたコードはコンストラクタ、そうでないものはメソッドと区別できます。
これはモデルにインジェクトされたレンダラーですObject>Renderer>TemplateEngine>Smartyと構成されています
Smartyがクラス設計的にあまりよくない(多くのプロパティを持ち過ぎている)事がオブジェクトグラフから分かります。
Upcoming SlideShare
Loading in...5
×

PHP Coding in BEAR.Sunday

718

Published on

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
718
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Transcript of "PHP Coding in BEAR.Sunday"

  1. 1. PHP Codingin BEAR.Sunday PHP勉強会 28/Feb/2013
  2. 2. テキスト
  3. 3. OOPの原則
  4. 4. 依存関係逆転の原則• 具体的な実装に依存してはいけない• 抽象に依存する• NG スタティックコール × 実クラスに依存• NG サービスロケーター キーで取得できる実装に依存 http://www.flickr.com/photos/rgidra/4256316243/
  5. 5. 生成使用分離の原則• オブジェクトは生成するか利用するかのどち らかで、どちらも同時にしてはいけない• オブジェクトの使用 は抽象 を取り扱う 使用 抽象• オブジェクトの生成 は具象 を取り扱う 生成 具象
  6. 6. デメテルの原則• 最小知識の原則• 必要のないオブジェクトは受け取らない
  7. 7. この4つのみ•オブジェクト自身 ($this->m())•自分自身が属性として保持しているインスタン ス ($this->a ->m())•自分自身へパラメータとして渡されたオブジェ クト ($param->m())•自分自身のメソッド内で生成したオブジェクト ((new A)->m())
  8. 8. デメテルの原則• NG $c = $obj->getB()->getC();• OK $c = $obj->getB()->publicC
  9. 9. Tell, Don t Ask.
  10. 10. Tell Logic Logic Object Val Val Object Oriented
  11. 11. Ask Logic Val Object Val LogicProcedural
  12. 12. Tell, Don t ask.• OK $dog->walk();• OK $model->render();• NG $renderer->set($model- >name)->render();
  13. 13. 振る舞いモードに応じて振る舞いを変えるのでなく NG
  14. 14. 構成モードに応じて振るを変えます OK修正に閉じ、変更に開いています(OCP)=開放/閉鎖原則
  15. 15. アプリケーションは依存を持ちます
  16. 16. 依存も依存を持ちます
  17. 17. 依存の依存..と取得を続け
  18. 18. 巨大な”アプリケーションオブジェクトグラフ”を得ます
  19. 19. アプリケーションはシリアライズ可能で
  20. 20. リクエストを超え再利用されます。アノテーションと束縛を使った膨大なオブジェクトコンストラクションコストは原理的にほとんどなくなります。
  21. 21. コンストラクタはリクエストを超えて1度しかコールされず、そのときプロパティに代入した値はキャッシュされます。構成に応じたコードはコンストラクタ、そうでないものはメソッドと区別できます。
  22. 22. これはモデルにインジェクトされたレンダラーですObject>Renderer>TemplateEngine>Smartyと構成されています
  23. 23. Smartyがクラス設計的にあまりよくない(多くのプロパティを持ち過ぎている)事がオブジェクトグラフから分かります。
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×