cakephpでgoutteを使いたい(requireのパス)

投稿者: Anonymous

当方cakephp初心者です。require_onceに関する

cakephp2.6.0からwebスクレイプを行いたく、goutteを利用しようとしています。

参照① -> https://github.com/FriendsOfPHP/Goutte

そこで、

-> http://www.buildinsider.net/web/bookphplib100/088

を参考にしつつ、

①path/to/cake/app/Vendor以下に Goutte.pharをおく
②読みたいコントローラーにてrequire_onceでGoutte.pharをひっぱってくる

とすればできると思っているのですが、

Error: require() [<a href='http://php.net/function.require'>function.require</a>]: 
Failed opening required '/Library/WebServer/Documents/yushen/app/Vendor/goutte.phar' 
(include_path='/Library/WebServer/Documents/yushen/lib:.:') 
File: /Library/WebServer/Documents/yushen/app/Controller/EditController.php 
Line: 2

とエラーが出てきてしまいます。以下実際に書いたコードになります。

<?php 
require "/Library/WebServer/Documents/yushen/app/Vendor/goutte.phar";
use GoutteClient;

class EditController extends AppController{

    public function add(){

        $client = new Client();
    }

}

①require_onceでズバリどこを指定すればいいのか

②app::importを使って呼ぶ方法はないのか

を質問したいと思っています。

初歩的な質問で申し訳ございません。。。よろしくお願いします!

解決

Composerを使ってgoutteをインストールする形にするのが良いのではないでしょうか。
Requireする必要もなくパスを解決してAutoloadが行われます。

App:importはCakePHP1などで好まれた古い命令です。
Vendor以下のファイルをどうしても直接読むならば App::usesを使います。
GoutteはPSRに準拠した構造なのでrequireやApp::importなどに頼る必要は無いです。

http://book.cakephp.org/2.0/ja/core-utility-libraries/app.html#vendor

とはいえComposerを使えば何もする必要がありませんのでそちらがオススメです。

開発中のアプリのトップディレクトリにあるcomposer.jsonにgoutteを書き足すか、goutteのページにあるようにcomposer requireコマンドで自動的に追加できます。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *