Yii 2: использование класса внутри require_once - PullRequest
0 голосов
/ 04 сентября 2018

Я использую стороннее расширение, например:

(это внутри моего контроллера)

require_once Yii::$app->basePath.'/vendor/campaignmonitor/createsend-php/csrest_subscribers.php';

$wrap = new CS_REST_Subscribers($list_id, $auth);

Однако возвращается ошибка, что класс CS_REST_subscribeers не найден.

Как правильно использовать этот класс, когда класс находится внутри файла. К сожалению, это расширение старше и не имеет пространства имен.

1 Ответ

0 голосов
/ 05 сентября 2018

Вам необходимо установить его с помощью composer с помощью следующей команды

composer require  "campaignmonitor/createsend-php" "6.0.0"

Он использует самый простой способ, то есть автоматически загружает каждый класс. мы определяем массив путей к классам, которые мы хотим загрузить в файле composer.json, и если вы видите файл vendor/campaignmonitor/createsend-php/composer.json в каталоге пакета

"autoload": {
    "classmap": [
        "csrest_administrators.php",
        "csrest_campaigns.php",
        "csrest_clients.php",
        "csrest_general.php",
        "csrest_events.php",
        "csrest_lists.php",
        "csrest_people.php",
        "csrest_segments.php",
        "csrest_subscribers.php",
        "csrest_templates.php",
        "csrest_transactional_classicemail.php",
        "csrest_transactional_smartemail.php",
        "csrest_transactional_timeline.php"

    ]
}

, поэтому вам не понадобится оператор include или require, вы можете напрямую вызвать любой класс, который вам нужен, например, добавив следующие строки внутри вашего action или view

$authorize_url = CS_REST_General::authorize_url(
    '1122',//'Client ID for your application',
    'http://example.com/redirect-page',//Redirect URI for your application,
    'ViewReports'//The permission level your application requires,
);
print_r($authorize_url);

печатает следующее

https://api.createsend.com/oauth?client_id=1122&redirect_uri=http%3A%2F%2Fexample.com%2Fredirect-page&scope=ViewReports

Для базы знаний, если вы хотите использовать сторонний код, который не использует автозагрузчик или psr4, вы можете просмотреть Yii учебник

...