@inviziblll

Как правильно подключить свой класс через конструкцию use?

Cоздал два класса в директории /local/php_interface/lib/
DayorderTable - ORM обертка над таблицей
DayorderHelper - класс хелпер над ORM

подключил классы в init.php

Bitrix\Main\Loader::registerAutoLoadClasses(null, [
'DayorderTable' => '/local/php_interface/lib/DayorderTable.php',
'DayorderHelper' => '/local/php_interface/lib/DayorderHelper.php',
]);
Теперь оба класса видны из любого места проекта, я могу просто на странице сайта обратится к ORM классу DayorderTable и вызвать метод getList все работает как надо.

Но есть проблема, когда в файле DayorderHelper.php я хочу сделать видимым класс DayorderTable чтобы внутри методов хелпера обращаться к ORM то Битрикс ругается, пишет Class 'DayordersTable' not found

Я пробовал использовать конструкцию use DayordersTable но видимо это неправильно, нужно указать другое имя, не могу разобраться какое.

use Bitrix\Main;
use Bitrix\Main\Entity;
use Bitrix\Main\Type;
use DayordersTable; // здесь я думаю не правильно указано имя класса ORM с которым работает DayorderHelper в методе GetElement

// Содержит вспомогательные методы для работы с HlbookTable
class DayorderHelper {

    // получаем запись из ORM
    public static function GetElement($deliveryAddress) {
        return $element  = DayordersTable::getList(array(
            'select'  => array('*'), // имена полей, которые необходимо получить в результате
            'filter'  => array('DELIVERY_ADDRESS' => $deliveryAddress), // описание фильтра для WHERE и HAVING
            'limit'   => 1, // количество записей
        ))->fetch();
    }
}


Как правильно подключить свой класс через конструкцию use так чтобы он стал видимым в коде другого кастомного класса?
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
@PetrPo
// здесь я думаю не правильно указано имя класса ORM с которым работает DayorderHelper в методе GetElement

Правильно думаешь))
5f6c89996a4d8519558914.jpeg
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
rpsv
@rpsv
делай либо хорошо, либо никак
Так себе решение размещать классы в php_interface. Создайте отдельный модуль, подключайте его в init.php (если нужен модуль всегда) и все. Все классы подгрузятся автоматически в соответствии с именем класса.

Ну а про неправильное имя вам уже в комментах написали.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы