Подтвердить что ты не робот

Как импортировать файлы поставщиков в CakePHP 3x

Я работаю с недавно выпущенной версией CakePHP 3 (бета 2). Мне нужно интегрировать Facebook Login с помощью PHP SDK, и я не понимаю, как импортировать файлы поставщиков в этой версии.
В CakePHP 2x я использовал

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

Поэтому мне нужно воспроизвести то же самое в CakePHP 3x (я не использую композитор).
Любая ссылка для этого?

4b9b3361

Ответ 1

Ну, вам придется загрузить его самостоятельно, если композитор не вариант. Вы всегда можете использовать самый базовый метод 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();

Ответ 2

В cakephp3, чтобы добавить новую библиотеку поставщика, вы можете выполнить следующие шаги:

  • Поместите библиотеку в папку your_project/vendor/
  • включить файл библиотеки с помощью require_once(ROOT . DS . 'vendor' . DS . "my_library_folder" . DS . "my_library_base_class.php") , это включает в себя код кода библиотеки в нашем коде.
  • Включить имя класса в верхней части контроллера, например:

namespace App\Controller; use MyLibraryBaseClass; ,

он импортирует файл кода библиотеки в нашем пространстве имен, которое будет использоваться.

  1. создать объект загруженного класса как

    $my_obj= new MyLibraryBaseClass();

Ответ 3

ответ, предоставленный Айманом Б., не похож на выполнение задания, как ожидалось в вопросе, после того, как я попробовал это самостоятельно, по следующим причинам:

  • папка поставщика в cakephp3 не находится в папке src в пространстве имен APP, она перемещается в папку ROOT, поскольку вы не сможете загрузить свой класс Facebook, как ожидалось, попробуйте сами, и вы увидите результат...
  • Загружая файл поставщика, он автоматически не загружает имя класса, если ваш поставщик lib не следует правилу follwing как правило PSR-0: \ VENDOR\PACKAGE\TEST.CLASS.PHP и внутри test.class.php нет определения класса, которое должно быть вызвано или импортировано в ваш script с определенным ключевым словом пространства имен в начале этого script следующим образом: пространство имен то код выше не будет работать.

Чтобы исправить ответ, вы должны сделать несколько шагов следующим образом:

1 - Определите в bootstrap.php новую константу cakephp, например: define ('VENDOR', ROOT. DS. 'vendor'.DS); поскольку константа VENDOR удаляется в cakephp 3.x, вы можете определить ее самостоятельно 2 - После этого вы должны указать имя поставщика, имя пакета и имя класса в постоянной версии поставщика, например: define ('_',; и тогда вы можете сделать $facebookApi = new \\();

это будет работать для вас, как и ожидалось в вопросе

Если у вас есть проблемы, попробуйте вернуться ко мне, я покажу вам пример использования, как описано здесь...

Ответ 4

У меня также была та же проблема с CakePHP 3.0.

Сделайте установку в соответствии с инструкциями с помощью Composer.

Затем вам необходимо правильно загрузить плагин в контроллере с помощью инструкции use. Вот так:

использовать Ghunti\HighchartsPHP\Highchart;

  • Если вы используете плагин на большинстве страниц, вместо загрузки в каждый контроллер вы можете добавить одну и ту же строку в файл bootstrap.php прямо под другими операциями использования.

Это решит проблему использования плагина.

Ответ 5

Как и в случае с CakePhp 3.x, рекомендуемым стандартом кода является использование require_once без скобок "()".

require_once (ROOT.'Folder'.DIRECTORY_SEPARATOR.'requiredfile.ph ');

становится

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

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

Надеюсь, что это поможет кому-то в будущем.