Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PHP Coding in BEAR.Sunday

1,282 views

Published on

  • Be the first to comment

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がクラス設計的にあまりよくない(多くのプロパティを持ち過ぎている)事がオブジェクトグラフから分かります。

×