Хочу обсудить что-нибудь умное

AmdY

Пью пиво
Команда форума
PHP:
public function setTableDefinition()
    {
        $this->setSubclasses(array(
                'User'  => array('type' => 1),
                'Bomzh' => array('type' => 2)
            )
        );
    }
class User extends Entity
{ }
class Bomzh extends Entity
{ public function getAddress() {}}
 

AmdY

Пью пиво
Команда форума
для User вернётся связанная запись Address, а для Bomzh - то что ты захочешь, хоть текст "адрес отсутствует", хоть запись из таблицы address общая для всех Bomzh.
кажется, мы всё же тебя недопонимаем
 

Krishna

Продался Java
Там должен возвращаться объект Address, а не текст. Потому что легаси код будет дёргать там соответствующие методы.
 

AmdY

Пью пиво
Команда форума
ну так никто не мешает, возвращай объект, но это уже к ORM не имеет отношение
PHP:
class Bomzh extends Entity 
{ public function getAddress() { return BomzhAddress();}}

class BomzhAddress Extends Address {
// здесь перегруженные методы
}
 

A1x

Новичок
Krishna
Тогда это N/A надо реализовывать в методах, работающих с Person.
не совсем понял, если можно пример

PHP:
class Address extends ORMObject {

    public function toString() {
        if ($this->isEmpty()) {
            return 'N/A';
        }
        ............
    }

    public function save() {
        if ($this->isEmpty()) {
            return;
        }
        parent::save();
    }

    .................
}
даже не вдаваясь в детали наследовать класс Person для такого случая кажется неправильным. Допустим Person кроме адреса может иметь еще работу. Тогда для безработного опять наследовать класс? А если это безработный бомж?
 

AmdY

Пью пиво
Команда форума
Krishna
это уже не объект ORM, а какой-то Mock получается
 

whirlwind

TDD infected, paranoid
Krishna Давай честно признаемся, что проблема скорее надумана. Нормальная рабочая ситуация. Не ошибается тот, кто ниче не делает.
 

AmdY

Пью пиво
Команда форума
так он и сам писал, что не думал, что обсуждать кто-то возьмётся. это скорее задачка из разряда тех, которую лучше не решать красиво.

самое поршивое, что в жизни попадаются примеры, когда в коде пытаются обрабатывать все такие ситуации и заставить код исполняться дальше. а не вылететь с исключением. тогда получается куча сложночитаемого кода
 
Сверху