PHPでもデザインパターンを勉強したいんだ
効率よくオブジェクト指向でプログラミングするために培われた知見をまとめたデザインパターン。これらデザインパターンの書籍やWebは、大抵JavaやC++などの静的型付け言語向け。
PHPでデザインパターンを勉強することはできないのか?
今回は@MINOがPHPでのデザインパターンを勉強した時に参考にさせてもらった書籍やWebサイトを紹介したいと思います。数は多くないのですいません…。
おすすめ書籍
PHPによるデザインパターン入門
PHPでデザインパターンを説明する本って殆ど無いんですよね。Javaの本で概念を勉強することもできますが、やはりPHPのコードでどうなるかを勉強したいなと思うわけです。
おそらく和書でPHPでのデザインパターンを説明する唯一の本だと思います。残念ながら2009年で絶版になってしまいました。あんまりPHPでデザインパターンまでという人は多くないんでしょうかね?
でも内容は非常に素晴らしいと思います。
導入から丁寧にかかれており、apacheのインストール、UMLのクラス図・シーケンス図の説明もあります。
そしてこの本はGOFのデザインパターン23個をすべて網羅しています。全部です。すべてのパターンでちゃんとサンプルコードがあり、別け隔てなくきちんと説明されています。いいね!!
- TemplateMethod
- Singleton
- Adapter
- FactoryMethod
- Facade
- Iterator
- AbstractFactory
- Bridge
- Builder
- Chain of Responsibility
- Command
- Composite
- Decorator
- Flyweight
- Interpreter
- Mediator
- Memento
- Observer
- Prototype
- Proxy
- State
- Strategy
- Visitor
本書で紹介されているパターンの順番です。簡単な方から説明されているようです。
本自体は2006年刊行なのでほぼ10年前ですが、GOFのデザインパターンを発表した『オブジェクト指向における再利用のためのデザインパターン』自体が1995年刊行ですから、概念自体はもともと古いものです。
2006年当時はおそらくPHP5系がリリースされ始めた時期だと思います。現在では5系のサポートは5.6のみになっており、2016年にはPHP7がリリースされました。
現在なら言語機能でデザインパターンを補える部分もあるか、もしくは最新のPHPではこうデザインパターンを書くのが普通といったようなことも、もしかしたらあるかもしれませんが、本書の内容はそう色褪せるものではないと思います。
一応amazonのリンクを貼っておきますが、絶版のためか中古本でも定価より値段が高いようです。でもPHPでデザインパターンを勉強するならこの本を買って損はしないと思いますよ。
ちなみに秀和システムさんのサポートページのサンプルコードはまだ生きていました。あくまでも本を買った人のためのものだとは思うのですが、特に認証などがないので誰でもダウンロードできるようです。 http://www.shuwasystem.co.jp/books/7980/1516-4/1516-4.html
WEB情報
PHP The Right Way
有名なPHP The Right Wayのページです。5つほどデザインパターンが説明されています。
- FactoryMethod
- Singleton
- Strategy
- FrontController
- Model-View-Controller
ただサンプルコードがあるのは上の3つだけです。ちょっと物足りないかも。
ただこのPHP The Right Wayは他の情報もすごく勉強になるのでサイト全体を閲覧しても良いかもしれません。
LIG【PHPで学ぶデザインパターン入門】シリーズ
LIGさんの連載記事です。GOFのデザインパターンを全て網羅しているわけではありません。今のところ7つのデザインパターンが説明されています。
【PHPで学ぶデザインパターン入門】シリーズ | LIG LIBRARY | 株式会社LIG
特にGOFのデザインパターンと銘打っている訳ではないので23個全部という訳ではないのかもしれません。
紹介されているの以下のパターン。
- Strategy
- Singleton
- Decorator
- State
- FactoryMethod
- Iterator
- Observer
サンプルコードもあり、わかりやすい記事だと思います。
Do You PHP はてな
PHPによるデザインパターン入門の著者の方が公開している校正前原稿です。非常にありがたいです!!校正前なので誤字脱字、説明不足等があるかもしれないと断ってらっしゃいますが、普通に読むためなら何ら問題ありません。
Do You PHP はてな PHPによるデザインパターン入門 – 目次
本の内容すべてではなく、デザインパターンの説明部分が中心で公開されています。
それでも十分すぎます。
『PHPによるデザインパターン入門』が手に入らない、とりあえず中身を確認してみたい等なら、こちらが良いかもしれません。
GitHub
DesignPatternsPHP
GitHub上にPHPのデザインパターンの実装例プロジェクトがありました。残念ながら日本語ではなく英語なのでドキュメントを読むのはすこし大変(@MINOは)かもしれませんが、コードは読めるかと思うので重宝すると思います。
GitHub domnikl/DesignPatternsPHP
このプロジェクトではGOFのデザインパターンを中心にその他のデザインパターンの実装例もあわせて30超もあります。
- 生成に関するパターン(Creational)
- AbstractFactory
- Builder
- FactoryMethod
- Multiton (is considered an anti-pattern! :no_entry:)
- Pool
- Prototype
- SimpleFactory
- Singleton :notebook: (is considered an anti-pattern! :no_entry:)
-
StaticFactory
- 構造に関するパターン(Structural)
- Adapter
- Bridge
- Composite
- DataMapper
- Decorator
- DependencyInjection
- Facade
- FluentInterface
- Prox
-
Registry
- 振る舞いに関するパターン(Behavioral)
- ChainOfResponsibilities
- Command
- Iterator
- Mediator
- Memento
- NullObject
- Observer
- Specification
- State
- Strategy
- TemplateMethod
-
Visitor
- その他(More)
- Delegation
- ServiceLocator
- Repository
-
EAV
スターが結構あつまっているプロジェクトでPHPerから熱い視線を向けられているようです。海外でもPHPでのデザインパターンの情報って少ないんですかね?
更新もされているので、最近のPHPでのデザインパターンという意味ではこのリポジトリで勉強するのが良いかもしれません。
英語が気にならないなら早速Pullしてみてください。相当つかえる教材です。
まとめ
今回紹介した書籍・webページ・GitHubリポジトリ