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はこいう形で部分利用できるのはすごいなと思います