在CakePhp中导入供应商类时出错

时间:2012-05-26 21:27:33

标签: php cakephp

我有:

App/Vendor/Facebook
App/Vendor/Facebook/facebook.php

App / Controller / AppController.php 中我使用了:

App::uses('facebook', 'Vendor/Facebook');

然后AppController类是:

class AppController extends Controller {

    public $fb;

    public function beforeFilter() {
        $fb = new Facebook();   
    }   

}

这是我得到的错误:

  

致命错误:未找到“Facebook”类   /home/users/example.com/www/app/Controller/AppController.php在线   42

这怎么可能?有什么问题?

谢谢!

2 个答案:

答案 0 :(得分:6)

您必须使用App::import()导入文件,因为它不遵循CakePHP约定。以下代码片段可以解决这个问题:

App::import('Vendor', 'Facebook', array('file' => 'Facebook' . DS . 'facebook.php'));

另见http://book.cakephp.org/2.0/en/core-utility-libraries/app.html#loading-vendor-files

答案 1 :(得分:0)

这个问题发生在我身上..

我做了一些测试,确实知道发生了什么。

首先,我将facebook.php重命名为Facebook.php。这不是必需的。这取决于你的cakephp版本。

所以,在Cake / Core / App.php中,我评论了第738行(return(bool)include_once $ mapped;)并更改为require_once $ mapped。

后来,我收到了LIB CURL的错误,这是运行php facebook lib所必需的。所以,我安装了它:

sudo aptitude install php5-curl
sudo /etc/init.d/apache2 restart

这一次,错误更改为:

Fatal error: Cannot redeclare class Facebook in (...)

最后,我将Cake / Core / App.php恢复为原始版本,错误已解决。

祝你好运