DevCraft Документации
Руководства

SDK (DcApi) v200.1.1

Как пользоваться DcApi из DevCraft Admin на том же PHP, что и сайт: новости, пользователи, плагины.

DcApi — код внутри того же PHP-процесса, что и DLE. Это не HTTP-клиент к /api/v2: Bearer и OAuth не нужны. Живёт в DevCraft Admin, не в пакете DLE API. Шпаргалка фасадов: справочник SDK. Сценарии по HTTP — в руководствах рядом.

С версии 200.1.1 SDK живёт в DevCraft Admin (devcraft/src/sdk/dle/), а не в пакете API. Поэтому DcApi доступен даже без установленного DLE API — достаточно DevCraft Admin ≥ 200.4.1. Подробности: Слои данных Admin.

Когда SDK, а когда HTTP

СитуацияЧто брать
Модуль / плагин / хук на этом сайтеSDK
Мобилка, другой сервер, PostmanHTTP /api/v2endpoints

Подключение

Ничего подключать не нужно: devcraft/init.php поднимает SDK сам. Если код выполняется до инициализации Admin:

require_once DLEPlugins::Check(ROOT_DIR . '/devcraft/init.php');

Прежний файл api/sdk/bootstrap.php удалён вместе со вставками в engine/init.php. Старые вставки безопасны: они обёрнуты в if (is_file(...)).

Классы SDK переехали из DleApi\{Schema,Fluent,Xfield,Sdk} в DevCraft\Dle\.... Старые имена продолжают работать через алиасы классов, но уйдут в следующем мажоре. Фасад DcApi не изменился.

Новость

То же, что создание новости по HTTP:

DcApi::news()
	->withTitle('Заголовок')
	->withCategory([1, 2])
	->withExtras('allow_rate', 1)
	->withXfield('foo', 'bar')
	->create();

Поиск: posts-searchDcApi::query('post')->where('approve', 1)->fetchAll().

Доп. поля каталога: xfields-newsDcApi::xfield(…) / DcApi::modifyXfield('post').

Пользователь

DcApi::user()
	->withName('newuser')
	->withEmail('[email protected]')
	->create();

HTTP: users-create, users-search.

Плагин

DcApi::plugin()
	->withName('My Plugin')
	->withVersion('1.0.0')
	->withFiles([
		[
			'file'        => 'engine/modules/example.php',
			'action'      => 'replace',
			'searchcode'  => 'старое',
			'replacecode' => 'новое',
		],
	])
	->create();

HTTP: plugins-create.

Универсально

DcApi::schema('banners')->with('approve', 1)->create();
DcApi::query('users')->where('user_group', 4)->fetchAll();

См. также

На этой странице