Здорова всем я уже голову сломал. короче мне надо подрубить API sendpulse Прикол следующий ребята предложили такую тему ну я в шоке "Если Вам нужна услуга полной интеграции с нашей стороны то я могу перевести Вас на отдел продаж, где Вы сможете обсудить эту услугу, цена которой 800$" Хотя я просил помочь только как правильно подрубить их API к моей админке самописной, уточнил что у меня не движок. Короче суть такая я подключаю API через 1 файл обработчик. С классами я работал но не сталкивался с implements, use , namespace Вот мой адрес на сервере до каталога файлов api /var/www/www-root/data/www/*****/admin/plugins/Sendpulse В главном файле админики я делаю подключение /var/www/www-root/data/www/*****/admin/index.php (главный файле админики) PHP: include("plugins/Sendpulse/sendpluse.php"); В файле sendpluse.php прописываю подключение PHP: require("RestApi/Storage/TokenStorageInterface.php"); require("RestApi/Storage/FileStorage.php"); require("RestApi/ApiInterface.php"); require("RestApi/ApiClient.php"); // API credentials from https://login.sendpulse.com/settings/#api define('API_USER_ID', '***********'); define('API_SECRET', '***********'); define('PATH_TO_ATTACH_FILE', __FILE__); $SPApiClient = new ApiClient(API_USER_ID, API_SECRET, new FileStorage()); var_dump(class_exists('ApiClient', false)); // false, если класс не найден var_dump($SPApiClient); Подключение файлов работает все отлично только вот как обращаюсь к классу файл дает ошибку и на странице выходит ошибка 500 а в журнале "PHP Fatal error: Class 'ApiClient' not found in ****** /plugins/Sendpulse/sendpluse.php on line 21" Ошибка вот в этой строке подключения PHP: $SPApiClient = new ApiClient(API_USER_ID, API_SECRET, new FileStorage()); А в файле класса ApiClient.php PHP: namespace Sendpulse\RestApi; use Exception; use Sendpulse\RestApi\Storage\FileStorage; use Sendpulse\RestApi\Storage\TokenStorageInterface; use stdClass; class ApiClient implements ApiInterface { Не совсем понимаю правильна директория написана use и namespace или нет И вообще где глюк. Подскажите где может быть проблема и почему если писать в use типа "use sendpulse\restApi\storage\fileStorage;" то php выдает ошибку Или даже если в начале файла ApiClient.php сделать на вывод echo 111; то придератся к "namespace Sendpulse\RestApi;" Если что вот библиотека Api https://github.com/sendpulse/sendpulse-rest-api-php
namespace - это не директории. Не путайте PSR-ы с языком. Язык позволяет даже в одном файле несколько пространств имён объявить, так что директории здесь могут быть и не причём. Язык срочно доучивать. А документация по этой хрени есть? которую вы подключить себе пытаетесь?
https://php.net/manual/ru/function.spl-autoload-register.php https://github.com/MouseZver/Lerma/blob/master/autoload.php
Само интерестно у них я так и не нашел детальной инструкции подключения хотя сколько уже подключал везде есть эта инструкция. У них вот https://sendpulse.com/ru/integrations/api У них в коде есть require 'vendor/autoload.php'; Они сказали что это компорез и надо делать через него подключение. я так и не понял что это за композер может он есть в joomla или в другом CMS но я композерами не пользовался. --- Добавлено --- А вообще в файлах класса обязательно use и namespace ведь я делаю подключение в начале через require и уже охватываю все основное --- Добавлено --- Я вас не совсем понял причем здесь SQL
где sql по адресной ссылке перейдя? --- Добавлено --- вот еще тест над пространствами https://github.com/MouseZver/My-garbage-code/tree/master/php.ru/67269
[OFFTOP] Я интегрировал SendPulse с битрикс. Там есть у них много "чудес" в АПИ. Точнее странные подходы. В итоге часть функционала сервиса приходится использовать через тернии. [/OFFTOP] --- Добавлено --- В своем модуле я только один файл взял из их репы. А так пробовал подключать точно как написано у них - вроде все работало. --- Добавлено --- Может будет полезно https://va-soft.ru/blog/bitrix-sendpulse-integration/ небоьшая заметка. (Особенно пункт "Ограничения REST АПИ SendPulse")
Можно тему закрывать я решил кому интересно вот суть проблемы в чем. Те кто любить писать на чистом php без PSR правил. Объясню api у них правильно но ребята не знают, что не все программисты php работают с PSR правилами. Короче Sendpulse API на чистом php без PSR правил. Главным для вас будет https://github.com/sendpulse/sendpulse-rest-api-php/tree/master/src Больше и не нужно, в каждом файле комментируете namespace и use И пропишите подключение фалов у вас свой путь к файлам PHP: require("../Storage/TokenStorageInterface.php"); require("../Storage/FileStorage.php"); require("../ApiInterface.php"); require("../ApiClient.php"); // API credentials from https://login.sendpulse.com/settings/#api define('API_USER_ID', '*************'); define('API_SECRET', '*************'); define('PATH_TO_ATTACH_FILE', __FILE__); $SPApiClient = new ApiClient(API_USER_ID, API_SECRET, new FileStorage()); var_dump(class_exists('ApiClient', false)); // false, если класс не найден проверка подключения var_dump($SPApiClient); И все работает API срабатывает на ура
Ну а если кто вдруг озадачится вопросом "как делать правильно?", предлагаю начать с этих ссылок: http://www.php-fig.org/psr/psr-4/ https://getcomposer.org/doc/00-intro.md Ну и немного на русском: https://github.com/codedokode/pasta/blob/master/php/autoload.md https://toster.ru/q/281663 https://www.ibm.com/developerworks/ru/library/wa-php-renewed_3/index.html
хорошо, рано или поздно два люцифера столкнутся между друг с другом, а Касикандриэра(программист) будет сосать лапу