Перейти к содержанию
Форум поддержки пользователей VamShop

Проблема при создании модуля доставки с наследованием классов


Рекомендуемые сообщения

Добрый день! С прошедшими праздниками!

Столкнулся с проблемой при создании модуля доставки ,прошу помощи. У транспортной компании есть несколько типов доставки: курьерская ,курьерская с кассовым обслуживанием, самовывоз и самовывоз с кассовым обслуживанием. Реализовать решил через 4 отдельных модуля и общий функционал вынести в отдельный файл класса.

В итоге каждый модуль доставки начинается с конструкции

include_once(DIR_WS_CLASSES .'А.php'); // общий функционал для всех модулей доставки компании

class B1 extends A{  // модуль конкретного типа доставки компании
....
}

Модули конкретного типа доставки по образцу обычных модулей доставки (например, почты России). В режиме покупателя все работает без особых проблем. Все как положено.

Проблема  в админке,  когда открываешь список модулей доставки ,список отображается только до первого модуля этой компании. Дальше список обрывается (см. скриншот).

Отладчик показал ,что выполнение прерывается именно на 

class B1 extends A{

Если подставить код класса, вместо include, то в админке модуль появляется в списке, а страничкаcheckout.php перестает отображаться.

Подскажите, в чем проблема?

 

2016-01-08 13-49-42 Скриншот экрана.png

Ссылка на сообщение
Поделиться на другие сайты

Берите за основу существующий модуль и делайте на его основе свой модуль.

Просто include внутри модуля делайте и создавайте экземпляр класса типа $class = new class;

и уже затем работайте внутри своего модуля с $class

Обычно так делается, если нужно использовать сторонние классы.

Например в модуле оплаты paysera используется внешний класс /includes/modules/payment/paysera.php

Если у Вас не работает, значит ошибка в Вашем файле.

Возьмите за основу существующий модуль какой-то, уже готовый, и на его основе сделайте свой.

Ссылка на сообщение
Поделиться на другие сайты

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

Ссылка на сообщение
Поделиться на другие сайты

Раз не работает - понятное дело, что неправильно :)

Я ж Вам написал как обычно делается и даже ссылку на файл дал с рабочим примером.

Посмотрите, да сделайте по аналогии.

Ссылка на сообщение
Поделиться на другие сайты

Проблема была вот в этом

include_once(DIR_WS_CLASSES .'А.php')

Дело в том, что константа DIR_WS_CLASSES определена по разному в клиентской и админской части. А модуль работает и там и там.

Пришлось сделать так:

require_once(DIR_FS_DOCUMENT_ROOT . 'includes/classes/A.php');

 

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...