如何在CakePHP 3x中导入供应商文件

时间:2014-10-25 13:31:22

标签: cakephp vendor cakephp-3.0

我正在使用最近推出的 CakePHP 3(beta 2)版本。我需要使用PHP SDK集成Facebook登录,而且我不清楚在此版本中导入供应商文件。
在CakePHP 2x中,我使用过

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

所以我需要在CakePHP 3x中重现相同的内容(我不使用作曲家)。
对此有何参考?

5 个答案:

答案 0 :(得分:20)

如果不能选择composer,你必须自己加载它。您始终可以使用非常基本的require方法并自己创建供应商类的新实例。参考:http://book.cakephp.org/3.0/en/core-libraries/app.html#loading-vendor-files

使用:

 //The following line should do the same like App::import() in the older version of cakePHP
 require_once(ROOT . 'vendor' . DS  . 'Facebook' . DS . 'src' . DS . 'facebook.php');

 $facebookApi = new facebook();

答案 1 :(得分:19)

在cakephp3中,要添加新的供应商库,您可以按照以下步骤操作:

  1. 将库文件夹放在your_project/vendor/
  2. 使用require_once(ROOT . DS . 'vendor' . DS . "my_library_folder" . DS . "my_library_base_class.php")包含库文件 ,这包括我们代码中的库代码文件。
  3. 在控制台顶部包含类名称,如:
  4. namespace App\Controller; use MyLibraryBaseClass;

    这将导入要使用的命名空间中的库代码文件。

    1. 将加载类的对象创建为

      $my_obj= new MyLibraryBaseClass();

答案 2 :(得分:2)

Ayman B.提供的答案在我自己尝试之后看起来并不像预期的那样完成工作,原因如下:

  • cakephp3中的vendor文件夹不在APP命名空间下的src文件夹中,它被移动到ROOT文件夹,因为你将无法按预期加载你的Facebook类,自己尝试一下,你会看到结果......
  • 如果您的供应商lib不遵循以下规则作为PSR-0规则,那么通过加载供应商文件,这不会自动加载类名本身: \ VENDOR \ PACKAGE \ TEST.CLASS.PHP和test.class.php内部没有必须在脚本中调用或导入的类定义,在此脚本的开头使用已定义的namespace关键字,如下所示: 然后上面的代码将无法正常工作

要纠正答案,您必须执行以下几个步骤:

1 - 在bootstrap.php中定义一个新的cakephp常量,如下所示: define('VENDOR',ROOT.DS。'vendor'.DS);由于在cakephp 3.x中删除了VENDOR constante,您可以自己定义它 2 - 之后,您必须在供应商constante中指定供应商名称,包名称和类名称,如: define('_',;然后你可以做$ facebookApi = new \\();

这将在问题

中按预期效果

如果您遇到问题,请尝试回复我,我将向您展示如此处所述的使用示例......

答案 3 :(得分:1)

我也遇到了与CakePHP 3.0相同的问题。

按照使用Composer的说明进行安装。

然后您必须使用use语句在控制器中正确加载插件。像这样:

使用Ghunti \ HighchartsPHP \ Highchart;

  • 如果您在大多数页面中使用插件,而不是在每个Controller中加载,您可以在 bootstrap.php 文件中添加相同的行,就在其他use语句的正下方。

这将解决使用插件的问题。

答案 4 :(得分:0)

从CakePhp 3.x开始,推荐的代码标准是使用require_once而不使用括号"()"。

require_once(ROOT'夹' .DIRECTORY_SEPARATOR' requiredfile.ph&#39);

变为

require_once ROOT。' Folder' .DIRECTORY_SEPARATOR。' requiredfile.ph';

https://book.cakephp.org/3.0/en/contributing/cakephp-coding-conventions.html

希望将来帮助某人。