другой разработчик и я находимся в процессе создания сайта, мы внедрили нашу собственную модель ООП, о которой мы много обсуждали, но, похоже, я столкнулся с кирпичной стеной. Пожалуйста, потерпите меня
Все наши классы расширяют Object, который имеет конструктор, который использует get_called_class()
для получения класса, а затем get_class_vars () и т. Д. Для загрузки имен столбцов, что означаету нас может быть save
, delete
, displayExisting
, getAll
и несколько других методов в классе по умолчанию, что устраняет большое количество кода.Это хорошо.Теперь у меня есть класс InboundData
, у него есть 3 расширяемых класса, называемых Visit
, Enquiry
и BrochureRequest
, у них есть «inbound_data_id», тогда InboundData имеет перегруженный конструктор, выглядящий примерно так:
function __construct($id = '')
{
$this->className = get_called_class();
$this->id = (int)$id;
$this->tableName = strtolower($this->className);
$this->setDbFields();
$this->loadData();
$this->contact = new Contact($this->contact_id);
$this->address = new Address($this->address_id);
$this->domain = new Domain($this->domain_id);
$this->park = new Park($this->park_id);
}
Проблема в том, что contact
, address
, domain
и park
все защищены, чтобы не дать методам Object выбрать их в качестве имен столбцов / классов.,Мы применили эту методологию ко всем членам, не относящимся к db, например:
protected $contact;
protected $address;
protected $domain;
protected $park;
Мы не сталкивались с какими-либо проблемами. До написания кода внешнего интерфейса я обнаружил, что, очевидно, не могузаполните $formObj->contact->var
и т. д., не говоря уже о том, что я не написал никакого кода сохранения для расширенных объектов входящих данных, который должен был бы сохранить все прикрепленные таблицы.
Пожалуйста, мог бы гуру ООП сообщить нам, гдемы ошиблись, и каким будет лучший способ добиться этого.Не стесняйтесь задавать любые вопросы, я знаю, что это звучит довольно странно.