За последние 24 часа нас посетили 22267 программистов и 1023 робота. Сейчас ищут 674 программиста ...

Как правильно подключить class

Тема в разделе "PHP для новичков", создана пользователем biryukovm, 22 янв 2018.

Метки:
  1. biryukovm

    biryukovm Активный пользователь

    С нами с:
    15 окт 2015
    Сообщения:
    54
    Симпатии:
    1
    Здорова всем я уже голову сломал. короче мне надо подрубить 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:
    1. include("plugins/Sendpulse/sendpluse.php");

    В файле sendpluse.php прописываю подключение
    PHP:
    1. require("RestApi/Storage/TokenStorageInterface.php");
    2. require("RestApi/Storage/FileStorage.php");
    3. require("RestApi/ApiInterface.php");
    4. require("RestApi/ApiClient.php");
    5.  
    6. // API credentials from https://login.sendpulse.com/settings/#api
    7. define('API_USER_ID', '***********');
    8. define('API_SECRET', '***********');
    9. define('PATH_TO_ATTACH_FILE', __FILE__);
    10.  
    11. $SPApiClient = new ApiClient(API_USER_ID, API_SECRET, new FileStorage());
    12. var_dump(class_exists('ApiClient', false)); // false, если класс не найден
    13. var_dump($SPApiClient);
    Подключение файлов работает все отлично только вот как обращаюсь к классу файл дает ошибку и на странице выходит ошибка 500 а в журнале "PHP Fatal error: Class 'ApiClient' not found in ****** /plugins/Sendpulse/sendpluse.php on line 21"

    Ошибка вот в этой строке подключения
    PHP:
    1. $SPApiClient = new ApiClient(API_USER_ID, API_SECRET, new FileStorage());

    А в файле класса ApiClient.php
    PHP:
    1. namespace Sendpulse\RestApi;
    2.  
    3. use Exception;
    4. use Sendpulse\RestApi\Storage\FileStorage;
    5. use Sendpulse\RestApi\Storage\TokenStorageInterface;
    6. use stdClass;
    7.  
    8. class ApiClient implements ApiInterface
    9. {
    Не совсем понимаю правильна директория написана 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
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.551
    Симпатии:
    1.754
    namespace - это не директории. Не путайте PSR-ы с языком. Язык позволяет даже в одном файле несколько пространств имён объявить, так что директории здесь могут быть и не причём. Язык срочно доучивать. А документация по этой хрени есть? которую вы подключить себе пытаетесь?
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.743
    Симпатии:
    1.319
    Адрес:
    Лень
  4. biryukovm

    biryukovm Активный пользователь

    С нами с:
    15 окт 2015
    Сообщения:
    54
    Симпатии:
    1
    Само интерестно у них я так и не нашел детальной инструкции подключения хотя сколько уже подключал везде есть эта инструкция.
    У них вот https://sendpulse.com/ru/integrations/api

    У них в коде есть
    require 'vendor/autoload.php';
    Они сказали что это компорез и надо делать через него подключение. я так и не понял что это за композер может он есть в joomla или в другом CMS но я композерами не пользовался.
    --- Добавлено ---
    А вообще в файлах класса обязательно use и namespace ведь я делаю подключение в начале через require и уже охватываю все основное
    --- Добавлено ---
    Я вас не совсем понял причем здесь SQL
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.743
    Симпатии:
    1.319
    Адрес:
    Лень
    где sql по адресной ссылке перейдя?
    --- Добавлено ---
    вот еще тест над пространствами https://github.com/MouseZver/My-garbage-code/tree/master/php.ru/67269
     
  6. voral

    voral Активный пользователь

    С нами с:
    30 ноя 2017
    Сообщения:
    646
    Симпатии:
    104
    [OFFTOP]
    Я интегрировал SendPulse с битрикс. Там есть у них много "чудес" в АПИ. Точнее странные подходы. В итоге часть функционала сервиса приходится использовать через тернии.
    [/OFFTOP]
    --- Добавлено ---
    В своем модуле я только один файл взял из их репы. А так пробовал подключать точно как написано у них - вроде все работало.
    --- Добавлено ---
    Может будет полезно https://va-soft.ru/blog/bitrix-sendpulse-integration/ небоьшая заметка. (Особенно пункт "Ограничения REST АПИ SendPulse")
     
  7. biryukovm

    biryukovm Активный пользователь

    С нами с:
    15 окт 2015
    Сообщения:
    54
    Симпатии:
    1
    Можно тему закрывать я решил кому интересно вот суть проблемы в чем. Те кто любить писать на чистом php без PSR правил.
    Объясню api у них правильно но ребята не знают, что не все программисты php работают с PSR правилами.

    Короче Sendpulse API на чистом php без PSR правил.
    Главным для вас будет https://github.com/sendpulse/sendpulse-rest-api-php/tree/master/src
    Больше и не нужно, в каждом файле комментируете namespace и use

    И пропишите подключение фалов у вас свой путь к файлам
    PHP:
    1. require("../Storage/TokenStorageInterface.php");
    2. require("../Storage/FileStorage.php");
    3. require("../ApiInterface.php");
    4. require("../ApiClient.php");
    5.  
    6. // API credentials from https://login.sendpulse.com/settings/#api
    7. define('API_USER_ID', '*************');
    8. define('API_SECRET', '*************');
    9. define('PATH_TO_ATTACH_FILE', __FILE__);
    10.  
    11. $SPApiClient = new ApiClient(API_USER_ID, API_SECRET, new FileStorage());
    12. var_dump(class_exists('ApiClient', false)); // false, если класс не найден проверка подключения
    13. var_dump($SPApiClient);
    И все работает API срабатывает на ура
     
  8. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    keren нравится это.
  9. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
  10. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.743
    Симпатии:
    1.319
    Адрес:
    Лень
    хорошо, рано или поздно два люцифера столкнутся между друг с другом, а Касикандриэра(программист) будет сосать лапу
     
    voral нравится это.