在 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 on line 42

这怎么可能?怎么了?

谢谢!

你必须

使用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

这个问题引起了

我的注意。

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

首先,我将facebook.php重命名为Facebook.php。这其实没有必要。这取决于您的蛋糕版本。

因此,在Cake/Core/App.php中,我注释了第738行(返回(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恢复到原始状态,错误得到了解决。

此致敬意

最新更新