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

CakePHP:无法从自定义包加载类,php,cakephp,cakephp-2.0,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 但每次都失败了。我们做错了什么?首先,必须注册包路径才能与一起使用,Lib/Fpdf不是这样的路径,默认情况下只注册核心包 您可以扩展已经存在的包的路径,在您的情况下是Li

我们想在一个控制器中使用FPDF库

我们创建了以下文件:

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

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

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

您可以扩展已经存在的包的路径,在您的情况下是
Lib

App::build(array('Lib' => array(APP . 'Lib' . DS . 'Fpdf' . DS)));
然后使用App::uses('FpdfWrapper','Lib')

或者最好添加一个新包:

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

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


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

我的情况有点不同

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

  • /Lib/ExampleAPI/ExampleAPI.php
    存在且可读
  • /Lib/ExampleAPI/ExampleAPI.php
    包含
    类ExampleAPI{}
    声明
  • 在引用代码中调用
    newexampleApi

您是否尝试过将文件名
fdpf_wrapper.php
更改为
FpdfWrapper.php
并尝试使用App::uses('FpdfWrapper','Lib')?另外,我相信您已经读过了,但是这不是cakephp找不到类的错误,而是文件(语法、逻辑等)的错误吗?如果这不起作用,你能更具体地告诉我每次失败的原因和方式吗<代码>找不到类错误或其他错误?@Nunser这是一个找不到类的错误。我们目前正在让它与
App::import('Vendor',bla-bla)一起使用。不确定供应商或库是否是最合适的位置。这取决于它是否是第三方库()。它是?把文件名改成我所指出的名字是行不通的?
App::build(array('Lib/Fpdf' => array(APP . 'Lib' . DS . 'Fpdf' . DS)), App::REGISTER);