api — Разрешение классов в разных файлах из одного файла ввода php с автоматическим заполнением (разработка пакета)

Я делаю пакет php и хочу, чтобы конечные пользователи использовали API, например:

$package = new Package($key)
$orders = $package->orders()->all();
$products = $package->products()->all();

Моя структура выглядит следующим образом:

src
├── Api
│   ├── ApiClient.php
│   ├── Orders.php
│   └── Products.php
└── Package.php

Package.php берет мой ключ в конструкторе и затем вызывает API для получения токена. Это сохраняется в защищенной переменной внутри объекта, и объект возвращается обратно со всей необходимой информацией, поэтому мне не нужно снова проходить аутентификацию в скрипте.

У меня вопрос, как я могу эффективно получить доступ к методам внутри Orders.php, Products.php из файла ввода с моим желаемым API?

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

public function orders() : Orders
{
return new Orders($this->token);
}

Я довольно часто вижу использование класса отражения и / или магических методов __call, однако они не обеспечивают какого-либо автозаполнения в среде IDE, которое мне действительно не нравится.

protected function getApiInstance($method)
{
$class = "\\My\\Namespace\\Api\\".ucwords($method);
if (class_exists($class) && ! (new ReflectionClass($class))->isAbstract()) {
return new $class($this->key);
}
}

Какие-нибудь советы о том, как этого добиться?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector