goutte - taka512/memo GitHub Wiki
Goutte
phpのブラウザエミュレータ
https://github.com/fabpot/Goutte
今日は「goutte」を少し見てみた。
https://github.com/fabpot/Goutte
「goutte」はPHPのブラウザエミュでSymfony2の総帥たるFabienさんが
作ったライブラリです。(要php5.3以上)
ベースとなってるSymfony2のブラウザエミュは下記3層構造になってます。
(1)https://github.com/symfony/FrameworkBundle/blob/master/Client.php
↓継承
(2)https://github.com/symfony/HttpKernel/blob/master/Client.php
↓継承
(3)https://github.com/symfony/BrowserKit/blob/master/Client.php
(1)でSymfony2フレームワーク(DIコンテナ)関係の機能の実装
(2)でリクエスト(HttpKernel)に関する機能の実装
(3)ブラウザエミュの基本機能の実装
goutteのソースを見てみるとBrowserKit Componentを継承して実装してる
また、リクエスト送信部分はGuzzle(http://guzzlephp.org/)に委譲してるので
goutte本体はシンプルになってます。
(a)https://github.com/fabpot/Goutte/blob/master/Goutte/Client.php
↓継承
(b)https://github.com/symfony/BrowserKit/blob/master/Client.php
Symfony Componentsはこいう形で部分利用できるのはすごいなと思います