2013-02-18 47 views
3

我想從控制器文件調用CakePHP中的第三方庫函數。如何使用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/vendorsimple-html-dom.phputils.php文件。

file_get_htmlsimple-html-dom.php(它不屬於任何類別)的公共職能。我結束了這個錯誤:

Error: Call to undefined function file_get_html() 

我一直在努力尋找如何解決這一問題,但我還沒有找到答案。

+0

嘗試將第三方庫放入webroot中。還可以使用螢火蟲查看包含的文件。 – 2013-02-18 04:07:10

+2

webroot?他們屬於「供應商」 – mark 2013-02-18 09:46:34

回答

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文件包含類,那麼你需要的是classcreate object加載vendor後。

因爲要訪問methodsproperty的類,您需要創建該類的object

您還可以使用Self::file_get_html();訪問同級method,但這適用於class declaration以內。

更多幫助

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

在上面的代碼我包括供應商檔案。

解釋

上面的代碼將加載Example.php文件,該文件是內部vendors/example目錄。

在你的情況你vendor文件加載不正確,這就是爲什麼你得到class not found錯誤。

+0

謝謝。但是file_get_html函數本身不在任何類中。 – user1296259 2013-02-18 12:55:17

+0

我只是簡單地將這個函數和另外兩個不在類中的函數包裝在類中,我稱之爲SimpleHtmlDomHelper。然後我嘗試使用:$ SimpleHtmlDom = new SimpleHtmlDomHelper(); $ html = $ SimpleHtmlDom-> file_get_html(「google.com」);但是我沒有找到「Class'SimpleHtmlDomHelper'」。就好像simple_html_dom.php沒有被包含在內。 – user1296259 2013-02-18 12:59:50

+0

@ user1296259我已經更新了答案,請看看我確定會解決它。 – 2013-02-19 03:32:36

2

我得到了我的工作。試試這個,

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

$html = file_get_html("google.com"); 
+0

你能詳細說明爲什麼解決了這個問題嗎?我沒有[聲稱]知道PHP,所以我不知道爲什麼這將是一個理想的解決方案,只是看着它。 – Makoto 2015-09-13 00:41:28

+0

TBH我也不知道。我只是嘗試和Dipesh答案錯誤,並得到它的作品。這是我在Cakephp做項目的唯一時間。 – sulaiman 2015-11-03 02:33:59