CakePHP:无法从自定义包加载类

时间:2013-10-01 15:38:37

标签: php cakephp cakephp-2.0

我们希望在我们的一个控制器中使用FPDF库。

我们创建了以下文件:

app
-Lib
--Fpdf
---files.php
---fpdf.php
---fdpf_wrapper.php <-- this is our class (FdpfWrapper) which extends the base FPDF class

在控制器类之前,我们尝试这个:

App::uses('FpdfWrapper', 'Lib/Fpdf');

但每次都失败了。我们做错了什么?

2 个答案:

答案 0 :(得分:4)

首先,必须注册包路径才能与App::uses一起使用,Lib/Fpdf不是这样的,默认情况下只注册核心包。

您可以扩展现有软件包的路径,在您的情况下为Lib

App::build(array('Lib' => array(APP . 'Lib' . DS . 'Fpdf' . DS)));

然后使用App::uses('FpdfWrapper', 'Lib');

http://book.cakephp.org/2.0/en/core-utility-libraries/app.html#adding-paths-for-app-to-find-packages-in

或更好地添加新包:

App::build(array('Lib/Fpdf' => array(APP . 'Lib' . DS . 'Fpdf' . DS)), App::REGISTER);

http://book.cakephp.org/2.0/en/core-utility-libraries/app.html#add-new-packages-to-an-application

然后您可以使用App::uses('FpdfWrapper', 'Lib/Fpdf');

最后但并非最不重要的,当然文件名必须遵循@Nunser已经提到的CakePHP约定,即fdpf_wrapper.php必须重命名为FdpfWrapper.php

答案 1 :(得分:1)

我的情况有点不同。

要使App::uses('ExampleAPI', 'ExampleAPI')工作,请确保:

  • /Lib/ExampleAPI/ExampleAPI.php存在且可读
  • /Lib/ExampleAPI/ExampleAPI.php包含class ExampleAPI{}声明
  • 您在引荐代码中致电new ExampleAPI