3

コントローラファイルからCakePHPのサードパーティライブラリ関数を呼び出そうとしています。

私はこれを私のコントローラーファイルに持っています:

public function index() {
    App::import('vendor', 'simple-html-dom.php');
    App::import('vendor', 'utils.php');

    set_time_limit(0);

    $html = file_get_html("google.com");
    ...
}

私もとファイルのapp/vendor両方にあります。simple-html-dom.phputils.php

file_get_htmlのパブリック関数ですsimple-html-dom.php(どのクラスにも属していません)。私はこのエラーで終わります:

Error: Call to undefined function file_get_html()

私はこれを解決する方法を探していましたが、答えが見つかりませんでした。

4

2 に答える 2

2

私は私の仕事を得ました。これを試して、

App::import('Vendor', 'simple_html_dom', array('file'=>'simple_html_dom.php'));

$html = file_get_html("google.com");
于 2013-09-20T17:14:41.197 に答える
1

試す

public function index() {
    App::import('vendor', 'simple-html-dom.php');
    App::import('vendor', 'utils.php');

    set_time_limit(0);
    $SimpleHtmlDom = new SimpleHtmlDom(); // create object for html dom
    $html = $SimpleHtmlDom->file_get_html("google.com");
}

ファイルにクラスが含まれていることを確認してから、ロード後にそのsimple-html-dom.phpクラスを作成する必要があります。create objectclassvendor

なぜなら、クラスにアクセスするmethodsには、そのクラスpropertyを作成する必要があるからですobject

methodを使用して同じクラスでアクセスすることもできますSelf::file_get_html();が、これは内部用class declarationです。

さらにヘルプ

App::import('Vendor', 'example', array('file' => 'Example.php'));
$example = new Example();

上記のコードには、ベンダーファイルが含まれています。

説明

Example.php上記のコードは、ディレクトリ内にあるファイルをロードしますvendors/example

あなたの場合、vendorファイルが適切にロードされていないため、class not foundエラーが発生します。

于 2013-02-18T07:55:14.150 に答える